Kafka 学习kafka 选举机制
Posted 思想累积
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka 学习kafka 选举机制相关的知识,希望对你有一定的参考价值。
1、分区副本选举机制
1.1 副本机制:
在 kafka 中,每个主题可以有多个分区,每个分区可以有多个副本,副本中只有一个是 leader 并对外提供服务,其他都是 follower 副本
多个 follower 副本通常存在和 leader 副本不同的 broker 中,通过这样的机制实现了高可用
所有读写请求都是由 leader 进行处理,follower 副本功能就是从 leader 拉取消息,使内容保持一致
1.2 为什么使用副本
-
当主节点 leader 挂掉,不是直接从 follower 中选择主节点,而是从 ISR 加入同步队列的副本中选择
-
producer push 推送数据给 leader
-
follower 从 leader pull 拉取数据
-
follower 隔一定时间从 leader 拉取数据,保证数据同步
-
1.3 关键词:
- AR:Assigned Replicas 用来标识副本的全集
- OSR:out-sync Replicas 离开同步队列的副本
- ISR:in-sync Replicas 加入同步队列的副本
- ISR = Leader + 没有落后太多的 follower 副本; AR = OSR + ISR
1.4 ISR 副本集合保存副本条件:
- leader 与 follower 数据相差超过 4000 条
replica.lag.max.message = 4000
- 超过 3 秒
未同步数据
,拉取速度慢于 leader 副本写入速度replica.lag.time.max.ms = 3000
- 如果 follower 速度提升上来之后,可能会重新加入 ISR 副本集合中
1.5 ISR 实现 leader 选举
- zookeeper 的 leader 节点挂掉时,会通过 ZXID 或者 myid 选举出新的 leader
- kafka 会将与 leader 副本保持同步的副本放到 ISR 集合中,leader 挂掉时,如果 ISR 副本中除了 leader 还有其它的副本,会选取最新的副本成为 leader
- 如果 ISR 副本中没有其它副本存在的话,如果设置了
unclean.leader.election.enable = true
,kafka 将会从非 ISR 副本集合中的副本中,选出副本成为 leader
2、Broker 选举机制
一个 kafka 集群中,有多个 broker 节点,broker 中存在一个 leader,其它 broker 作为 follower,broker 选举依赖 zookeeper 实现
2.1 kafka 集群 leader 选举
- 第一个启动的 broker 会在 zookeeper 中创建临时的
controller
节点 - 其它 broker 启动时会尝试创建
controller
节点,如果已存在该节点,在 zookeeper 中创建 watch 对象,接收控制器变更的通知 - 如果 broker 中的 leader 节点挂掉,其它 broker 通过 watch 收到
controller
变更的通知,尝试创建临时节点controller
,一个创建成功,其它继续 watch
以上是关于Kafka 学习kafka 选举机制的主要内容,如果未能解决你的问题,请参考以下文章
Kaka与Zookeeper的爱恨情仇(——zookeeper过半选举机制)
Kafka3.x核心速查手册三服务端原理篇-2Broker选举机制
Kafka3.x核心速查手册三服务端原理篇-2Broker选举机制