Paxos(ぱっくす)
最終更新:2026/4/25
Paxosは、分散システムにおける合意形成のためのプロトコルである。
別名・同義語 分散合意アルゴリズム合意形成プロトコル
ポイント
Paxosは、耐障害性と一貫性を保証するために設計されており、分散データベースや分散ロックなどの分野で利用される。
Paxosとは
Paxosは、レスリー・ラポートによって1989年に発表された分散合意アルゴリズムです。分散システムにおいて、複数のプロセスが単一の値について合意を形成するためのプロトコルであり、耐障害性と一貫性を保証します。
Paxosの基本的な仕組み
Paxosは、プロポーザー、アクセプター、ラーナーという3つの役割を持つプロセスで構成されます。プロポーザーは値を提案し、アクセプターは提案された値を受け入れまたは拒否し、ラーナーは受け入れられた値について学習します。
Paxosの基本的な流れは以下の通りです。
- 準備段階 (Prepare Phase): プロポーザーは、一意の提案番号を生成し、アクセプターに準備リクエストを送信します。
- 提案段階 (Accept Phase): アクセプターは、過去に受け入れた提案番号よりも大きい提案番号の準備リクエストに対してのみ、提案を受け付けます。プロポーザーは、受け入れ可能なアクセプターに対して提案を送信します。
- 学習段階 (Learn Phase): アクセプターは、受け入れた値をラーナーに通知します。ラーナーは、受け入れられた値について学習し、合意された値として確定します。
Paxosのバリエーション
Paxosには、マルチPaxos、Raftなど、様々なバリエーションが存在します。マルチPaxosは、複数の値を連続して合意させるための最適化されたアルゴリズムであり、RaftはPaxosをより理解しやすく実装しやすくしたアルゴリズムです。
Paxosの応用例
Paxosは、分散データベース(Google Spannerなど)、分散ロック(ZooKeeperなど)、分散キュー(Kafkaなど)など、様々な分散システムで利用されています。特に、耐障害性と一貫性が重要なシステムにおいて、Paxosは重要な役割を果たしています。