【Kafka 面试题】分布式通讯之Kafka面试题汇总(基础+进阶+高阶)-01

【Kafka 面试题】分布式通讯之Kafka面试题汇总

  • 1. Kafka 的用途有哪些?使用场景如何?
    • 1.1 用途
    • 1.2 使用场景
  • 2. Kafka 中的 ISR、AR 又代表什么?ISR 的伸缩又指什么?
    • 2.1 ISR (In-Sync Replicas)
    • 2.2 AR (Assigned Replicas)
    • 2.3 ISR的伸缩
  • 3.如何设置kafka的分区和副本数量
    • 3.1 分区数量
    • 3.2 副本数
    • 3.3 综合考虑
  • 4. .Kafka 中的 HW、LEO、LSO、LW 等分别代表什么?

1. Kafka 的用途有哪些?使用场景如何?

1.1 用途

首先Kafka是一个分布式的基于发布/订阅模式的消息队列。而经过不断地迭代升级,Kafka将自己打造成了一个开源的分布式事件流平台

Kafka的应用包括消息队列、日志收集、实时流数据处理、事件溯源、指标收集和监控等。①当用作消息队列时:Kafka 可以用作高吞吐量、低延迟的消息队列系统,支持发布/订阅消息模型,适合需要处理大量实时数据的应用程序。②当作为日志收集应用:Kafka 能够高效地收集、存储和处理日志数据,是分布式日志系统的理想选择。③当应用为实时流数据处理(Real-Time Stream Processing):与流处理框架(如 Apache Storm、Apache Spark、Flink)结合使用,Kafka 可以实时处理流数据,实现实时数据分析和决策。④当使用Kafka进行事件溯源时:Kafka 记录所有事件,支持事件溯源模式,帮助系统恢复状态和追踪历史操作。⑤当用作指标收集和监控时:Kafka 可以收集和传输各种指标数据,用于系统监控和报警。⑥当用做数据集成时:作为数据总线,Kafka 可以在多个数据源之间进行数据集成,帮助企业构建统一的数据平台。

1.2 使用场景

①日志和监控系统: 收集应用程序和系统的日志数据,并通过 Kafka 将其传输到集中式的日志处理和分析系统,如 ELK(Elasticsearch、Logstash、Kibana)栈。实时监控系统指标,通过 Kafka 将监控数据发送到监控平台,如 Prometheus 和 Grafana。

②金融交易系统: 在股票、期货等金融交易系统中,Kafka 用于实时处理交易数据,确保数据的高吞吐量和低延迟。

③电商和在线服务: 在电商平台中,Kafka 用于实时处理用户行为数据、订单数据和库存数据,支持推荐系统和个性化服务。在线服务(如社交媒体、内容推荐)中,Kafka 用于处理用户互动数据,支持实时分析和个性化推荐。

④物联网: 在物联网应用中,Kafka 可以收集和处理来自各种传感器和设备的海量数据,支持实时数据分析和决策。以及实现设备状态监控和故障预警,通过 Kafka 将设备数据传输到监控系统进行分析。

⑤大数据平台: Kafka 与大数据处理框架(如 Hadoop、Spark)集成,用于数据的实时传输和处理,帮助构建大数据分析平台。在数据湖中,Kafka 用于将实时数据流传输到数据湖,实现数据的集中存储和管理。

2. Kafka 中的 ISR、AR 又代表什么?ISR 的伸缩又指什么?

在Kafka中,ISR和AR是两个关键概念,它们与数据的复制和可用性密切相关。

2.1 ISR (In-Sync Replicas)

ISR代表同步副本集合(In-Sync Replicas),是一个分区(Partition)中所有与Leader副本保持同步的副本集合。ISR中的副本都是最新的,并且它们的数据与Leader副本一致。只有在ISR中的副本才能被选为新的Leader。

  • 同步:指的是副本从Leader中获取并确认最新的消息。
  • 可靠性:ISR的存在保证了即使Leader副本失效,也可以从ISR中选择一个副本作为新的Leader,确保数据的高可用性。

2.2 AR (Assigned Replicas)

AR代表分配副本集合(Assigned Replicas)是一个分区中所有被分配的副本集合,包括Leader和Follower副本。AR中的副本可能不完全是同步的。

成员:AR包括所有被分配给该分区的副本,不论它们是否与Leader同步。

2.3 ISR的伸缩

ISR的伸缩是指在运行时ISR集合的动态变化。当Follower副本变得落后于Leader副本(未能在规定的时间内从Leader获取最新的数据)时,它将被从ISR中移除。一旦该副本赶上了Leader,它会重新加入ISR。

伸缩的场景:

  1. 加入ISR:
    当一个Follower副本从Leader副本拉取并确认了最新的消息,且延迟在可接受范围内时,它会被加入ISR。
  2. 移出ISR:
    当一个Follower副本长时间未能从Leader副本拉取最新的消息,或者出现故障导致与Leader失去联系,它会被移出ISR。

