Raft (アルゴリズム)

出典: フリー百科事典『ウィキペディア(Wikipedia)』


Raft
Raftコンセンサス・アルゴリズムのマスコット。
クラス コンセンサス・アルゴリズム英語版

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

出典[編集]

  1. ^ a b Ongaro, Diego (2013年). “In Search of an Understandable Consensus Algorithm”. 2022年10月13日閲覧。
  2. ^ Raft Consensus Algorithm” (2014年). 2022年10月13日閲覧。
  3. ^ Why the "Raft" name?”. groups.google.com. 2022年10月13日閲覧。
  4. ^ Replication Layer | CockroachDB Docs”. www.cockroachlabs.com. 2022年6月21日閲覧。
  5. ^ Raft README”. github.com. 2022年8月25日閲覧。
  6. ^ Handle Raft issues” (英語). Splunk (2022年8月24日). 2022年8月24日閲覧。
  7. ^ Raft and High Availability” (英語). PingCAP (2021年9月1日). 2022年6月21日閲覧。
  8. ^ Replication | YugabyteDB Docs”. www.yugabyte.com. 2022年8月19日閲覧。

外部リンク[編集]