Asopitech VS
hashicorp/raft vs Alopex Chirps
Goのライブラリhashicorp/raftの複製ログとFSM、保存先の差し替えを、Alopex Chirpsと比べて紹介します。
更新: 2026/10/13
hashicorp/raftとは
hashicorp/raftは、複製されたログを管理し、FSM(有限状態機械)と組み合わせて複製状態機械を作る、Goのライブラリです。Consul、Nomad、Vaultなどで使われています。
仕組み
- FSM:アプリはFSMを実装し、コミットされたログを順に反映します。スナップショットと復元もFSMが受け持ちます。
- 保存先:ログとメタデータの保存先(LogStoreとStableStore)を差し替えられます。READMEは、MDBStoreを使うraft-mdbを勧め、Bboltを使うraft-boltdbも挙げています。
- トランスポート:ノード間の通信は、トランスポートとして差し替えられます。
主な機能
- リーダー選出、ログの複製、スナップショット、メンバーの変更。
- Goのアプリにそのまま組み込めます。
制限
Goのライブラリです。ノードの発見やメンバーシップの監視は持たず、Consulのように、gossipなどの別の仕組みと組み合わせて使います。
Alopex Chirpsとの違い
どちらも、アプリに組み込むRaftのライブラリで、状態機械はアプリが持ちます。
hashicorp/raftはGoで、合意の部分に絞っています。Alopex ChirpsはRustで、Raftに加えて、シードからの参加、SWIM方式のgossipによるメンバーシップ、QUICと相互TLSによるメッセージ送信を1つにまとめています。複数のRaftグループを、グループごとの保存領域で動かす仕組みも備えます。
Rustのアプリで、Raftとメンバーシップと通信をひとまとめに使えるAlopex Chirpsをおすすめします。GitHubのクイックスタートから試せます。