【Zookeeper】——Leader选举

来源:互联网 发布:淘宝店铺商品上架教程 编辑:程序博客网 时间:2024/05/13 07:57

一、选举步骤


1、初始化Leader选举

a、根据自身的SID(服务器ID)、最新的ZXID和当前的服务器epoch来生成一个初始化投票

b、根据zoo.cfg中的配置,创建Leader选举算法

c、启动Leader选举端口的监听,等待集群中其他服务创建连接

2、注册JMX服务

3、检测当前服务器状态

4Leader选举

选举过程:集中所有机器,互相之间相互投票,选举产生最合适的机器成为Leader,其余成为Follower或者是Observe

选举算法:集群中哪个机器的数据越新(通常根据每个服务器处理过的最大ZXID来比较确定其数据是否更新),越可能成为leader。如果集群中所有的机器处理ZXID一致的话,SID最大的服务器成为Leader

 

 

具体Leader选举流程

 

1、每个server会发出一个投票

2、接收来自各个服务器的投票

每个服务器都会接收来自其他服务器的投票,并判断投票的有效性,检查投票是否来自looking状态的服务器。

3、处理投票

4、统计投票

5、改变服务器状态

followerfollowing

leaderleading

 

如果leader宕机后,所有的服务的状态都会变成looking

 

 

名词解释:

 

SID(服务器ID):

是一个数字,用来唯一标识一台Zookeepermyid的值一致。

 

ZXID(事务ID

用来唯一标识一次服务器状态的变更。在某一时刻,集群中每台机器的ZXID值不一定全都一致。

 

VOTE(投票)

0 0
原创粉丝点击