ZooKeeper启动过程2:FastLeaderElection

前一篇文章中说到,启动ZooKeeper集群时,须要分别启动集群中的各个节点,各节点以QuorumPeer的形式启动。最后到达startLeaderElection和lookForLeader。

先说startLeaderElection

首先。初始化节点自身的currentVote【当前投票】为【myid、zxid、currentEpoch】

然后。初始化选举算法createElectionAlgorithm,默认使用FastLeaderElection算法。在这里,启动两个线程WorkerSender、WorkerReceiver。分别用于向其它全部节点发送自己的投票信息、接收并处理其它节点发送给自己的投票信息。

再说lookForLeader

首先。初始化节点自身的逻辑时钟【logicalclock】,同一时候初始化节点的投票信息:proposedLeader【myid中读取】、proposedZxid【data文件夹中读取,默觉得0】、proposedEpoch【data文件夹中读取。默觉得0】

然后,向集群中全部节点发送投票信息【包含自身】。使用WorkerSender发送。全部节点使用WorkerReceiver接收投票信息。进行兴许处理



































原文地址:https://www.cnblogs.com/wgwyanfs/p/6917971.html