Raft合意によりノード間で複製される、SQLiteベースの軽量で耐障害性に優れた分散リレーショナルデータベース。
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
Go 1.16 以降がインストールされていることを確認してください
go version - 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 の数値は毎日更新されます。
関連プロジェクト
Apache ZooKeeperは、分散システムにおける設定管理、名前解決、同期のための階層型キーバリューストアを提供する分散調整サービスです。
RaftコンセンサスとgRPC APIを基盤とする、分散システムの重要データ向けの分散型・高信頼キー・バリューストア。
関数型コードにサーキットブレーカー、レート制限、リトライ、バルクヘッド、タイムリミッターを追加できる軽量なJava向けフォールトトレランスライブラリ。
依存先への呼び出しが失敗し続けたときに遮断し、システムの他の部分を保護する、Circuit BreakerパターンのPython実装です。
プラグイン可能なコンポーネントを備えた、エンタープライズ向けブロックチェーンソリューションやアプリケーションを構築するためのGo製許可型分散台帳フレームワークです。