6.5 Kafka集群之Leader选举

本文介绍了Kafka在选举Broker领导者时为什么不采用多数投票方式,主要原因是避免数据不全的Broker当选,并减少选举耗时。Kafka通过Zookeeper进行watch机制实现Controller选举。Partition的领导选举由Controller决定,通过调整isr集合并应用特定算法选择分区的leader。整个过程确保了集群的高效稳定运行。
摘要由CSDN通过智能技术生成

1.Broker选举
(1).不采用多数投票方式选举的原因
kafka并没有采用多数投票来选举leader的(redis和es采用的是多数投票方式来进行选举的),原因有两个,一是防止选举时选举到了数据不全的broker,二是当选举没有通过一轮产生时,需要额外的第二轮、第三轮甚至更多的轮次,比较耗时间。

(2).watch
由于kafka集群依赖zookeeper集群,所以最简单的方案是所有follower都在zookeeper上设置一个watch。第一个启动的broker会在zookeeper中创建临时的controller节点,其它broker启动时会尝试创建controller节点,如果已存在该节点,在zookeeper中创建watch对象,接收控制器变更的通知。如果broker中的leader节点挂掉,其它broker通过watch收到controller变更的通知,尝试创建临时节点controller,一个创建成功,其它继续watch。

2.Partition选举
所有partition的leader选举都由controller决定。controller会将leader的改变直接通过rpc的方式通知需为此作为响应的broker。partition的选举过程主要为从zookeeper中读取当前分区的所有isr集合,调用配置的分区选择算法选择分区的leader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值