ZooKeeper投票机制

在 Zookeeper 中,Leader 选举是由各个 Follower 节点参与投票的。

Zookeeper 集群中的节点有三种角色:Leader(领导者)、Follower(跟随者)和 Observer(观察者)。其中,Follower 和 Observer 归类为 Learner(学习者)。

当进行 Leader 选举时,每个 Follower 节点都会发出一个投票,投票中包含所推举的服务器的 myid(服务器标识)和 zxid(事务 ID)。然后,各节点会接收来自其他节点的投票,并依据一定的规则处理投票。

具体的投票规则是优先比较 zxid,zxid 较大的服务器优先作为 Leader;如果 zxid 相同,则比较 myid,myid 较大的服务器作为 Leader。每次投票后,节点会统计投票信息,当有超过半数的节点接收到相同的投票信息时,被推举的服务器就会成为新的 Leader。

Observer 节点不参与 Leader 选举,也没有投票权,它的主要作用是提高 Zookeeper 集群的读性能。

例如,在一个有5个节点的集群中,初始状态均为 shutdown。当 Server 1 启动后,它会提议自己为 Leader 并为自己投票,由于其他 Server 还未启动,它处于 Looking 状态。接着 Server 2 启动,也提议自己为 Leader 并与 Server 1 交换投票结果,此时 Server 2 胜出,但因投票数未过集群数的一半,两者仍处于 Looking 状态。随后 Server 3 启动,它胜出并成为 Leader,Server 1、Server 2 更新为 Follower。当 Server 4 和 Server 5 启动后,它们发现 Server 3 已成为 Leader,便也成为了 Follower。

在 Leader 确定后,它会通知其他 Follower 集群已成为 Uptodate 状态,Follower 在收到 Uptodate 消息后,就可以接收 Client 的请求并开始对外提供服务。如果 Leader 节点出现故障,Zookeeper 集群会重新进行 Leader 选举。

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值