首页 > 其他 > 详细

Zookeeper选举机制

时间:2019-11-14 00:39:08      阅读:124      评论:0      收藏:0      [点我收藏+]

1.Zookeeper选举机制

什么时候需要进行选举?

? 当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进行Leader选举:

? 1)服务器初始化启动

? 2)服务器运行期间无法和Leader保持连接

怎样进行选举?

? 1.服务器初始化启动的Leader选举

? 前提:至少需要两台服务器,当只有一台服务器时,其单独无法进行Leader选举,当有两台服务器时,并且他们之间可以相互通信,此时才能进入选举状态

? 选举过程:

? 1)每台服务器发出自己的投票。初始投票每台服务器都会投自己,投票内容为(myidZXIDEpoch

? 2)接收来自各个服务器的投票。每台服务器接收到其他服务器的投票后,首先判断该投票的有效性(根据Epoch判断是否为本轮投票,是否来自LOOKING状态的服务器)

? 3)处理投票。针对接收到的每一个投票,都需要将该投票与自己的投票进行PK,规则如下:

? 1)首先检查ZXID,ZXID大的服务器优先作为Leader

? 2)ZXID相同,myid大的服务器作为Leader

? 4)将投票的处理结果发送给其他服务器,进行重新投票。

? 5)统计投票结果。若超过半数的服务器接受到相同的投票信息,则便可以认为选出了Leader。

? 6)改变服务器状态。一旦确定了Leader,每台服务器根据选举结果,更新自己的状态为Leader或是Follower。

//启动的顺序不同,选举的结果有可能不同

? 2.服务器运行期间的Leader选举

? 前提:Leader服务器挂了。在服务器运行期间,Follower服务器挂掉不会影响Leader,只有当Leader服务器挂掉,才会进入选举状态。此时,整个集群暂停对外的服务,进入选举状态。

? 选举过程:

? 1)变更状态。Leader挂掉,其他的Observer服务器都会将自己的服务器状态变更为Looking,并进入选举过程。

。。。与初始化启动选举过程一致

名词:

? 1)Looking:寻找Leader状态。拥有此状态及服务器会进入Leader选举状态

? 2)Follower:跟随者状态。表明当前服务器的角色为Follower

? 3)Leading:领导者状态。表明当前服务器的角色为Leader

? 4)Observing:观察者状态。表名当前服务器的角色为Observer

myid:服务器ID,编号越大在选举中所占权重越大

ZXID:服务器中存放的最大数据ID,值越大表明数据越新,在选举中所占权重越大。

Epoch:逻辑时钟,每一轮投票过程中逻辑时钟必须是相同的,每投完一轮这个数值就会增加。

Zookeeper选举机制

原文:https://www.cnblogs.com/JoshWill/p/11854225.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!