首页 > 科技 >

zookeeper是若何拔取主leader的?

2019-04-17 21:17:01 暂无 阅读:1431 评论:0

17.zookeeper是若何拔取主leader的?

当leader溃逃或许leader失去大多数的follower,这时zk进入恢复模式,恢复模式需要从新选举出一个新的leader,让所有的Server都恢复到一个准确的状况。Zk的选举算法有两种:一种是基于basic paxos实现的,此外一种是基于fast paxos算法实现的。系统默认的选举算法为fast paxos。

1、Zookeeper选主流程(basic paxos)

(1)选举线程由当前Server提议选举的线程担当,其首要功能是对投票究竟进行统计,并选出介绍的Server;

(2)选举线程首先向所有Server提议一次扣问(包罗本身);

(3)选举线程收到复原后,验证是否是本身提议的扣问(验证zxid是否一致),然后获取对方的id(myid),并存储到当前扣问对象列表中,最后获取对方提议的leader相关信息(id,zxid),并将这些信息存储到当次选举的投票记录表中;

(4)收到所有Server复原今后,就较量出zxid最大的谁人Server,并将这个Server相关信息设置成下一次要投票的Server;

(5)线程将当前zxid最大的Server设置为当前Server要介绍的Leader,若是此时获胜的Server获得n/2 + 1的Server票数,设置当前介绍的leader为获胜的Server,将凭据获胜的Server相关信息设置本身的状况,不然,持续这个过程,直到leader被选举出来。 经由流程剖析我们能够得出:要使Leader获得多数Server的支撑,则Server总数必需是奇数2n+1,且存活的Server的数目不得少于n+1. 每个Server启动后都邑反复以上流程。在恢复模式下,若是是刚从溃逃状况恢复的或许刚启动的server还会从磁盘快照中恢复数据和会话信息,zk会记录事务日志并按期进行快照,轻易在恢复时进行状况恢复。

zookeeper是若何拔取主leader的?

2、Zookeeper选主流程(fast paxos)

fast paxos流程是在选举过程中,某Server首先向所有Server提议本身要成为leader,当另外Server收到提议今后,解决epoch和 zxid的辩说,并接管对方的提议,然后向对方发送接管提议完成的新闻,反复这个流程,最后必然能选举出Leader。

zookeeper是若何拔取主leader的?

相关文章