一、前言
前面学习了Leader选举的总体框架,接着来学习Zookeeper中默认的选举策略,FastLeaderElection。
二、FastLeaderElection源码分析
2.1 类的继承关系
public class FastLeaderElection implements Election {}说明:FastLeaderElection实现了Election接口,其需要实现接口中定义的lookForLeader方法和shutdown方法,其是标准的Fast Paxos算法的实现,各服务器之间基于TCP协议进行选举。
2.2 类的内部类
FastLeaderElection有三个较为重要的内部类,分别为Notification、ToSend、Messenger。
1. Notification类
Notification
说明:Notification表示收到的选举投票信息(其他服务器发来的选举投票信息),其包含了被选举者的id、zxid、选举周期等信息,其buildMsg方法将选举信息封装至ByteBuffer中再进行发送。
2. ToSend类
ToSend
说明:ToSend表示发送给其他服务器的选举投票信息,也包含了被选举者的id、zxid、选举周期等信息。
3. Messenger类

