zookeeper集群启动阶段选举和运行阶段选举

zookeeper选举触发的条件有2个:

1.zookeeper集群启动阶段触发的leader选举

2.zookeeper集群运行阶段leader挂机促发的leader选举

zookeeper集群的选举触发条件只有上面2个,因为follower的挂机或者加入不会触发leader选举。

一、zookeeper集群启动阶段选举

1.每台服务器选举自己为leader,然后把自己的选票通过广播通知其他服务器。此时ServerState的状态是LOOKING.

2.每台服务器接受来自其他服务器的选票的选票,并进行合法性校验,主要有两点校验,选举轮次校验和服务器状态校验。

3.处理选票。每台服务器都会将自己的选票与其他服务器进行PK,PK规则如下:

规则一:首先进行ZXID的PK,ZXID大的获胜。

规则二:如果ZXID相同,则进行MYID的PK,MYID大的获胜。

经过PK后,如果当服务器PK失败,则会把自己的选票重新投给胜者,然后把更新后的选票通过广播通知其他服务器。

4.统计选票。根据超过半数原则,每台服务器都会统计自己的leader选票,如果超过半数,则选举结束。

5.更新服务器状态。follower把自己状态更新为leading。

二、zookeeper集群运行阶段选举

zookeeper集群运行期间,leader挂了,此时会触发leader选举,流程如下:

1.变更状态。

当leader挂了之后,其他所有非observer服务器都会将自己的状态更新为looking然后开始选举leader。

2.每台服务器选举自己为leader,然后把自己的选票通过广播通知其他服务器。这里的流程和启动阶段的leader选举是一致的,但是zxid可能不同。

3.收接选票。流程和启动阶段的leader选举是一致的。

4.处理选票。流程和启动阶段的leader选举是一致的。

5.统计选票,流程和启动阶段的leader选举是一致的。

6.更新服务器状态。流程和启动阶段的leader选举是一致的。

三、serverstate

serverstate是quorunpeer.class的内部类,定义了zookeeper集群中服务器的状态,可选值有4个:

looking

following

leading

observing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值