ISR的动态变化有助于维持Kafka集群的高可用性和数据一致性。通过维护一个实时同步的副本集合,即使Leader副本失效,也能快速从ISR中选择新的Leader,减少服务中断的时间。

总结

  • ISR(In-Sync Replicas) 是一个分区中与Leader副本保持同步的副本集合,保证数据的一致性和可用性。
  • AR(Assigned Replicas) 是一个分区中所有被分配的副本集合,不论它们是否与Leader同步。
  • ISR的伸缩指的是ISR集合的动态变化,包括副本因未能及时同步而被移出ISR,或者副本同步后重新加入ISR的过程。

3.如何设置kafka的分区和副本数量

3.1 分区数量

  1. 吞吐量需求:分区数越多,Kafka的吞吐量越高,因为每个分区都可以在不同的Broker上独立地进行读写操作。一般建议每个Broker至少有几个分区来充分利用资源。
  2. 并行处理:分区数决定了消费者的并行度。如果有多个消费者组同时消费一个Topic的数据,那么分区数应该大于或等于消费者组的总数。
  3. 负载均衡:分区数应该是Broker数量的倍数,以便于均衡地分配负载。例如,如果有3个Broker,可以考虑设置6、9或12个分区。

3.2 副本数

  1. 数据持久性:副本数越多,数据的持久性和可用性越高。一般建议至少设置3个副本,这样即使一个Broker宕机,数据也不会丢失。
  2. 硬件资源:副本数增加会占用更多的磁盘空间和网络带宽。如果资源有限,可以根据实际情况调整,但不建议少于2个副本。

3.3 综合考虑

  • 吞吐量需求高,且资源充足:分区数可以设置为Broker数量的2到3倍,副本数设置为3。
  • 吞吐量需求中等:分区数设置为Broker数量的1到2倍,副本数设置为2到3。
  • 吞吐量需求低:分区数可以和Broker数量相等,副本数设置为2。

4. .Kafka 中的 HW、LEO、LSO、LW 等分别代表什么?

// TODO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湘潭大学信息与网络安全考试总结

文章目录 题型内容(试题回忆版)填空单选多选简答大题 我的感受 题型 填空 20分,一空一分 单选 有几个,两分一个 多选 也有几个,两分一个,不确定的题建议当单选做 简答题 6 分一个,有几个 大题 …

Java中线程池的创建方式有几种?

在Java中,线程池是一种用于管理多个线程的机制,旨在提高性能并简化多线程编程。Java提供了多种方式来创建和管理线程池,主要通过java.util.concurrent包中的ExecutorService接口和Executors类来实现。以下是几种常见的线程池创建方式&#xf…

宝塔面板部署前端项目

部署前端项目 1 打包自己的项目2 登录宝塔面板3 添加站点4 设置域名5 进入当前站点对应的文件目录中6 上传打包后的文件7 访问网站 1 打包自己的项目 2 登录宝塔面板 点击左侧“网站”菜单进入对应页面 点击“添加站点” 3 添加站点 填写域名,如果没有域名的&am…

集成openfeign

集成feign有两种方式. 1.集成到所需项目中(只有该项目可以用)直接引用所需调用的项目 2.集成到公共项目(通用) 1.集成到所需项目中(只有该项目可以用) 再需要消费的服务 进行依赖的引用 1.引入依赖,openfeign,和所需调用的服务 <!--feign--><dependency><gro…

超详细!ArcGIS常用功能快捷键汇总,提高你的工作效率

以下列出了一些在 ArcMap 中可用的键盘快捷键&#xff0c;其中许多也可以应用在 ArcGlobe 和 ArcScene 中。另外&#xff0c;在 ArcMap 中编辑和处理表时&#xff0c;还存在一些可用的键盘快捷键。 您也可以为某个命令指定自己的快捷键。 在 ArcMap 中执行操作时&#xff0c;…

代码随想录算法训练营day65 | 99. 岛屿数量 深搜、99. 岛屿数量 广搜、100. 岛屿的最大面积

本次题目都是卡码网上的 99. 岛屿数量 深搜 dirs [(1, 0), (0, 1), (-1, 0), (0, -1)]def dfs(grid, visited, x, y):for i in range(4):nextx x dirs[i][0]nexty y dirs[i][1]# 越界了&#xff0c;直接跳过if nextx < 0 or nextx > len(grid) or nexty < 0 or…

FCM(Framework Compatibility Matrix)

FCM&#xff08;Framework Compatibility Matrix&#xff09;是Android Open Source Project&#xff08;AOSP&#xff09;中的一个关键组件&#xff0c;用于定义和描述Android框架与设备之间的兼容性关系。以下是关于FCM的详细回答&#xff1a; 定义和目的&#xff1a; FCM是…

【研究】AI大模型需要什么样的硬件?

关注AI大模型 x 硬件的两条思路 从22年11月OpenAI推出ChatGPT至今&#xff0c;我们看到Chatbot应用的能力不断增强&#xff0c;从最初的文字问答&#xff0c;迅速向具有自主记忆、推理、规划和执行的全自动能力的AI Agent发展。我们认为端侧智能是大模型发展的重要分支。建议投…

