tikv/raft-rs:在 Rust 中實現的 Raft 分散式共識演算法原始碼

banq發表於2021-12-20

在構建分散式系統時,一個主要目標通常是構建容錯。也就是說,如果網路中的一個特定節點出現故障,或者存在網路分割槽,則整個叢集不會發生故障。參與分散式共識協議的節點叢集必須就價值達成一致,一旦達成該決定,該選擇即為最終決定。

分散式共識演算法通常採用複製狀態機和日誌的形式。每個狀態機接受來自其日誌的輸入,並表示要複製的值,例如雜湊表。它們允許一組機器作為一個連貫的組工作,可以在其某些成員的失敗中倖存下來。

兩個著名的分散式共識演算法是 Paxos 和 Raft。Paxos 被用在像谷歌的Chubby這樣的系統中,而 Raft 被用在像tikvetcd之類的東西中。

Raft 通常被視為比 Paxos 更易於理解和更易於實現。

Raft演算法學習可見:分散式系統Raft演算法

Raft 通過日誌複製狀態機。如果可以保證所有機器的日誌順序一致,那麼在按順序應用所有日誌後,狀態機就會達到一致的狀態。

 

一個完整的 Raft 模型包含 4 個基本部分:

  1. Consensus Module,核心共識演算法模組;
  2. Log,存放 Raft 日誌的地方;
  3. 狀態機,儲存使用者資料的地方;
  4. 傳輸,用於通訊的網路層。

注意:這個 Rust 專案中的 Raft 實現僅包括核心共識模組,不包括其他部分。Raft crate 中的核心共識模組是可定製的、靈活的和有彈性的。您可以直接使用 Raft crate,但您需要構建自己的日誌、狀態機和傳輸元件。

相關文章