函式庫 / SDK
databendlabs/openraft avatar
databendlabs/openraft

OpenRaft:基於 async-raft 改進的 Rust Raft 實作

鏽筏經過改進。路線圖 [x] 2022-10-31 擴大聯合會員資格 [x] 2023-02-14 盡量減少選舉時的衝突率;請參閱:OpenRaft 投票設計;或使用標準 Raft Leader-ID 模式。

2,054 個 Star247 個 ForkRustApache-2.0
GitHub

秒懂

它是什麼?
databendlabs/openraft 倉庫是一個從 async-raft 派生並修復了多處 bug 的 Rust Raft 實作,目前是 Databend meta-service 叢集的共識引擎。本文介紹其狀態、版本分支、基準測試數據、設計差異與已知使用方。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
README 列出的使用方包括 Databend、CnosDB、RobustMQ、RocketMQ-rust、Hiqlite 等,專案採用 MIT 或 Apache-2.0 雙授權,由使用者任選其一。0.10 版本線仍處於 alpha 階段,混沌測試尚未完成,1.0.0 之前 API 不保證穩定。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Rust(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

databendlabs-openraft-deep-analysis|這個 Raft 分支要改變什麼

databendlabs-openraft-deep-analysis|這個 Raft 分支要改變什麼 的專案脈絡:OpenRaft 是一個以 Rust 實作的 Raft 共識演算法函式庫,它派生自 async-raft crate,並在修復了其中的若干 bug 之後獨立發展。README 列出的專案目標是改進 Raft,使其成為分散式資料儲存系統的下一代共識協定,目標場景包括 SQL、NoSQL、KV、串流、圖等儲存類型。根據 README,OpenRaft 目前是 Databend 中 meta-service 叢集的共識引擎。倉庫中還單獨維護了一份檔案,列出相對 async-raft 修復的 bug。

專案核對 0:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|專案狀態與尚未完成的部分

databendlabs-openraft-deep-analysis|專案狀態與尚未完成的部分 的專案脈絡:README 將功能集描述為幾乎完整,足以建構應用程式,單元測試覆蓋率為 92%。混沌測試尚未完成,README 表示還需要進一步測試來確保應用程式的穩健性與可靠性。API 明確不穩定:在 1.0.0 之前,升級可能包含不相容的變更。變更日誌透過提交訊息前綴標明修改類型,包括 DataChange(磁碟上資料類型變化)、Change(不相容變更)、Feature(相容的新特性)和 Fix(僅修復 bug)。

專案核對 1:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|版本分支與維護策略

databendlabs-openraft-deep-analysis|版本分支與維護策略 的專案脈絡:main 分支處於活躍開發狀態,對應 release-0.10 版本線,其 crates.io 上的最新版本是 0.10.0-alpha.32 的 alpha 版本。README 警告 0.10 的 API 在最終 0.10.0 發布前仍可能變化。更早的分支 release-0.9 到 release-0.6 各有自己的最新標籤版本和升級指南:0.9 分支連結了 0.8 到 0.9 的指南,0.8 分支連結了 0.7 到 0.8 與 0.8.3 到 0.8.4 的指南,0.7 分支連結了 0.6 到 0.7 的指南。這些舊分支都不再接受新特性,只接受 bug 修復。

專案核對 2:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|框架基準測試數據及其邊界

databendlabs-openraft-deep-analysis|框架基準測試數據及其邊界 的專案脈絡:README 中的效能數據來自針對 OpenRaft 框架本身的基準測試,執行在最小化的儲存和網路上,README 明確說明這不是真實世界的應用基準。單一用戶端寫入時為每秒 33,000 次 put;64 用戶端時為 912,000,256 用戶端時為 1,808,000,1024 用戶端時為 3,006,000,4096 用戶端時為 3,548,000。每批 4 條、4096 用戶端的批次寫入達到每秒 5,615,000 次 put。基準程式碼位於 benchmarks/minimal 目錄。

專案核對 3:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|與標準 Raft 的設計差異

databendlabs-openraft-deep-analysis|與標準 Raft 的設計差異 的專案脈絡:README 列出的多項特性將 OpenRaft 與標準 Raft 區分開來。成員變更透過擴展聯合成員機製泛化,可以在一次操作中變更任意一組節點,而不是一次只變更一個節點。重新設計的 Vote 類型旨在減少選舉衝突,分裂投票不會強製進入新任期,同時保留標準 Raft 的 leader-ID 模式作為選項。實作是非同步、事件驅動的,沒有週期性的 tick,訊息會進行批次處理。儲存、網路和核心類型透過 RaftTypeConfig 可插拔,執行環境也可設定:預設使用 tokio,透過 AsyncRuntime trait 支援 compio 和 monoio,另有去除 Send 約束的單執行緒模式。測試方面使用基於 turmoil 的模擬模糊器,逐 tick 推進叢集,並在每個 tick 之後檢查論文和 TLA+ 規範中的 Raft 不變量。指標透過 watch 通道串流輸出,tracing 插樁支援編譯期日誌等級過濾。

專案核對 4:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|API 暴露的操作

databendlabs-openraft-deep-analysis|API 暴露的操作 的專案脈絡:README 列出了 OpenRaft 支援的操作:按策略或手動觸發的領導者選舉、領導者轉移、避免不必要任期遞增的預投票、非投票者(learner)角色、按策略或手動觸發的日誌壓縮(狀態機快照)、快照複製、透過聯合共識實現的動態成員變更、透過 ensure_linearizable 實現的線性一致讀取,以及透過 Raft 類型上三個獨立方法提供的指標。心跳和選舉可以在執行時期切換,快照、選舉和日誌清理可以手動觸發。單步設定變更明確不被支援;README 將其描述為聯合共識的一個受限子集,只允許一次變更一個節點。

專案核對 5:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

databendlabs-openraft-deep-analysis|已知使用方與授權條款

databendlabs-openraft-deep-analysis|已知使用方與授權條款 的專案脈絡:README 列出了多個使用 OpenRaft 的專案,包括 Databend(OpenRaft 在其中擔任 meta-service 叢集的共識引擎)、CnosDB、RobustMQ、RocketMQ-rust、Hiqlite 等,涵蓋訊息佇列、時序資料庫和嵌入式 SQLite。README 邀請使用方透過 issue 或 pull request 將專案加入該列表。OpenRaft 採用 MIT 或 Apache License 2.0 雙授權,由使用者任選其一。README 與所附授權文字均未提及支援、擔保或安全態勢;倉庫元資料將 SPDX 識別碼記為 Apache-2.0。

專案核對 6:請在 databendlabs-openraft-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

編輯結論

README 列出的使用方包括 Databend、CnosDB、RobustMQ、RocketMQ-rust、Hiqlite 等,專案採用 MIT 或 Apache-2.0 雙授權,由使用者任選其一。0.10 版本線仍處於 alpha 階段,混沌測試尚未完成,1.0.0 之前 API 不保證穩定。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記