tikv/raft-rs:在 Rust 中實現的 Raft 分散式共識演算法原始碼
在構建分散式系統時,一個主要目標通常是構建容錯。也就是說,如果網路中的一個特定節點出現故障,或者存在網路分割槽,則整個叢集不會發生故障。參與分散式共識協議的節點叢集必須就價值達成一致,一旦達成該決定,該選擇即為最終決定。
分散式共識演算法通常採用複製狀態機和日誌的形式。每個狀態機接受來自其日誌的輸入,並表示要複製的值,例如雜湊表。它們允許一組機器作為一個連貫的組工作,可以在其某些成員的失敗中倖存下來。
兩個著名的分散式共識演算法是 Paxos 和 Raft。Paxos 被用在像谷歌的Chubby這樣的系統中,而 Raft 被用在像tikv或etcd之類的東西中。
Raft 通常被視為比 Paxos 更易於理解和更易於實現。
Raft演算法學習可見:分散式系統Raft演算法
Raft 通過日誌複製狀態機。如果可以保證所有機器的日誌順序一致,那麼在按順序應用所有日誌後,狀態機就會達到一致的狀態。
一個完整的 Raft 模型包含 4 個基本部分:
- Consensus Module,核心共識演算法模組;
- Log,存放 Raft 日誌的地方;
- 狀態機,儲存使用者資料的地方;
- 傳輸,用於通訊的網路層。
注意:這個 Rust 專案中的 Raft 實現僅包括核心共識模組,不包括其他部分。Raft crate 中的核心共識模組是可定製的、靈活的和有彈性的。您可以直接使用 Raft crate,但您需要構建自己的日誌、狀態機和傳輸元件。
相關文章
- zarusz/SlimCluster:在.NET中實現的Raft分散式共識演算法Raft分散式演算法
- 分散式系統之Raft共識演算法分散式Raft演算法
- TiKV 原始碼解析系列 – Raft 的優化原始碼Raft優化
- TiKV 原始碼解析系列 - Raft 的優化原始碼Raft優化
- 分散式共識演算法分散式演算法
- Lru在Rust中的實現, 原始碼解析Rust原始碼
- 區塊鏈共識演算法(1)分散式一致性演算法Raft區塊鏈演算法分散式Raft
- Raft共識演算法詳解Raft演算法
- 從分散式一致性到共識機制(二)Raft演算法分散式Raft演算法
- 深入剖析共識性演算法 Raft演算法Raft
- Percolator模型及其在TiKV中的實現模型
- Lru-k在Rust中的實現及原始碼解析Rust原始碼
- Lfu快取在Rust中的實現及原始碼解析快取Rust原始碼
- 分散式系統的Raft演算法分散式Raft演算法
- ChiselStore:Rust編寫的Raft分散式SQLite資料庫RustRaft分散式SQLite資料庫
- 帶有ttl的Lru在Rust中的實現及原始碼解析Rust原始碼
- Fabric2.x中Raft共識演算法核心資料結構Raft演算法資料結構
- 幽默!分散式系統共識演算法的三階段分散式演算法
- 分散式系統的共識(consensus)演算法比較分散式演算法
- kafka和raft共識機制KafkaRaft
- 分散式協議與演算法-Raft演算法分散式協議演算法Raft
- 分散式共識如何運作?分散式
- 共識演算法之爭(PBFT,Raft,PoW,PoS,DPoS,Ripple)演算法Raft
- 區塊鏈知識系列 - Raft 共識區塊鏈Raft
- 用 Go + Redis 實現陪玩平臺原始碼中的分散式鎖GoRedis原始碼分散式
- 深入剖析分散式一致性共識演算法分散式演算法
- consul 原始碼解析(一)raft 協議實現原始碼Raft協議
- cornerstone中RAFT的buffer的實現Raft
- (二)區塊鏈的共識演算法:PoS 及其 例子 程式碼 實現區塊鏈演算法
- 在 Java 中利用 redis 實現分散式全域性唯一標識服務JavaRedis分散式
- 基於Redisson實現分散式鎖原始碼解讀Redis分散式原始碼
- 在 Redis 上實現的分散式鎖Redis分散式
- 理解分散式一致性與Raft演算法分散式Raft演算法
- 淺談分散式一致性演算法raft分散式演算法Raft
- 在Golang中實現Actor模型的原始碼 - GauravGolang模型原始碼
- 在Lua中實現Rust物件的繫結Rust物件
- 共識演算法PoS及Go語言實現演算法Go
- 死磕以太坊原始碼分析之Ethash共識演算法原始碼演算法