Zookeeper选举机制

Zookeeper选举机制
概念

SID:服务器ID。用来唯一标识一台Zookeeper集群中的机器,每台机器不能重复,和myid一致。

ZXID:事务ID。用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和Zookeeper服务器对于客户端”更新请求“的处理逻辑有关。

Epoch:每个Leader任期的代号。没有Leader时间同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加。

1. 集群第一次启动

假设Zookeeper集群有5个节点,其节点的myid依次分别为1,2,3,4,5

第一台Zookeeper启动,将自己的一票投给自己,由于自己的票数(1)没有大于集群节点的一半,则第一台Zookeeper进入Looking状态

第二台Zookeeper启动,将自己的一票投给自己,由于集群中有多台服务器,则第二台与其他的几台(第一台)进行交换选票,最后将所有选票投给myid最大的那台服务器(第二台),由于自己的票数(2)没有大于集群节点的一半,则第二台Zookeeper也进入Looking状态

第三台Zookeeper启动,将自己的一票投给自己,由于集群中有多台服务器,则第二台与其他的几台(第一台、第二台)进行交换选票,最后将所有选票投给myid最大的那台服务器(第三台),由于自己的票数(3)大于集群节点的一半,则第三台Zookeeper被选举为leader其余服务器置为follower

第四台Zookeeper启动,由于集群中已经存在leader,则自动置为follower

第五台Zookeeper启动,由于集群中已经存在leader,则自动置为follower

2. 集群非第一次启动

假设Zookeeper集群有5个节点,其节点的myid依次分别为1,2,3,4,5,作为leader的3和follower的5宕机了。则需要进行leader选举。

其中1、2、4的(Epoch,ZXID,SID)分别是

(1,8,1)(1,8,2)(1,7,4)

根据选举Leader规则:

  1. Epoch大的直接选举为leader
  2. Epoch相同,事务id大的选举为leader
  3. 事务id相同,服务器id大的选举为leader

选举 2 为leader

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值