zookeeper选举原理

作者: 蓝梅 | 来源:发表于2021-08-01 00:22 被阅读0次

    一、选举流程

    通过看了源码,了解到,zookeeper为了提升并发性能,使用了多级队列架构,提高了服务的并发;大概原理如下图: 多级队列

    二、处理选票核心逻辑

    选票核心参数:
    id:推荐机器的id
    zxid:事务id
    Epoch选举周期;
    开始选举时,选举周期加一,每个机器,都会投自己机器的选票,则id为档期机器的id,myid,事务id为当前机器最大事务号,获取当前选举周期;
    获取到选票后,比较选票的逻辑:
    1.先判断选举周期,如果获取到的选举周期大于当前机器的选举周期,则,获取到的选票直接胜出,并且修改当前周期为选票中的周期;
    2.如果周期相等,再比较事务id,事务id大的机器胜出,并且修改当选的选票,且广播出去;
    3.获取到的选票比当前小,则打印警告日志,直接忽略
    每台机器会有一个选票桶,桶的结构,结构为Map<机器id,选票>,所以当有机器重复投票时,会覆盖原来的选票;
    当选票桶中,某台机器当选的选票数量超过了机器数量的一半,则该台机器被选举为leader,并且广播出去

    相关文章

      网友评论

        本文标题:zookeeper选举原理

        本文链接:https://www.haomeiwen.com/subject/fihamltx.html