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状态同步流程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寒 暄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值