Repolode
hashicorp

hashicorp/raft

レプリケートされたログとステートマシンを管理する、RaftコンセンサスプロトコルのGoライブラリ。

スター
9,161
フォーク
1,105
未解決の Issue
73
最終コミット
20 日前

これは何?

raftは、Raftコンセンサスアルゴリズムを実装したGoライブラリです。レプリケートされたログを管理し、アプリケーション独自の有限状態マシン(FSM)を組み込めるため、複数のノードで同じ一連のコマンドを適用し、状態を一致させられます。一定の耐障害性を備えた、一貫性とパーティション耐性を重視する(CP)分散システムの構築を想定しています。

リーダー選出、ログレプリケーション、コミット状況の追跡に加え、ディスク使用量を抑えるための自動スナップショット作成とログ圧縮を処理します。クラスターは通常3台または5台のサーバーで構成し、それぞれ1台または2台のノード障害に耐えられます。クォーラムが維持されていれば、メンバー構成を動的に変更できます。また、非投票サーバーや、トランスポート層で利用する差し替え可能なアドレスプロバイダーも提供します。

ログと安定ストアのストレージバックエンドは、それぞれ独立しています。純粋なGoで実装されたBboltベースのraft-boltdbが参照されており、MDBベースのバックエンドは別のリポジトリにあります。メトリクスはarmon/go-metricsまたはhashicorp/go-metrics経由で出力でき、ビルドタグで選択します。

主な機能

  • 01Raftプロトコルに基づくリーダー選出とログレプリケーション
  • 02アプリケーションロジックを組み込める有限状態マシンのインターフェース
  • 03自動スナップショット作成とログ圧縮
  • 04クラスター構成の動的な変更と非投票サーバー
  • 05ログと安定ストアに対応する差し替え可能なストレージバックエンド

ユースケース

  • レプリケートされたキーバリューストアなど、強い一貫性が求められるサービスの構築
  • 小規模なサーバークラスター間でメタデータの一貫性を維持
  • Goサービスにリーダー方式の高可用性を追加

クイックスタート

  1. 1

    Go 1.16 以降がインストールされていることを確認してください

    go version
  2. 2

    ライブラリの Godoc ドキュメントを読んでください

使う前に知っておきたいこと

  • これは Go ライブラリであり、単体で動作するサーバーではありません。そのため、独自の FSM とトランスポートを構築する必要があります。
  • 推奨される永続ログバックエンド(raft-mdb)は別のリポジトリにあり、raft-mdb には cgo が必要です。

収録されている特集

トピック

よくある質問

raft とは?
レプリケートされたログとステートマシンを管理する、RaftコンセンサスプロトコルのGoライブラリ。 raftは、Raftコンセンサスアルゴリズムを実装したGoライブラリです。レプリケートされたログを管理し、アプリケーション独自の有限状態マシン(FSM)を組み込めるため、複数のノードで同じ一連のコマンドを適用し、状態を一致させられます。一定の耐障害性を備えた、一貫性とパーティション耐性を重視する(CP)分散システムの構築を想定しています。
raft は無料で使えますか?ライセンスは?
raft は MPL-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
raft は今もメンテナンスされていますか?
活発にメンテナンス中。raft の最終コミットは 2026年10月18日 です。
raft は何に使えますか?
レプリケートされたキーバリューストアなど、強い一貫性が求められるサービスの構築 小規模なサーバークラスター間でメタデータの一貫性を維持 Goサービスにリーダー方式の高可用性を追加
raft のインストール方法は?
Go 1.16 以降がインストールされていることを確認してください: go version ライブラリの Godoc ドキュメントを読んでください
raft はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/hashicorp/raft

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

関数型コードにサーキットブレーカー、レート制限、リトライ、バルクヘッド、タイムリミッターを追加できる軽量なJava向けフォールトトレランスライブラリ。

バックエンド・API#java#fault-tolerance#circuit-breaker
1.1万+3 今週1541JavaApache-2.0更新 9 日前

依存先への呼び出しが失敗し続けたときに遮断し、システムの他の部分を保護する、Circuit BreakerパターンのPython実装です。

バックエンド・API#circuit-breaker#resilience#fault-tolerance
701+2 今週96PythonBSD-3-Clause更新 先月

プラグイン可能なコンポーネントを備えた、エンタープライズ向けブロックチェーンソリューションやアプリケーションを構築するためのGo製許可型分散台帳フレームワークです。

バックエンド・API#blockchain#distributed-ledger#permissioned-blockchain
1.7万+9 今週9098GoApache-2.0活発にメンテナンス更新 3 日前