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