分布式 Raft演算法

2022-08-20 16:51:16 字數 1362 閱讀 4888

raft也是分布式一致性協議,主要是用來競選主節點

有三種節點:followercandidateleaderleader會週期性的傳送心跳給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之前,我們先了解...