Raft (アルゴリズム)

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の実装の一覧