加入收藏 | 设为首页 | 会员中心 | 我要投稿 衢州站长网 (https://www.0570zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

zk集群运行过程中,服务器选举的源码剖析

发布时间:2018-12-08 12:11:27 所属栏目:业界 来源:猿人课堂
导读:副标题#e# 在zk服务器集群启动过程中,经QuorumPeerMain中,不光会创建ZooKeeperServer对象,同时会生成QuorumPeer对象,代表了ZooKeeper集群中的一台机器。在整个机器运行期间,负责维护该机器的运行状态,同时会根据情况发起Leader选举。下图是 《从PAXOS

基本流程先说明一下:

  • QuorumPeer会轮询检查当前服务器状态,如果发现State是LOOKING,调用Election的lookForLeader来开始新一轮的选举
  • FastLeaderElection会首先将logicallock++,表示新的一轮选举开始了
  • 构造初始的选票,Vote的内容就是选自己,然后通知zk集群中的其他机器
  • FastLeaderElection会一直轮询查状态,只要是LOOKING态,就会从recvqueue中获取其他服务器同步的选票信息,为了方便说明,记录为n
  • 根据n的票选信息状态,做相关的操作

LOOKING: 都处于无Leader态,比较一下选票的优劣,看是否更新自己的选票,如果更新了就同时通知给其他服务器

FOLLOWING、LEADING:说明集群中已经有Leader存在,更新一下自己的状态,结束本轮投票

OBSERVING:这票没什么卵用,直接舍弃(OBSERVER是不参与投票的)

(编辑:衢州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读