<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          DragonboatGo 實現的多組 Raft 庫

          聯(lián)合創(chuàng)作 · 2023-10-01 07:13

          關于

          Dragonboat 是一個高性能 Go 實現的多組 Raft 共識算法庫,它同時提供 C++11 支持。Dragonboat 是目前 github.com 上速度最快的 Raft 開源實現。

          Raft 這樣的共識算法使得只要系統(tǒng)中的多數成員在線便可使得系統(tǒng)持續(xù)運行。比如,一個擁有 5 臺服務器的 Raft 集群中即使有兩臺服務器故障依舊可以工作。它同時向客戶端展現一個單機節(jié)點,始終提供強一致保證的數據訪存。同時,所有在線的成員節(jié)點都可用來提供讀操作,從而提供更高的讀吞吐總和。

          所有 Raft 相關的技術難點都會由 Dragonboat 來承擔,用戶從而可以只關注他們各自的應用領域。Dragonboats 使用十分簡便,詳細的例程可使新用戶在半小時內完全掌握它。

          功能

          • 便于使用的可構建單組與多組 Raft 應用的 Go 和 C++ API

          • 功能完備的多組 Raft 協(xié)議的實現,同機支持數千 Raft 組

          • 完備的測試確保正確性,這包括 Jepsen 所帶的 Knossos 強一致性檢查,部分測試日志在此

          • 全流水線設計、TLS 支持,適合被部署于跨地域的高網絡延時公網環(huán)境

          • 在中檔硬件上即可獲得約 300 萬/秒的寫或 1000 萬/秒的強一致讀的性能

          • 支持定制的 Raft log 存儲與 Raft RPC 模塊,可方便整合最新 IO 類技術產品

          • 多 Raft 組由自帶的 Drummer 服務器組件管理以獲得良好的高可用

          性能

          Dragonboat 是目前 GitHub 網站上最快的開源多組 Raft 實現。

          在三節(jié)點系統(tǒng)上,使用中端硬件,如 22 核 2.8Ghz 的 Intel 至強處理器和 NVME 固態(tài)硬盤,在 16 字節(jié)的荷載下,Dragonboat 可持續(xù)每秒 900 萬次寫或在 9:1 的高讀寫比場景下提供每秒 1100 萬次的混合讀寫操作。高吞吐在跨地域分布環(huán)境依舊被保持,在使用更多的 clients 的情況下,在 RTT 為 30ms 時依舊能實現 200 萬次每秒的 IO 操作。 

          每個服務器上可輕易承載數千 Raft 組。并發(fā)的活躍 Raft 組數量對吞吐有直接影響,而大量的閑置 Raft 組對系統(tǒng)性能并無巨大影響。 

          下表是毫秒為單位的寫延遲數據。Dragonboat 可以在處理每秒 800 萬次寫(16 字節(jié)荷載)的時候做到 P99 的寫延遲小于 5ms。讀延遲低于寫延遲,因為用于 linearizable 讀的 ReadIndex 協(xié)議無需對每個讀請求做落盤寫。

          當測試單組性能時,Dragonboat 可以在 16 字節(jié)負載下持續(xù)每秒完成 125 萬次寫,此時平均寫延遲是 1.3 毫秒,P99 寫延遲為 2.6 毫秒。上述性能是在平均單機占用三個 2.8Ghz 的核心的情況下實現的。

          即使在很高的系統(tǒng)負載下,Go 的 GC 所帶來的 Stop-the-World 停頓也顯著低于 1 毫秒。在即將發(fā)布的 Go 1.12 版中,GC 的 Stop-the-World 停頓時間將進一步大幅減低。Golang 的 runtime.ReadMemStats 顯示即使在很高的系統(tǒng)負載下,GC 也僅占用了少于 1% 的可利用 CPU 時間。 

          系統(tǒng)需求

          • x86_64 Linux 或 MacOS, Go 1.10, 1.11,支持 C++11 的近期版本 GCC 或 Clang

          • RocksDB 5.13.4 或更新的版本

          開始使用

          下載 Dragonboat 庫至您的 Go 工作環(huán)境:

          $ go get -u -d github.com/lni/dragonboat

          如果 RocksDB 5.13.4 或者更新版本尚未安裝:

          $ cd $GOPATH/src/github.com/lni/dragonboat
          $ make install-rocksdb-ull

          上述命令將把 RocksDB 5.13.4 安裝到 /usr/local/lib和/usr/local/include/rocksdb。如果 RocksDB 已經被安裝,則可跳過此步。

          運行內建測試以檢查安裝是否完成:

          $ cd $GOPATH/src/github.com/lni/dragonboat
          $ make dragonboat-test

          編譯您的應用:

          CGO_CFLAGS="-I/path/to/rocksdb/include" CGO_LDFLAGS="-L/path/to/rocksdb/lib -lrocksdb" go build -v pkgname

          上述步驟使用的是 Master branch 的代碼。Master 是用于開發(fā)的非穩(wěn)定 branch。生產環(huán)境請使用已發(fā)布版本。

          (可選)安裝 C++ Binding:

          $ cd $GOPATH/src/github.com/lni/dragonboat
          $ make binding
          $ sudo make install-binding

          (可選)運行 C++ binding測試(需 gtest 庫):

          $ cd $GOPATH/src/github.com/lni/dragonboat
          $ make clean
          $ make test-cppwrapper

          中文例程

          中文例程在這里

          項目狀態(tài)

          Dragonboat 適用于生產環(huán)境。

          開源許可協(xié)議

          本項目以 Apache License Version 2.0 授權開源,請參考 LICENSE 文件。

          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久精品久久精品 | 欧美一級黃色A片免費看野花 | 天堂va欧美va亚洲va | 日少妇逼 | 大香蕉青草 |