Zookeeper -- leader选举

        Zookeeper的核心是源自广播,实现这个机制的协议是Zab协议。Zab协议有两种模式,分别是恢复模式和广播模式。当服务器启动或者领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。

        zookeeper次用了递增的食物id号(zxid)来标识事务。所有提议在被踢出来的时候都加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

        server在工作过程中有三种状态:

        (1)观察者:LOOKING,当前server不知道leader是谁,正在寻找

        (2)领导者:LEADING,选举出的leader服务器

        (3)跟随着:FOLLOWING,leader已经选出来,当前server与之同步


        当前leader崩溃或者失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。选举算法两种:basic paxos、fast paxos,默认是后者。

        每个server重启或者启动都会先,找leader,如下:

         (1)basic paxos:当前server向集群内所有server发起询问,得到回复,统计其他server推荐的leader,选择zxid最大的作为推荐leader,如果同时该server拥有超过半数的支持,则把它作为leader,修改自己的信息;如果没有获得半数以上支持则再次发起询问,直至得到leader信息。

         (2)fast paxos:某Server首先向所有Server提议自己要成为leader,一周期后,如果没有被选择为leader,则根据收到的回复信息,更新自己的投票,重新发起提议(这次推荐其他server,zxid最大的 ),不断重复,直至选出leader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值