假設有三個server,server1,server2,server3服務器
服務啓動時期的選舉server
1.每一個Server發出一個投票統計
投票包含(myid,ZXID),剛開始server都是投本身的,即Server1的投票爲(1,0),Server2的投票爲(2,0)
2.接收來自各個服務器的投票
每一個服務器接收來自其餘服務器的投票,接收到投票,檢查投票的有效性(是否爲本輪投票,是否來自LOOKING狀態的服務器)
3.處理投票
針對每一個投票,服務器都須要將別人的投票和本身的投票進行PK
本例Server2與Server1 PK,更新server1的投票爲(2,0),server2投票保持不變
4.統計投票
每次投票後,服務器都會統計全部投票,判斷是否有過半機器收到相同的投票信息。本例中,server2擁有過半的票數,選爲leader
5.改變服務器狀態
leader狀態---->LEADING,follower狀態------>FOLLOWING
服務器運行期間選舉(發生在leader那臺服務掛了)
1.變動狀態
當leader(本例中server2)掛了後,非observer服務器狀態變爲LOOKING,進入leader選舉(同上)