【パクソス】

Paxos とは?

💡 バラバラなサーバーたちを「多数決」でまとめる数学の処方箋
📌 このページのポイント
Paxos — 分散合意の2フェーズプロトコル Proposer 提案者 Acceptor1 賛成者 Acceptor2 賛成者 Acceptor3 障害中 Learner 学習者 Prepare Promise Accept! 合意通知 過半数(2/3)の承認で合意成立 — Acceptor3が落ちても動作 ✓ Acceptor1 + Acceptor2 = 過半数OK フェーズ1: Prepare/Promise フェーズ2: Accept/Accepted
Paxos:Proposer・Acceptor・Learnerの3役割と2フェーズで障害時も合意形成できる
ひよこ ひよこ

Paxosって変わった名前だね。何の略なの?

ペンギン先生 ペンギン先生

略語じゃないよ。ギリシャのパクソス島が由来なんだ。考案者のランポートさんが「パクソス島の議会がどうやって決議するか」という架空の話で説明したことからこの名前がついたんだよ。

ひよこ ひよこ

分散システムの合意アルゴリズムって何なの?

ペンギン先生 ペンギン先生

複数のサーバーが協力して何かを決める仕組みだよ。例えば「次のリーダーはサーバーAにする」という決定を、ネットワークが不安定だったり一部のサーバーが落ちていても正しく行えるようにするんだ。

ひよこ ひよこ

サーバーが落ちてても決められるなんてすごいね!どうやってるの?

ペンギン先生 ペンギン先生

「多数決」の考え方がベースだよ。Paxosでは提案者(Proposer)が値を提案して、賛成者(Acceptor)の過半数から承認を得られたら合意成立という流れになっているんだ。過半数が揃えば残りが落ちていても大丈夫なんだよ。

ひよこ ひよこ

じゃあ簡単そうに聞こえるけど、難しいって聞いたことあるよ?

ペンギン先生 ペンギン先生

実際にはかなり難解でね、ネットワーク遅延やメッセージの重複・消失なども考慮した2フェーズの通信プロトコルになっているんだ。ランポート自身も「理解するのは難しい」と言っているほどで、実装しやすいRaftという後継アルゴリズムが生まれた背景もそこにあるよ。

ひよこ ひよこ

Raftって聞いたことある!Paxosの代わりに使うの?

ペンギン先生 ペンギン先生

目的は同じだけど、RaftはPaxosの難しさを解消するために「理解しやすさ」を重視して設計されたんだ。etcdConsulなどの分散ツールはRaftを採用していることが多いよ。でもPaxosはコンセンサスアルゴリズムの理論的な土台として今でも重要なんだよ。

ひよこ ひよこ

GoogleのSpannerもPaxosを使ってるって聞いたよ!

ペンギン先生 ペンギン先生

その通り!GoogleのSpannerやMega-storeはPaxosベースの実装を使っているんだ。ZooKeeperが使うZABプロトコルもPaxosから影響を受けているよ。巨大なシステムを支える重要な理論なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Paxos」って出てきたら「分散システムで障害があっても合意を取れる難解なアルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Paxos」 = パクソス島
💬 考案者のレスリー・ランポートがギリシャのパクソス島の架空の議会になぞらえて説明したことから、このアルゴリズムはPaxosと呼ばれるようになったんだよ。
← 用語集にもどる