Kafka - 09 Kafka副本 | Leader选举流程 | Follower故障 | Leader故障
创始人
2024-02-29 22:02:21
0

文章目录

    • 1. 副本基本信息
    • 2. Leader选举流程
    • 3. Follower故障
    • 4. Leader故障

1. 副本基本信息

1)Kafka 副本作用:提高数据可靠性。

2)Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上数据传输,降低效率。

3)Kafka 中副本分为:Leader 和 Follower。Kafka 生产者只会把数据发往 Leader,然后 Follower 找 Leader 进行同步数据。

4)Kafka 分区中的所有副本统称为 AR(Assigned Repllicas)。

  • AR = ISR + OSR
  • ISR,表示和 Leader 保持同步的 Follower 集合。如果 Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出 ISR。该时间阈值由 replica.lag.time.max.ms 参数设定,默认 30s。Leader 发生故障之后,就会从 ISR 中选举新的 Leader。
  • OSR,表示 Follower 与 Leader 副本同步时,延迟过多的副本。

2. Leader选举流程

Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker 上,一个 topic 可以分为多个 partition, 如 TopicA主题内有3个分区 partition0~partition2 分别分布在 broker0~broker2 上。

Replication:为保证集群中的某个节点发生故障时, 该节点上的 partition数据不丢失 , 且 kafka 仍然能够继续工作, kafka提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower,并且leader 和 follower 需要分布在不同的服务器上。

在这里插入图片描述

Kafka 集群中有一个 broker 的 Controller 会被选举为 Controller Leader,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 Leader 选举等工作。Controller 的信息同步工作是依赖于 Zookeeper 的。

选举流程:

① kafka每启动一个节点就会在zookeeper中注册一个节点信息,每一个broker节点都有对应的Controller,他们会争先抢占Controller的注册,谁先注册谁会被选举为 Controller Leader。

② 选举出来的 Controller 会监听 brokers 节点变化,决定 Leader 的选举,将节点信息上传到 zookeeper,其他Contorller 就会从 zookeeper 同步相关信息。

③ 假设 Broker1 中 Leader 挂了,Controller 就会监听到节点变化,然后获取到 ISR,选举新的 Leader(在 ISR 中存活为前提,按照 AR 中排在前面的优先),更新 Leader 及 ISR。

在这里插入图片描述

利用4台服务器 hadoop101、hadoop102、hadoop103、hadoop104 来验证以上整个流程 :

① 创建一个新的 topic,4 个分区,4 个副本:

[root@hadoop101 kafka_2.12-2.2.1]# bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --create --topic test3 --partitions 4 --replication-factor 4

② 查看 Leader 分布情况:

[root@hadoop101 kafka_2.12-2.2.1]# bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic test3
Topic: test3  PartitionCount:4  ReplicationFactor:4  Configs:segment.bytes=1073741824
Topic: test3    Partition: 0    Leader: 0       Replicas: 0,2,3,1       Isr: 0,2,3,1
Topic: test3    Partition: 1    Leader: 2       Replicas: 2,3,1,0       Isr: 2,3,1,0
Topic: test3    Partition: 2    Leader: 3       Replicas: 3,1,0,2       Isr: 3,1,0,2
Topic: test3    Partition: 3    Leader: 1       Replicas: 1,0,2,3       Isr: 1,0,2,3

③ 停止掉 hadoop103 的 kafka 进程,并查看 Leader 分区情况:

Partition为2的分区有4个副本,其中 Leader为3,假如 hadoop104 挂掉了,那么Partition为2 的Leader 就会重新选举,选举的规则为:在 ISR 中存活为前提,按照AR中排在前面的优先,即新的Leader将是1。

在这里插入图片描述

④ 停止掉 hadoop103 的 kafka 进程,并查看 Leader 分区情况:

Partition为1的分区有4个副本,其中 Leader为2,假如 hadoop103 挂掉了,那么Partition为2 的Leader 就会重新选举,选举的规则为:在 ISR 中存活为前提,按照AR中排在前面的优先,即新的Leader将是1。

