Kafka问题

1.Kafka 中的 ISR(InSyncRepli)、OSR(OutSyncRepli)、AR(AllRepli)代表什么?

  • ISR: 和 leader 保持同步的 follower 集合。当 ISR 中的 follower 完成数据的同步之后,leader 就会给 follower 发送 ack。如果 follower 长时间未向 leader 同步数据,则该 follower 将被踢出 ISR。Leader 发生故障之后,就会从 ISR 中选举新的 leader。
  • 分区中的所有副本统称为AR(Assigned Replicas)。
  • 所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。
  • 与leader副本同步滞后过多的副本(不包括leader副本)组成OSR(Out-of-Sync Replicas)

2.Kafka 中的 HW、LEO 等分别代表什么?

  • HW是High Watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。
  • LEO是Log End Offset的缩写,它标识当前日志文件中下一条待写入消息的offset,图中offset为9的位置即为当前日志文件的LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息

3.Kafka 中是怎么体现消息顺序性的?

Kafka只能保证分区内消息顺序有序,无法保证全局有序
生产者:通过分区的leader副本负责数据顺序写入,来保证消息顺序性
消费者:同一个分区内的消息只能被一个group里的一个消费者消费,保证分区内消费有序

4.Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?

整个kafka生产者客户端由两条线程协调运行。这两条线程分别为主线程和sender线程(发送线程)
主线程的作用就是:由KafkaProducer创建消息,然后通过可能的拦截器-》序列化器-》分区器的作用之后缓存到消息累加器
send线程的作用就是:负责将消息累加器中的消息发送到kafka中。
生产者拦截器可以用来在消息发送前做一些准备工作,比如按照某个规则过滤不符合要求的消息,修改消息的内容等,也可以用来在发送回调逻辑前做一些定制化的需求。
生产者需要用序列化器将对象转换成字节数组才能通过网络发送给kafka.当然消费者需要用对应的反序列化器将kafka的字节数组转换为相应的对象。


消息发送流程

5.Kafka 生产者客户端的整体结构是什么样子的?使用了几个线程来处理?分别是什么?

整个kafka生产者客户端由两条线程协调运行。这两条线程分别为主线程和sender线程(发送线程)
主线程的作用就是:由KafkaProducer创建消息,然后通过可能的拦截器-》序列化器-》分区器的作用之后缓存到消息累加器
send线程的作用就是:负责将消息累加器中的消息发送到kafka中。

6.“消费组中的消费者个数如果超过 topic 的分区,那么就会有消费者消费不到数据”这句话是否正确?

正确。一个分区只能被一个消费者消费

7.消费者提交消费位移时提交的是当前消费到的最新消息的 offset 还是 offset+1?

offset+1,文件也是这样命名的

8.有哪些情形会造成重复消费?

1)从生产者端:
ack 设置为 -1 ,Leader收到数据follower同步数据后 ,brocker准备返回ack的时候挂掉了,新选出的Leader则会出现重复发送的情况
2)从消费者端:
先消费后提交,消费完成以后offset没有提交成功,下次消费时则会导致重复

9.那些情景会造成消息漏消费?

1)从生产者端:ack 设置为 0和1
2)从消费者端:先提交后消费时,提交后挂掉
先提交 offset 后消费,有可能造成数据的漏消费;而先消费后提交 offset,有可能会造成数据的重复消费。

10.当你使用 kafka-topics.sh 创建(删除)了一个 topic 之后,Kafka 背后会执行什么逻辑?

1)会在 zookeeper 中的/brokers/topics 节点下创建一个新的 topic 节点,如:
/brokers/topics/first
2)触发 Controller 的监听程序
3)kafka Controller 负责 topic 的创建工作,并更新 metadata cache

11.topic 的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?

可以,重分区。reblance

12.topic 的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?

不可以,分区里面的数据不好处理

13.Kafka 有内部的 topic 吗?如果有是什么?有什么所用?

consumer 默认将 offset 保存在 Kafka 一个内置的 topic 中,该 topic 为__consumer_offsets

14.Kafka 分区分配的概念?

kafka的分区分配策略:RangeAssignor(默认),RoundRobinAssignor,StickyAssignor

15.简述 Kafka 的日志目录结构?

一个Topic有多个partition,一个partition对应一个目录,目录命名 ,topic-分区id。
下面分多个segment目录,命名是以topic名称和开始消息的偏移量来命名的,目录主要有两类文件log和index文件。

16.如果我指定了一个 offset,Kafka Controller 怎么查找到对应的消息?

通过 offset找到对应的segment目录,目录下找到index文件,再去log文件中获取消息

17.聊一聊 Kafka Controller 的作用?

负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 leader 选举等工作。 Controller 的管理工作都是依赖于 Zookeeper 的。

18.Kafka 中有那些地方需要选举?这些地方的选举策略又有哪些?

  • KafkaController选举的时候,先到先得
  • 分区的副本选Leader的时候,从ISR中获取

19.失效副本是指什么?有那些应对措施?

踢出ISR的那些OSR。从HW截断,然后同步Leader

20.Kafka 的哪些设计让它有如此高的性能?

分区存储,顺序读写,零拷贝
1)partition顺序读写,充分利用磁盘特性,这是基础;
2)Producer生产的数据持久化到broker,采用mmap文件映射,实现顺序的快速写入;
3)Customer从broker读取数据,采用sendfile,将磁盘文件读到OS内核缓冲区后,直接转到socket buffer进行网络发送。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容