Zookeeper选举机制和同步策略

Zookeeper选举机制-第一次启动

在这里插入图片描述

  • 未启动

    此时所有节点无状态,无角色,但是zkService知道参与选举的节点数量

  • Server 1 启动

    Server 1启动,选举开始,投自己一票,此时Server 1票数不过半,Server 1保持LOOKING状态。

  • Server 2 启动

    Server 2启动,Server 2投自己一票,并与Server 1 互换投票信息,Server 2的myID大于Server 1 的myID,Server 1改投票给Server 2,此时Server 2票数不过半,Server 2保持LOOKING状态。

  • Server 3 启动

    Server 3启动,Server 3投自己一票,并与Server 1 、 Server 2 互换投票信息,Server 3的myID大于Server 1 、Server 2 的myID,Server 1 、Server 2 改投票给Server 3,此时Server 3票数过半,Server 3当选leader,状态为LEADING,Server 1、Server 2 为Follower,状态为FOLLOWING 。

  • Server 4 启动

    Server 4 启动,Server 4发起选举,发现Server 3 已当选leader,且Server 1、Server 2状态不为LOOKING,无法再次投票,Server 4少数服从多数,改投票给Server 3,Server 4角色为Follower,状态为FOLLOWING 。

  • Server 5 启动

    与Server 4 同理。

Zookeeper选举机制-非第一次启动

在这里插入图片描述

当集群中确实不存在leader后,集群剩余节点会重新进行选举,选举规则如下:

  1. Epoch大的直接胜出(Epoch为该节点当选Leader次数)
  2. Epoch相同,则ZXID大的胜出(ZXID为事务ID,用来记录服务器状态的每次事务变更,ZXID大的节点表示事务状态新)
  3. ZXID相同,myID大的胜出(myID为人工声明的服务器ID)
  • 比对Epoch

    Server 3宕机后,其他节点比对Epoch,此时Epoch相等。

  • 比对ZXID

    server1、server2的ZXID为8,比server4、server5大。

  • 比对myID

    server1的myID为1,server2的myID为2,server2当选。

Zookeeper Follower和Leader状态同步流程

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ZooKeeper选举机制和脑裂问题是ZooKeeper分布式应用程序中非常重要的概念。在选举机制方面,ZooKeeper使用了半数可用机制、无领导情况下才能选举和半数选举机制来确保选举的正确性和可靠性。 具体来说,半数可用机制是指在进行选举时,必须有半数以上的ZooKeeper服务器处于可用状态,才会执行选举。这是为了防止选举发生在不稳定的环境中导致错误的结果。 无领导情况下才能选举这一原则是为了确保在没有已知的leader的情况下才能进行选举。这样可以避免出现多个节点同时发起选举的情况,从而保证选举的有效性。 半数选举机制是指一个被选举为leader的节点必须获得半数以上的选票才能成为leader。这样可以避免脑裂问题的发生,脑裂问题是指当网络分区发生时,可能导致多个节点同时认为自己是leader,从而产生数据一致性的问题。 至于脑裂问题,它是指当网络发生分区时,多个节点同时认为自己是leader,从而导致数据的不一致性。为了解决脑裂问题,ZooKeeper引入了半数选举机制,确保只有一个leader被选举出来。 总结起来,ZooKeeper选举机制通过半数可用机制、无领导情况下才能选举和半数选举机制来保证选举的正确性和可靠性。而脑裂问题则是指在网络分区发生时,可能导致多个节点同时认为自己是leader,为了解决这个问题,ZooKeeper引入了半数选举机制来确保只有一个leader被选举出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值