raft也是分布式一致性協議,主要是用來競選主節點。
有三種節點:follower,candidate和leader。leader會週期性的傳送心跳給follower。每個follower都設定了乙個隨機的競選超時時間,一般為150ms-300ms,如果在這個時間內沒有收到leader的心跳包,就會變成candidate,進入競選階段。
如果有多個follower稱為candidate,並且所獲得票數相同,那麼就需要重新開始投票。例如下圖中的node b和node d都獲得兩票,需要重新開始投票。
由於每個節點設定的隨機競選超時時間不同,因此下一次再次出現多個candidate並獲得同樣票數的概率很低。
來自客戶端的修改都會被傳入leader。注意該修改還未被提交,只是寫入日誌中。
leader會把修改複製到所有follower。
leader會等待大多數的follower也進行了修改,然後才將修改提交。
此時leader會通知所有的follower讓它們也提交修改,此時所有的節點的值達成一致。
分布式系統 Raft演算法
什麼是拜占庭將軍問題?在很久很久以前,拜占庭是東羅馬帝國的首都。那個時候羅馬帝國國土遼闊,為了防禦目的,因此每個軍隊都分隔很遠,將軍與將軍之間只能靠信使傳遞訊息。在打仗的時候,拜占庭軍隊內所有將軍必需達成一致的共識,才能更好地贏得勝利。但是,在軍隊內有可能存有叛徒,擾亂將軍們的決定。這時候,在已知有...
分布式系統的Raft演算法
過去,paxos一直是分布式協議的標準,但是paxos難於理解,更難以實現,google的分布式鎖系統chubby作為paxos實現曾經遭遇到很多坑。來自stanford的新的分布式協議研究稱為raft,它是乙個為真實世界應用建立的協議,主要注重協議的落地性和可理解性。在了解raft之前,我們先了解...
分布式系統的Raft演算法
過去,paxos一直是分布式協議的標準,但是paxos難於理解,更難以實現,google的分布式鎖系統chubby作為paxos實現曾經遭遇到很多坑。來自stanford的新的分布式協議研究稱為raft,它是乙個為真實世界應用建立的協議,主要注重協議的落地性和可理解性。在了解raft之前,我們先了解...