写点什么

zookeeper 的选主过程

作者:浅羽技术
  • 2022 年 8 月 31 日
    四川
  • 本文字数:724 字

    阅读完需:约 2 分钟

zookeeper的选主过程

zookeeper 的选主过程

1 . 接收投票消息。投票消息会包括 id,zxid,epoch,state,这四种信息,分别代表


Id: 唯一标识一台机器,存储在 myid 文件中


Zxid: 标识了本机想要选举谁为 leader,是本机目前所见到的最大的 id 值


Epoch: 逻辑时钟。用于判断选举是否过期


State: 本机的状态信息(包括 looking,leading,following,observing)


2 .判断 PeerState 状态,如果是 looking 状态,则继续.如果是 leading,foolowing,observing 则走别的流程


3 .收到票后,会判断发送过来的逻辑时钟是否大于目前的逻辑时钟,如果是说明集群已经进入了新一轮的投票了。


4 .清空投票箱。因为这个之前的投票都是上一次投票期间维护的。


5 . 如果等于目前的逻辑时钟,说明是当前的,则更新最大的 leader id 和提案 id


判断是否需要更新当前自己的选举情况.在这里是根据选举 leader id,保存的最大数据 id 来进行判断的,这两种数据之间对这个选举结果的影响的权重关系是:首先看数据 id,数据 id 大者胜出;其次再判断 leader id,leader id 大者胜出


判读投票结果代码


6 . 发送通知,通知其他的 QuorumPeer 更新 leader 信息.同时将更新后的 leader 信息放入投票箱


检查是否已经接收到了所有服务器的投票代码参考。如果是的,则设置自己的选择结果


如果没有接收到所有服务器的投票,那判读这个 leadId 是否得到了一半以后的服务器的投票代码参考,如果是则返回


以上流程描述的是在 zookeeper 中,参考使用的算法是 FastLeaderElection


在 zookeeper 的的选主的流程,另外还提供了 LeaderElection 和 AuthFastLeaderElection 的实现


LeaderElection 的实现比较简单。以(id,zxid)做为投票的依据.并且它的实现是同步的,需要等待所有服务器返回后再统计结果。


而相比 FastLeaderElection 是每次收到回复都会计算投票结果,效率上会比 LeaderElection 更好一些

发布于: 刚刚阅读数: 5
用户头像

浅羽技术

关注

才疏学浅,习习而为,编程羽录,与你同行。 2019.02.26 加入

分享一些计算机信息知识、理论技术、工具资源、软件介绍、后端开发、面试、工作感想以及生活随想等一系列文章。

评论

发布
暂无评论
zookeeper的选主过程_zookeeper_浅羽技术_InfoQ写作社区