Open WebUI升级到最新版本

背景介绍 open-webui是一个用于构建Web用户界面的开源库&#xff0c;它仿照 ChatGPT 的图形化界面&#xff0c;可以非常方便的调试、调用本地大语言模型。 目前该开源库更新较为活跃&#xff0c;从3个月前的版本&#xff08;v0.1.108&#xff09;到截止到2024年6月中旬发布的…

牛皮!手写一个 RPC 框架

设计一个RPC&#xff08;远程过程调用&#xff09;框架是一个复杂的过程&#xff0c;涉及到网络通信、序列化与反序列化、服务发现、负载均衡、容错机制等多个方面。以下是设计RPC框架的一些基本步骤&#xff1a; 1. 需求分析&#xff1a; 确定RPC框架需要支持的特性&#xf…

软件测试:实验二 白盒测试技术

一、实验目的 掌握静态白盒测试的技术和原理。掌握逻辑覆盖测试的方法和原理。掌握基本路径测试的方法和原理。 二、实验要求 掌握静态白盒测试的技术和原理。按照实验题目要求&#xff0c;完成指定程序的白盒测试。 三、实验内容与步骤 1、逻辑覆盖测试。请编写测试用例指…

2024年春季学期《算法分析与设计》考前热身练习(历年真题)[纯C语言+思路]

A: 递归求解 题目描述 请使用递归编写一个程序求如下表达式的计算结果&#xff1a; S(1) 1/2 S(2) 1/2 1/6 S(3) 1/2 1/6 1/12 S(4) 1/2 1/6 1/12 1/20 ...... S(n) 1/2 1/6 1/12 1/20 1/30 ...... 输入n (1<n<1000)&#xff0c;输出表达式S(n)的值&…

Oracle CPU使用率过高问题处理

1.下载Process Explorer 2.打开Process Explorer&#xff0c;查看CPU使用情况最高的进程 3.双击该进程&#xff0c;查看详情 \ 4. 获取cpu使用最好的线程tid 5. 查询sql_id select sql_id from v$session where paddr in( select addr from v$process where spid in(1…

电脑开机后出现Aptio Setup Utility 处理方法

电脑开机后出现Aptio Setup Utility怎么处理 Aptio Setup Utility界面的原因&#xff1a; 这是由于 bios设置与真实的硬件情况不匹配硬盘故障找不到可启动的硬盘情况 我的问题是找不到可启动的硬盘情况 解决方式如下&#xff1a; 进入如下界面了&#xff0c;选择Boot选项…

通过语言模型奖励实现视频大型多模态模型的直接偏好优化

在人工智能领域&#xff0c;大模型&#xff08;LLM&#xff09;的泛化能力一直是研究的重点。最新的研究通过直接偏好优化&#xff08;DPO&#xff09;技术&#xff0c;显著提升了LLM在视频指令跟随等任务中的表现。然而&#xff0c;提供信息丰富的反馈以检测生成响应中的幻觉现…

自然语言处理课程论文:《Attention is all you need》复现与解读

目录 1.背景介绍 1.1 文献介绍 1.2 研究背景 1.3 知识概述 1.3.1 机器翻译 1.3.2 attention机制与self-attention机制 2.数据来源与处理 2.1 数据集描述 2.2 数据处理 3. 模型架构 ​​​​​​​3.1 Positional Embedding ​​​​​​​3.2 Multi-Head Attention ​​​​​…

Qt-Advanced-Docking-System示例程序

写了一些简单的示例程序&#xff0c;帮助我更好地使用和了解Qt-Advanced-Docking-System 1.写一个如图页面布局的程序 m_pDockMangernew ads::CDockManager(this);this->setCentralWidget(m_pDockManger);ads::CDockWidget* centerDockWidgetnew ads::CDockWidget("中…

通过 PHP 实现自动爬虫爬取,以及分析抓取的数据

近年来&#xff0c;随着互联网的发展&#xff0c;数据爬取成为许多企业和个人所关注和需要的问题。数据爬取是通过编程技术从互联网上自动抓取数据进行分析&#xff0c;以达到自身的目的。其中&#xff0c;php 是一种非常常用且具有优势的编程语言&#xff0c;下面我们将讨论如…

JetBrains WebStorm 2024 mac/win版:效率至上,编码无忧

JetBrains WebStorm 2024 是一款专为前端开发者和全栈工程师打造的高 级集成开发环境(IDE)。它提供了对JavaScript、TypeScript、HTML5、CSS等技术的全面支持&#xff0c;帮助开发者更高效地进行前端开发。 WebStorm 2023 mac/win版获取 WebStorm 2024 拥有强大的智能代码补全…

从一万英尺外看libevent(源码刨析)

从一万英尺外看libevent 温馨提示&#xff1a;阅读时间大概二十分钟 前言 Libevent是用于编写高速可移植非阻塞IO应用的库&#xff0c;其设计目标是&#xff1a; 可移植性&#xff1a;使用libevent编写的程序应该可以在libevent支持的所有平台上工作。即使没有好的方式进行非…