一、前言
前面學習了Leader選舉的總體框架,接著來學習Zookeeper中默認的選舉策略,F(xiàn)astLeaderElection。
二、FastLeaderElection源碼分析
2.1 類的繼承關系
public class FastLeaderElection implements Election {}
說明:FastLeaderElection實現(xiàn)了Election接口,其需要實現(xiàn)接口中定義的lookForLeader方法和shutdown方法,其是標準的Fast Paxos算法的實現(xiàn),各服務器之間基于TCP協(xié)議進行選舉。
2.2 類的內(nèi)部類
FastLeaderElection有三個較為重要的內(nèi)部類,分別為Notification、ToSend、Messenger。
1. Notification類
Notification
說明:Notification表示收到的選舉投票信息(其他服務器發(fā)來的選舉投票信息),其包含了被選舉者的id、zxid、選舉周期等信息,其buildMsg方法將選舉信息封裝至ByteBuffer中再進行發(fā)送。
2. ToSend類
ToSend
說明:ToSend表示發(fā)送給其他服務器的選舉投票信息,也包含了被選舉者的id、zxid、選舉周期等信息。
3. Messenger類