Raftは、Paxos系のアルゴリズムの代替として設計されたコンセンサス・アルゴリズムである。ロジックを分離することでPaxosよりも理解しやすくすることを意図して設計されているが、安全性が形式的に証明されており、いくつかの追加機能も提供する。Raftは、コンピューティング・システムのクラスター全体にステートマシンを分散する汎用的な手段を提供し、クラスター内の各ノードが同じ一連の状態遷移に合意することを保証する。多数のリファレンス実装がオープンソースで公開されており、Go、C++、Java、Scalaには、完全な仕様の実装が存在する。Raftという名前は、「Reliable, Replicated, Redundant, And Fault-Tolerant」に由来する。

Raftはビザンチン障害に対して耐久性のあるアルゴリズムではなく、各ノードは選出されたリーダーをそのまま信頼する。

プロダクションでの利用

- レプリケーションレイヤーでRaftを利用している。 - 可用性の高いレプリケーションログを管理するためにRaftを利用している。 MongoDB - レプリケーションセット内でRaftの変種を利用している。 Splunk - EnterpriseのSearch Head Cluster(SHC)でRaftを利用している。 TiDB - ストレージエンジンTiKVでRaftを利用している。 YugabyteDB - DocDB Replication内でRaftを利用している。

出典

外部リンク

Raftの実装の一覧