3. Kafka原理
3.1 Leader 和 Follower
在Kafka中,每个topic都可以配置多个分区以及多个副本。每个分区都有一个leader以及0个或者多个follower。在创建topic时,Kafka会将每个分区的leader均匀地分配在每个broker上。我们正常使用Kafka是感觉不到leader、follower的存在的。
但其实,所有的读写操作都是由leader处理的,而所有的follower都是复制leader的日志数据文件,如果leader出现故障时,follower就会选举为leader。
所以说
- Kafka中的leader负责读写操作,而follower只负责副本数据的同步。
- 如果leader出现故障,其他follower会被重新选举为leader
- follower像一个consumer一样,拉取leader对应分区的数据,并保存在日志数据文件中.
leader职责 读写数据
follower职责 同步数据、参与选举(leader crash之后,会选举一个follower重新成为分区的leader)
3.1.1 Kafka中的leader和follower 与zookeeper的区别
答:
-
zookeeper的leader负责读、写;follower可以读取,但不能写
-
Kafka的leader 负责读、写;follower不能读写数据,而是作为每个消费者消费的数据一致的。
-
Kafka的一个topic可以有多个分区,一样可以实现数据操作的负载均衡。
3.2 在kafka中ISR是什么?
在zk中会保存AR(Assigned Replicas)列表,其中包含了分区所有的副本,其中 AR = ISR+OSR
-
ISR(in sync replica):是kafka动态维护的一组同步副本,在ISR中有成员存活时,只有这个组的成员才可以成为leader,内部保存的为每次提交信息时必须同步的副本(acks = all时),每当leader挂掉时,在ISR集合中选举出一个follower作为leader提供服务,当ISR中的副本被认为坏掉的时候,会被踢出ISR,当重新跟上leader的消息数据时,重新进入ISR。可以理解为在follower集合中,有多少结点

本文深入探讨Kafka的Leader和Follower角色,以及ISR、Controller的工作机制。Kafka中,Leader处理读写操作,Follower仅同步数据。选举分区Leader时,ISR内的成员才有资格。KafkaController负责管理分区和副本状态,避免过度依赖Zookeeper。同时,文章还涵盖了Kafka数据复制的时机、处理副本不同步的情况以及生产者和消费者的数据交互流程。
最低0.47元/天 解锁文章
172万+

被折叠的 条评论
为什么被折叠?



