《Zookeeper》源码分析(八)之 Leader选举的源码入口

QuorumPeer.start()

QuorumPeerMain完成了QuorumPeer配置后会直接调用其start()函数启动,在启动的过程中会先进行选举工作,为了对选举的总体过程有个大致了解,先看下总体流程图:
在这里插入图片描述

图中涉及到的类作用:

QuorumCnxManager:负责每台服务器之间的底层Leader选举过程中的网络通信,类似于ServerCnxn

Listener:监听管理器,它内部维护了一系列ListenerHandler,每一个ListenerHandler代表服务器与集群中另一个服务器的连接。

FastLeaderElection:选举算法

Messenger:选举过程中的消息管理器,内部维护两个线程,发送线程WorkerSender,接收线程WorkerReceiver

下面开下start()方法的源码:
在这里插入图片描述

QuorumPeer.run()

QuorumPeer本质是一个线程,start()启动后等待CPU资源,获得后执行run()方法进行正式选举逻辑。
在这里插入图片描述

到这里我们先停一停,等分析完选举的核心类之后再继续分析选举的核心。

ServerState

在这里插入图片描述

每个服务器只能处于一种状态,最开始的时候是LOOKING,意味着需要选举,身份未定。

Vote

在选举过程中Vote代表选票的信息,数据结构如下:
在这里插入图片描述

在选举过程中服务器会向集群中所有服务器发送自己的选票信息,也会收到来自其他服务器的选票信息,当收到选票后会进行PK,如果自己选票落后于收到的则更新自己的选票,选票PK过程如下:
在这里插入图片描述

ToSend

在服务器之间的通信中,ToSendVote的载体,数据结构如下:
在这里插入图片描述

选举的过程简单介绍到此,下文继续分析其他核心类。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值