zookeeper选取leader

本文介绍了Zookeeper在启动时的Leader选举过程,包括每个服务器发出投票、比较投票和最终确定Leader的步骤。在选举中,SID最大的服务器并不总是成为Leader,而是ZXID和多数票决定。此外,文中提出了关于逻辑时钟在服务器宕机恢复后可能导致的不一致问题,引发对于选举有效性和处理策略的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前看过一篇文档,描述了zk选举leader的实现过程,小弟我对zk理解不是很深,所以存在个问题,希望大佬们多留言,解除我心中的疑惑,

引用地址:https://blog.youkuaiyun.com/gaoshan12345678910/article/details/67638657

zk在初次启动时会进行leader选举,其选举规则也相对简单,大致过程如下:

前提:现在有5台zookeeper服务器,sid分别是1,2,3,4,5

1、每个server都会发出一次投票,投票中主要信息有sid(server的sid)(服务器唯一标识)和zxid(事务id,因为是初始化启动,所以此时zxid=0),现在进行第一轮投票,因为是第一轮投票,所以默认sid等于各自的标识

2、每个server会接受其它server的投票信息,然后依次跟自己的投票比较,比如sid=2的服务器,它当时投的票是[sid=2,zxid=0],接受到的投票有[sid=1,zxid=0]、[sid=3,zxid=0]、[sid=4,zxid=0]、[sid=5,zxid=0],这样进行依次比较后,得到[sid=5,axid=0],其它server也进行同样的操作,所以任何一个sever得到的结果都是[sid=5,zxid=0]

3、此时进行第二轮投票,基于上一轮的判断,这轮投票结果是这样的:sid=1服务器投票[sid=5,zxid=0]、sid=2服务器投票[sid=5,zxid=0]、sid=3服务器投票[sid=5,zxid=0]、sid=4服务器投票[sid=5,zxid=0]、sid=5服务器投票[sid=5,zxid=0]

即所有服务器投一样的票,都选sid=5的服务器当leader.根据规则,当某个服务器的选票超过一半以上即选它当leader,所以,最后的结果就是:sid=5这台服务器当leader了,恭喜这个服务器.

以上是选取leader的过程,

那么问题来了,按照这种规则选取,不就是选取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值