Interactive
Paxos合意アルゴリズム可視化
Paxosは、複数のノードが同時に異なる値を提案しても、最終的にただ1つの値に収束することを保証する分散合意アルゴリズムです。 Proposer 2台・Acceptor 3台のシーケンス図で、Prepare→Promise→Accept→Acceptedの2往復をステップ再生できます。 正常系に加え、2つのProposerが競合するケースと、既に決まった値を後から引き継ぐケースを切り替えて、 なぜPaxosが「安全」なのかを体感できます。
競合なし。Prepare→Promise→Accept→Acceptedの2往復で"Blue"が決定
PreparePromiseAcceptAccepted拒否判定・結果
1 / 14
フェーズ1a: PrepareProposer 1 → Acceptor 1
1. Prepare(1)
n = 1提案番号1で「これから提案するので、これより小さい番号の提案は今後拒否してほしい」と依頼する(フェーズ1a)。
ここが分かる
- Acceptorは「これより小さい提案番号は今後拒否する」という片道の約束をするだけ。値そのものを検証したり合意したりはしない——これがPaxosの手続きを単純に保っている。
- Proposerが過半数からPromiseを得た際、もしAcceptorの誰かが既にaccept済みの値を報告してきたら、自分の希望を捨ててその値を使わなければならない。これにより、一度過半数に受理された値は、後からより大きい番号で提案し直されても変わらない。
- 過半数(quorum)の考え方が核心:2つの過半数は必ず1台以上のAcceptorで重なるため、異なる値が同時に過半数を得ることは起こり得ない。だから複数のProposerが競合しても、決定される値は1つに収まる。