• zookeeper的leader选举机制个人总结


      • 第一步:每个服务器都首先投自己,格式为<sid,zxid>;
      • 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自己之外的所有服务器的投票信息;
      • 第三步:自己跟其他服务器的投票信息作对比,然后每个服务器再次选出一个leader。对比规则如下:
        1)优先对比zxid,谁的zxid最高就投给谁(因为zxid越大,代表该服务器的数据越新,越全);
        2)如果zxid相同,则谁的sid大就投谁。
      • 最后:统计票数,被支持票数超过一半的服务器成为新的leader。
      • 举例如下:
        共有5台zookeeper服务器,分别为s1,s2,s3,s4,s5,对应的<sid,zxid>分别为s1<1,8> s2<2,8> s3<3,9> s4<4,9> s5<5,8>
        a.则第一轮投票,每个服务器都投自己;
        b.第二轮投票,每个服务器接受到的票数分别如下:
        s1:<1,8>,<2,8>,<3,9>,<4,9>,<5,8>,根据对比规则:zxid为9的先被推举为leader,则s3,s4被选;其次,zxid相同下,sid大者胜出,所以最终s4为leader;
        s2:<2,8>,<1,8>,<3,9>,<4,9>,<5,8>,同理,s4被选为leader;
        s3:<3,9>,<1,8>,<2,8>,<4,9>,<5,8>,同理,s4被选为leader;
        到目前为止,已经有3个服务器,超过半数推举s4为leader,所以结束本次选举,最终leader为s4;
  • 相关阅读:
    mysql 表分区
    mysql 存储过程和函数
    mysql 主从复制
    nginx 生产中配置记录
    harbor资源管理垃圾回收
    harbor部署
    docker使用nfs 做跨主机存储
    基于Gluster分布式实现docker存储卷
    docker 部署elasticsearch集群
    记一次iptables配置(REJECT --reject-with icmp-host-prohibited)
  • 原文地址:https://www.cnblogs.com/toby510/p/zookeeper-leader-selection.html
Copyright © 2020-2023  润新知