kafka中leader挂掉后重新选举leader过程简介

新leader的选举是由controller来监控管理。
当旧leader挂掉后,controller在zk中的监视器将消息发送给controller,controller开始执行新leader的选举工作。
1.首先确认挂掉的节点上有哪些分区,然后到相应的路径中获得分区所对应的已经同步的副本分区(ISR),在controller监控下,多个已经同步的副本分区同时竞争leader。竞争过程:原先的leader节点挂掉后在zk中被注销了,其他follow同时在zk中重新创建该节点,谁先成功了创建了,谁就是leader。当然大伙儿疑惑了,如果多个follow都创建成功呢?不存在的,zk只认一个作为创建成功的节点。这样的优点是新leader的数据和挂掉的分区数据一致,不存在丢失。
(实际过程可看成为
kafka集群刚启动时leader的选举也是类似机制。)
2-1.如果已经同步副本分区中没有相应的分区,可以等待一定时间,等待分区复活。
2-2.如果已经同步副本分区中没有相应的分区,也可以不等待,退而求其次,在ISR外,在存活的副本分区中找一个作为新leader。由于存活的副本分区不属于已经同步副本分区,所以数据和原先的leader相比有缺失。
3.如果ISR和非同步分区数据副本分区都挂了,那么将新leader设置为-1.

参考:leader的选举:https://www.jianshu.com/p/c987b5e055b0

猜你喜欢

转载自blog.csdn.net/qq_24699905/article/details/85708251