Zab协议(10)-选举算法阶段总结

2021SC@SDUSC

在这里插入图片描述

选举

最新的版本里的选举算法只有一个 ,即FastLeaderElection方法。
选举:通过特定的选举算法选出leader,
第一步:当系统刚启动时,3 个服务器当前投票均为第一轮投票。此时每个服务器都推选自己,并将选票信息广播出去。
第二步:根据判断规则,先比较数据zxid,数据zxid大者胜出;其次再判断id, 大者胜出;然后再将自身最新的选举结果发送出去。
第三步:选出的主节点计算得票数,如果超过集群中节点半数,则该节点被选举为leader

同步

Leader 要负责将本身的数据与 Follower 完成同步,做到多副本存储。这体现了CAP中的高可用和分区容错。、
完成Leader选举(新的 Leader 具有最高的zxid)之后,在正式开始⼯作(接收客户端请求)之前,Leader服务器会⾸先确认事务⽇志中的所有Proposal是否都已经被集群中过半的机器提交了,即是否完成数据同步 。

Leader服务器需要确保所有的Follower服务器能够接收到每⼀条事务Proposal,并且能够正确地将所有已经提交了的事务Proposal应⽤到内存数据中。等到 Follower服务器将所有其尚未同步的事务 Proposal 都从 Leader 服务器上同步过来并成功应⽤到本地数据库中后,Leader服务器就会将该Follower服务器加⼊到真正的可⽤Follower列表中,并开始之后的其他流程。

广播

当一台新的服务器启动后加入到集群中,如果此时集群中已经存在一个Leader服务器在负责进行消息广播,那么加入的服务器会自动进入数据恢复模式: 找到Leader 所在的服务器,并与其进⾏数据同步,数据同步完成后参与到消息⼴播流程中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zookeeper选举算法是指在Zookeeper分布式系统中用来选举一个Leader节点的算法Zookeeper使用ZAB协议作为一致性协议,而ZAB协议是为分布式协调服务Zookeeper专门设计的一种原子广播协议,它借鉴了Paxos算法但又有所不同,解决了一些Paxos算法的问题。 在Zookeeper选举算法中,节点通过争夺一个唯一的递增的选举编号来进行选举。当一个节点发起选举时,它会向其他节点发送选举通知。其他节点收到选举通知后,会比较自己的选举编号与发起者的选举编号的大小,如果发起者的选举编号更大,那么它就会放弃自己的选举,成为发起者的支持者。如果其他节点发现自己的选举编号更大,那么它就会成为发起者的竞争者,并继续向其他节点发送选举通知。 在选举过程中,如果一个发起者收到了超过半数节点的选举通知,那么它就会成为新的Leader节点。如果一个节点在选举过程中与其他节点失去了联系,那么它会暂时被标记为不可用。当它重新与集群中的其他节点建立联系时,它会重新参与选举过程,争夺成为Leader节点。 总结来说,Zookeeper选举算法通过ZAB协议来实现,它使用选举编号和选举通知来进行选举,最终选举出一个Leader节点来负责协调分布式系统的工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [zookeeper选举算法](https://blog.csdn.net/fei_thefirst/article/details/113385468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值