Raft共識演算法介紹

2022-09-14 11:06:12 字數 1168 閱讀 9623

共識演算法就是一致性演算法,目的是分布式場景下達成一致的方法。raft共識演算法就選擇乙個領導人leader來進行一致性裁決,leader的選舉規則也是raft演算法的一部分。

raft階段主要分為兩個,首先是leader選舉過程,然後在選舉出來的leader基礎上進行正常操作,比如日誌複製、記賬等。

leader選舉

當follower在選舉超時時間內未收到leader的心跳訊息,則轉換為candidate狀態。為了避免選舉衝突,這個超時時間是乙個150~300ms之間的隨機數。

1)任何乙個伺服器都可以成為乙個候選者candidate,它向其他伺服器follower發出要求選舉自己的請求。

2)其他伺服器同意了,發出ok。如果在這個過程中,有乙個follower宕機,沒有收到請求選舉的要求,此時候選者可以自己選自己,只要達到 n / 2 + 1 n/2+1 n/2+1的大多數票,候選人還是可以成為leader。

3)這樣這個候選者就成為了leader領導人,它可以向follower發出指令,比如進行記賬。

4)以後可以通過心跳進行記賬的通知。

5)一旦這個leader崩潰了,那麼follower中有乙個成為候選者,並發出邀票選舉。

6)follower同意後,其成為leader,繼續承擔記賬等指導工作。

在這裡插入描述

raft的記賬過程按以下步驟完成:

1)假設leader領導人已經選出,這時客戶端發出增加乙個日誌的要求;

2)leader要求follower遵從他的指令,都將這個新的日誌內容追加到他們各自日誌中;

3)大多數follower伺服器將交易記錄寫入賬本後,確認追加成功,發出確認成功訊息;

4)在下乙個心跳中,leader會通知所有follower更新確認的專案。

對於每個新的交易記錄,重複上述過程。

如果在這一過程中,發生了網路通訊故障,使得leader不能訪問大多數follower,那麼leader只能正常更新它能訪問的那些follower伺服器。而大多數的伺服器follower因為沒有了leader,它們將重新選舉乙個候選者作為leader,然後這個leader作為代表與外界打交道,如果外界要求其新增新的交易記錄,這個新的leader就按上述步驟通知大多數follower,如果這時網路故障修復了,那麼原先的leader就變成follower,在失聯階段,這個老leader的任何更新都不能算確認,都回滾,接收新的leader的新更新。

raft演算法 Paxos和Raft共識演算法(二)

raft 譯文 在過去的 10 年中,leslie lamport 的 paxos 演算法幾乎已經成為了一致性演算法的代名詞,但是paxos 有兩個致命的缺點 第乙個是 paxos 太難以理解,第二個缺點是它難以在實際環境中實現。其中乙個原因是,對於多決策 paxos multi paxos 大家還...

分布式共識演算法 Raft詳解

拜占庭將軍問題是分布式領域最複雜 最嚴格的容錯模型。但在日 常工作中使用的分布式系統面對的問題不會那麼複雜,更多的是因 為計算機故障宕機,或者網路通訊問題而沒法傳遞資訊,這種情況 不考慮計算機之間互相傳送惡意資訊,極大簡化了系統對容錯的要 求,最主要的是達到一致性。假設將軍中沒有叛軍,信使的資訊可靠...

閒聊分布式共識演算法raft 2

本文主要簡單聊聊分布式共識演算法raft在發生網路分割槽的時候如何保持最終一致性。如果有對raft基礎不清楚,或者對日誌複製和首領選舉有疑問可以參看之前的文章.raft 共識演算法 1 首先我們看乙個狀態就是沒有網路分割槽的情況。圖中我們可以觀察到的情況就是綠色的client和藍色的服務端節點之間網...