ZooKeeper群首Leader选举过程

群首Leader选举

请求、事务标识符

在这里插入图片描述

服务器选举中节点的状态

在这里插入图片描述

ZooKeeper实现选举的类是org.apache.zookeeper.server.quorum.QuorumPeer

查找群首leader

QuorumPeer类的 run 方法实现了服务器的主要循环工作。当进入 LOOKING 状态,将会执行org.apache.zookeeper.server.quorum.Election.lookForLeader方法进行leader的选举,该方法返回前会将服务器状态设置为LEADING 或者FOLLOWING 状态,也可能是OBSERVING

一图胜千言–ZooKeeper选举过程

以下是正常情况下的选举过程,确实很顺利:
在这里插入图片描述

但是实际中可能存在各种场景,以下是其中一种S2接收S1投票延迟的情况:

在这里插入图片描述

虽然最后没有影响选举结果,但是S2选择S3,S3并不会以群首身份响应S2的请求,S2会在等待S3的响应而超时,并开始再一次的重试,这期间S2是无法处理任何客户端的请求的。
如果可以让S2在进行选举群首时多等待一会,等到S1的投票。

在这里插入图片描述

默认的群选举实现类为org.apache.zookeeper.server.quorum.FastLeaderElection implements Election,如果想自定义群首选举算法,需要实现 quorum 包中的Election接口。

更多连接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值