在这里插入图片描述

⑤ 启动 hadoop104 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

⑥ 启动 hadoop104 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

⑦ 停止掉 hadoop102 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

可以看到选举是按照AR中的顺序轮询选举的,而不是ISR中的顺序。

3. Follower故障

LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的 offset + 1。

HW(High Watermark):所有副本中最小的LEO 。

在这里插入图片描述

Follower故障:

① Follower发生故障后会被临时踢出ISR

② 这个期间Leader和Follower继续接收数据

③ 待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步。

在这里插入图片描述

④ 等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。

在这里插入图片描述

4. Leader故障

LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的 offset + 1。

HW(High Watermark):所有副本中最小的LEO 。

在这里插入图片描述

Leader故障:

① Leader发生故障之后,会从ISR中选出一个新的Leader

② 为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。

在这里插入图片描述

注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。

相关内容

热门资讯

大学生毕业典礼的主持词 大学生毕业典礼的主持词(精选5篇)  活动对象的不同,主持词的写作风格也会大不一样。在当下的社会中,...
婚礼的主持词 婚礼的主持词  婚礼的主持词(精选21篇)  主持词的写作要突出活动的主旨并贯穿始终。随着社会一步步...
主婚人致辞 主婚人致辞(精选6篇)  在生活、工作和学习中,大家都写过致辞吧,致辞具有很强的实用性和针对性。还在...
促销活动主持词 促销活动主持词  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在现今人们越来越重视活动...
小品活动的主持词 小品活动的主持词  【篇一】  各位亲爱的老师,同学们,大家下午好!  欢迎来到天津师范大学新闻传播...
森林报好词好句 森林报好词好句  好词:  小巧玲珑 飞云流雾 红日西垂 霞光四射 层峦叠嶂 水天相接  轻歌曼舞 ...
早会主持稿 早会主持稿(精选5篇)  在现在社会,我们可以使用主持稿的机会越来越多,主持稿是主持人为节目进行过程...
优秀员工颁奖词 优秀员工颁奖词大全  在平时的学习、工作或生活中,大家都经常接触到颁奖词吧,颁奖词是在某一主题的颁奖...
女儿出阁司仪主持词 女儿出阁司仪主持词范文  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在当下的中国社...
歌颂祖国串词 歌颂祖国串词一。各位领导 各位来宾,大家晚上好。今天我们这里篷壁生辉,喜气洋溢,是因为有您们的光临,...
小学生庆元旦联欢会主持词 小学生庆元旦联欢会主持词范文(精选5篇)  主持词要注意活动对象,针对活动对象写相应的主持词。在现今...
新年升旗仪式致辞 新年升旗仪式致辞(精选14篇)  在现实生活或工作学习中,说到致辞,大家肯定都不陌生吧,致辞具有思路...
表演半台词 表演三句半台词  敲锣打鼓走圆场  1:锣鼓一响好心情,  2:我们漫游动画城;  3:表演一个三句...
毕业30周年同学聚会主持词 毕业30周年同学聚会主持词范文  老同学聚会,一桌饭菜,谈论着当年的同学情,好不快活呀,往日是多么的...
结训典礼主持词 结训典礼主持词范文  主持词是主持人在节目进行过程中用于串联节目的串联词。在当今中国社会,各种集会中...
集团董事长新年的经典致辞 集团董事长新年的经典致辞(通用13篇)  在平平淡淡的学习、工作、生活中,大家对致辞都不陌生吧,致辞...
郭德纲于谦相声《李菁表妹》台... 郭德纲于谦相声《李菁表妹》台词  郭德纲,1973年1月18日出生于天津,华语相声演员,电视、电影演...
教师节学生主持稿 教师节学生主持稿  教师“不仅仅是一份工作、一个职业,而是一项需要用一生的情感去拥抱的事业,更是一种...
主持词开场白夏天 主持词开场白夏天(精选5篇)  在现实社会中,很多情况下我们都需要用到开场白,独具匠心的开场白,才能...