Kafka面试题 part-1

news/2024/11/8 23:44:30 标签: kafka, 分布式

一、kafka消息发送的流程?

发送原理:

在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取消息发送到 Kafka Broker。

 

0: 生产者发送的数据,不需要等数据落盘应答。

1:生产者发送过来的数据,Leader收到数据后应答。

-1:(all):生产者发送过来的数据,Leader 和 ISR 队列里面的所有节点收齐数据后应答。 -1 和 all 是等价的。

 

二、Kafka 的设计架构? 

Kafka 基础架构:

ISR:In-Sync Replicas isr 是一个副本的列表,里面存储的都是能跟leader 数据一致的副本 

1)Producer:消息生产者,就是向 Kafka broker 发消息的客户端。

2)Consumer:消息消费者,向 Kafka broker 取消息的客户端。

3)Consumer Group(CG):消费者组,由多个 consumer 组成。消费者组内每个消 费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

4)Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。

5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic

6)Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。

7)Replica:副本。一个 topic 的每个分区都有若干个副本,一个 Leader 和若干个 Follower

8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。

9)Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

 

三、Kafka 分区的目的? 

(1)便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。

(2)提高并行度,生产者可以以分区为单位发送数据;消费者可以以分区为单位进行消费数据。

 

四、Kafka 是如何做到消息的有序性? 

生产经验——数据有序

生产者发送的数据,单分区内可以做到有序,多分区,无法保证,除非把多个分区的数据拉到消费者端,进行排序,但这样做需要等,效率很低,还不如直接设置一个分区。 

生产经验——数据乱序 

 

1)kafka在1.x版本之前保证数据单分区有序,条件如下:

max.in.flight.requests.per.connection=1(不需要考虑是否开启幂等性)。

2)kafka在1.x及以后版本保证数据单分区有序,条件如下:

(2)开启幂等性

max.in.flight.requests.per.connection需要设置小于等于5

(1)未开启幂等性

max.in.flight.requests.per.connection需要设置为1

原因说明:因为在kafka1.x以后,启用幂等后,kafka服务端会缓存producer发来的最近5个request的元数据, 故无论如何,都可以保证最近5个request的数据都是有序的。

 

出现乱序的原因:

1)生产者在发送3请求的时候,发生异常,发生异常需要重新发送,所以排在了后面,在进行落盘的时候,先落盘1,2 ,落盘3的时候发现是4,需要等,等到3出现为止,然后将 3,4 ,5排序,排序后再进行落盘。

顺序错乱了,会自动排序(开启幂等性)。

 五、ISR、OSR、AR 是什么?

1. AR(Assigned Replica,分配的副本)

AR 是指被分配给分区的副本集合。在 Kafka 中,每个分区都有一个 AR 集合,其中包含了分区的所有副本。AR 是在 Kafka 控制器节点进行计算和管理的,它决定了每个分区的副本分配策略和副本的分布情况。

主要作用:

  • 副本分配: AR 确定了每个分区的副本分配策略,包括副本的数量、分布和位置等。AR 决定了哪些节点上有分区的副本,以及每个节点上分配了多少个副本。
  • 负载均衡: AR 通过动态调整副本的分布,实现了集群的负载均衡。通过在不同节点上分配副本,AR 可以避免某些节点的负载过重,提高了系统的整体性能和稳定性。

2. ISR(In-Sync Replica,同步副本)

ISR 是指与 Leader 副本保持数据同步的副本集合。在 Kafka 中,每个分区都有一个 ISR 集合,其中包含了与 Leader 副本保持数据同步的所有副本。ISR 是动态调整的,根据副本的同步状态和延迟情况而变化。

主要作用:

  • 数据同步: ISR 确保了分区的所有副本与 Leader 副本保持数据同步。当消息被 Leader 副本确认接收后,ISR 中的副本也会逐渐复制消息,确保所有副本之间的数据一致性。
  • 高可用性: ISR 中的副本可以快速接管分区的读写请求,提高了分区的高可用性。当 Leader 副本发生故障时,ISR 中的副本可以立即接管分区的服务,而无需等待数据复制完成。

3. OSR(Out-of-Sync Replica,不同步副本) 

OSR 是指与 Leader 副本不保持数据同步的副本集合。在 Kafka 中,每个分区都有一个 OSR 集合,其中包含了与 Leader 副本数据不同步的副本。OSR 的存在是正常的,可能由于网络延迟、副本故障或其他原因导致副本与 Leader 副本之间的数据同步出现滞后。

主要作用:

  • 故障检测: OSR 中的副本可能由于故障或其他原因导致与 Leader 副本的数据不同步。监控 OSR 中的副本状态可以帮助及时检测和处理副本的故障或异常情况。
  • 动态调整: OSR 中的副本可以通过数据同步和复制来重新加入到 ISR 中,从而提高分区的可用性和性能。Kafka 控制器会根据副本的同步状态和延迟情况动态调整 ISR 和 OSR 的成员。

 


http://www.niftyadmin.cn/n/5744568.html

相关文章

stm32使用串口DMA实现数据的收发

前言 DMA的作用就是帮助CPU来传输数据,从而使CPU去完成更重要的任务,不浪费CPU的时间。 一、配置stm32cubeMX 这两个全添加上。参数配置一般默认即可 代码部分 只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2); 全都改为HAL_UART_Tra…

【宝藏】浏览器端的模块化问题(1)

接下来我们一起进入webpack的课程学习中,本课程的特点在于: 合适的深度:webpack 使用层面相对简单,但其原理层面非常复杂。合适的广度:webpack 生态圈极其繁荣,有海量的第三方库可以融入到 webpack 中。 …

ubuntu离线部署ollama

一、ollama部署 1、ollama官网安装教程,可以参考这个进行部署,下载对应版本 以intel为例下载安装包 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz2、运行安装…

【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:WebStorm 目录 问题概述 原因 解决方案 解决方法 潜在问题修改 最终效果呈现 额外内容 管理员界面路由配置 WebStorm背景更换 法一: 法二: 问题概…

esp32学习:利用虫洞ESP32开发板,快速实现无线图传

我们的虫洞开发板,能够完美运行esp who AI代码,所以实现无线图传那是非常容易的,我们先看看examples目录: 里面有比较多的web例程,在这些例程下,稍作修改,就可以快速实现我的图传无线功能&#…

【动态规划-划分型 DP】力扣2369. 检查数组是否存在有效划分

给你一个下标从 0 开始的整数数组 nums ,你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 ,则可以称其为数组的一种 有效 划分: 子数组 恰 由 2 个相等元素组成,例如,…

[产品管理-58]:安索夫矩阵矩阵帮助创业者确定研发出来的产品在市场中定位策略

目录 一、提出背景 二、核心思想与结构 三、应用背景与领域 四、实践案例 安索夫矩阵(Ansoff Matrix),也被称为产品/市场方格或成长矢量矩阵,其应用背景可以从以下几个方面进行详细阐述: 一、提出背景 安索夫矩阵…

大数据Informatica面试题及参考答案

目录 什么是 Informatica?它主要解决什么问题? 什么是 Informatica PowerCenter? Informatica PowerCenter 的主要组成部分有哪些? 解释 Informatica PowerCenter 的主要组件。 Informatica PowerCenter 与 DataStage 有何区别? 解释 Informatica 中的源 (Source) 和…