zookeeper选举机制(半数选举+zxid)

zookeeper的选举机制
zookeeper是按照Paxos算法进行选举的,这个算法也称之为半数选举机制
所有节点都有投票权,当一个几点票数过半,这个节点就是leader
zookeeper机制规定,当有新的节点加入时,没有选举出leader时之前票数作废,重新投票。
leader产生后,其他节点投票给leader。
假如现在有3台zookeeper分别是zookeeper1,zookeeper2,3,4,5
(简称12345)排序是启动顺序不是本身的名字再说一遍是启动顺序,谁先来谁就是1
1启动投票给自己,票数不过半处于观望状态。
2启动投票给自己,2比1大,1投票给2,票数不过半处于观望状态。
3启动了,重新投票3比12大,1和2投票给3,3投票自己现在票数过半,3成为leader。
,4启动了,现在leader产生了,4投票给3。
5启动了,现在leader产生了,5投票给3。
半数选举机制只是针对于第一次选择leader的时候,如果leader宕机需要重新选举,这个时候就有可能发生变化了(并不是说不再遵循半数选举机制,而且会受到zxid的影响,依然遵循还是半数选举机制)
现在五台在运行,3号也就是leader宕机了,剩下四台继续选举4号为leader
但是4号出现网络波动了连接不上集群了,集群在选leader的时候就把4号给剔除,5号的zxid的低32位最小,5号就是leader。4号网络恢复时,leader已经产生。
Zxid为了保证事务的顺序一 致性zookeeper采用递增的事务id来辨识事务所有的提议都在被提出的时候加上了zxid, zxid是一个64位数字,前32位成为高三十位,是epoch用来标识1eader关系是否改变,每次一个1eader被选出来,都会有-个新的epoch (id增加),标志着是当前所有节点的leader,此时1eader的低三十位不变。
初始状态5台服务器的高低32位都一样的
当leader.产生后,所有fol1cwer的低三十二位递增。
也就是说3号的高32位增加,4512号低32位分别+1,+2,+3,+4。
zookeeper规定zxid的低三十二位越小,被操作的可能性越大,越有机会成为leader。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值