Raft (アルゴリズム)
表示
Raftコンセンサス・アルゴリズムのマスコット。 | |
クラス | コンセンサス・アルゴリズム |
---|
この記事は英語版の対応するページを翻訳することにより充実させることができます。(2022年10月) 翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
|
Raftは、Paxos系のアルゴリズムの代替として設計されたコンセンサス・アルゴリズムである。ロジックを分離することでPaxosよりも理解しやすくすることを意図して設計されているが、安全性が形式的に証明されており、いくつかの追加機能も提供する[1]。Raftは、コンピューティング・システムのクラスター全体にステートマシンを分散する汎用的な手段を提供し、クラスター内の各ノードが同じ一連の状態遷移に合意することを保証する。多数のリファレンス実装がオープンソースで公開されており、Go、C++、Java、Scalaには、完全な仕様の実装が存在する[2]。Raftという名前は、「Reliable, Replicated, Redundant, And Fault-Tolerant」に由来する[3]。
Raftはビザンチン障害に対して耐久性のあるアルゴリズムではなく、各ノードは選出されたリーダーをそのまま信頼する[1]。
プロダクションでの利用
- CockroachDB- レプリケーションレイヤーでRaftを利用している[4]。
- Etcd - 可用性の高いレプリケーションログを管理するためにRaftを利用している[5]。
- MongoDB - レプリケーションセット内でRaftの変種を利用している。
- Splunk - EnterpriseのSearch Head Cluster(SHC)でRaftを利用している[6]。
- TiDB - ストレージエンジンTiKVでRaftを利用している[7]。
- YugabyteDB - DocDB Replication内でRaftを利用している[8]。
出典
- ^ a b Ongaro, Diego (2013年). “In Search of an Understandable Consensus Algorithm”. 2022年10月13日閲覧。
- ^ “Raft Consensus Algorithm” (2014年). 2022年10月13日閲覧。
- ^ “Why the "Raft" name?”. groups.google.com. 2022年10月13日閲覧。
- ^ “Replication Layer | CockroachDB Docs”. www.cockroachlabs.com. 2022年6月21日閲覧。
- ^ “Raft README”. github.com. 2022年8月25日閲覧。
- ^ “Handle Raft issues” (英語). Splunk (2022年8月24日). 2022年8月24日閲覧。
- ^ “Raft and High Availability” (英語). PingCAP (2021年9月1日). 2022年6月21日閲覧。
- ^ “Replication | YugabyteDB Docs”. www.yugabyte.com. 2022年8月19日閲覧。