Paxosは受け入れられたコンセンサスアルゴリズムだったが、理解しにくく実装しにくかったため、それに基づいて構築された本番システムは、リーダー障害時にのみ表面化する微妙なバグを起こしやすかった。

Raftは異なる優先順位で書かれた。フォールトトレランスと性能においてPaxosと同等であり、違いは理解しやすいように設計されていることだ。著者らはコンセンサスをリーダー選出、順序どおりに複製されるログ、安全性ルールに分解した。

この分離によって、より広い層の人々が正しく実装できるようになった。理解しやすさは第一級の要件として扱われ、その結果、チームが実際に推論し出荷できるコンセンサスアルゴリズムが生まれた。

検証しなければならない人間のためにアルゴリズムを設計する

理解しやすい段階は、プログラマーが検証できるものに対応する。

コンセンサスにおける巧妙さは、実装バグを生みがちである。

より広範な正しい採用は、わずかな性能上の優位に勝る。

正しさが多くの他者が正しく行うことに依存する場合、難しいものを検証しやすくせよ。単に巧妙なだけの設計は、優雅さで得るものよりもバグによるコストの方が大きい。

Raftはetcd、Consul、CockroachDBなど多くの分散システムに採用され、エンジニアがコンセンサスを学び構築するための既定の方法となった。

出典をたどる

出典

  1. In Search of an Understandable Consensus Algorithm (Raft) Stanford University · raft.github.io
  2. etcd documentation etcd · etcd.io