java架构师培训-Zookeepe的选主流程

2021年04月08日 19:04

30

    当领导者崩溃或领导者失去大部分追随者时,zk进入恢复模式。恢复模式需要重新选择新的领导者,以将所有服务器还原到正确的状态。Zk的选举算法有两种:一种基于basicpaxos,另一种基于fastpaxos。系统的默认选举算法为fastpaxos。

java架构师培训

    1、Zookeeper选主流程(basicpaxos)


    (1)选举线程由当前Server发起选举的线程担任,其主要功能是对投票结果进行统计,并选出推荐的Server;


    (2)选举线程首先向所有Server发起一次询问(包括自己);


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


    (4)收到所有Server回复以后,就计算出zxid最大的那个Server,并将这个Server相关信息设置成下一次要投票的Server;


    (5)该线程将具有最大zxid的当前服务器设置为要由当前服务器推荐的领导者。如果此时获胜服务器获得n/21服务器票,则将当前推荐的领导者设置为获胜服务器,并根据获胜服务器的相关信息进行自身设置;否则,继续此过程,直到选举出领导者为止。通过过程分析,我们可以得出:为了使Leader获得大多数服务器的支持,服务器总数必须是2n1的奇数,并且存活的服务器数量必须不少于n1。每个服务器启动后,将重复此过程。在恢复模式下,如果服务器刚刚从崩溃状态中恢复或刚刚启动,它将从磁盘快照中恢复数据和会话信息。Zk将记录事务日志并定期拍摄快照,以促进恢复期间的状态恢复。


    2、Zookeeper选主流程(fastpaxos)


    fastpaxos流程是在选举过程中,某Server首先向所有Server提议自己要成为leader,当其它Server收到提议以后,解决epoch和zxid的冲突,并接受对方的提议,然后向对方发送接受提议完成的消息,重复这个流程,最后一定能选举出Leader。


 推荐阅读:java架构师培训:java最佳测试框架JBehave的基本介绍


更多鲁班学院java高级培训免费课程试听地址https://www.lubanjava.com/course.html

鲁班学院java高级培训课程https://www.lubanjava.com/course/detail/519.html

加群即可领取鲁班学院最新Java高级培训课程资料学习包 群号:700541970



咨询(2)
免费试听
领取优惠
加群交流

扫一扫
加群领取架构师资料

售后反馈
返回顶部