本文共 636 字,大约阅读时间需要 2 分钟。
一、选举步骤
1、初始化Leader选举
a、根据自身的SID(服务器ID)、最新的ZXID和当前的服务器epoch来生成一个初始化投票
b、根据zoo.cfg中的配置,创建Leader选举算法
c、启动Leader选举端口的监听,等待集群中其他服务创建连接
2、注册JMX服务
3、检测当前服务器状态
4、Leader选举
选举过程:集中所有机器,互相之间相互投票,选举产生最合适的机器成为Leader,其余成为Follower或者是Observe。
选举算法:集群中哪个机器的数据越新(通常根据每个服务器处理过的最大ZXID来比较确定其数据是否更新),越可能成为leader。如果集群中所有的机器处理ZXID一致的话,SID最大的服务器成为Leader。
具体Leader选举流程
1、每个server会发出一个投票
2、接收来自各个服务器的投票
每个服务器都会接收来自其他服务器的投票,并判断投票的有效性,检查投票是否来自looking状态的服务器。
3、处理投票
4、统计投票
5、改变服务器状态
follower:following
leader:leading
如果leader宕机后,所有的服务的状态都会变成looking。
名词解释:
SID(服务器ID):
是一个数字,用来唯一标识一台Zookeeper和myid的值一致。
ZXID(事务ID)
用来唯一标识一次服务器状态的变更。在某一时刻,集群中每台机器的ZXID值不一定全都一致。
VOTE(投票)
转载地址:http://qgzhd.baihongyu.com/