64
Paxos 株株株株株株株株株株株株株株株株株株株株株 2012 株 7 株 5 株

Paxos

  • Upload
    nobuk

  • View
    1.440

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Paxos

Paxos

株式会社プリファードインフラストラクチャー

2012 年 7 月 5 日

Page 2: Paxos

自己紹介

久保田展行 (@nobu_k) 製品開発部

Sedue/Bazil (Jubatus)

ブル 最近勉強してるもの

開発手法:要件定義・管理 本

Transactional Information Systems(@ ノーチラス )

– 約 1 年で念願のリカバリーまで到達・・・! 分散 DB 本

2

Page 3: Paxos

今日の話

Paxos Consensus algorithm(protocol) の 1 つ ものすごく難しいことで有名 ( 主に元論文が )

流れ Consensus 問題設定 Paxos ( ちょびっとだけ )Multi-Paxos 参考文献紹介

日本語の文献が少なく、用語が怪しいですすいません

3

Page 4: Paxos

ConsensusPaxos の説明を始める前に

4

Page 5: Paxos

Consensus( 合意 ) とは

Consensus とは プロセスの集合が 1 つの値において合意を取ること 分散システムにおける重要な問題の 1 つ

5

どれか 1 つを選択

B

A

C D

E

つけ麺

ロンアール

ロンアール

ロンアール

Red Bull

「お昼どうする?」

Page 6: Paxos

Consensus algorithm はなぜ必要か

分散システムで高可用性 (High Availability) を実現するため 高可用性を実現する方法は「冗長化」ただ 1 つ

ハードウェア障害は防げない

6

Page 7: Paxos

状態を持つ (stateful な ) ソフトウェアを冗長化する 状態を持つソフトウェアを冗長化するには

レプリケーション State machine replication

命令の列を全レプリカに同じ順序で適用する

7

Page 8: Paxos

命令の列をすべてのレプリカに同じ順序で届ける

レプリカ毎に命令の順序が変わると、レプリカの状態も変わる i 番目の命令として何を採用するかに対して合意を取る

すべての i に対して合意を取る ここで Consensus が必要 しくじると状態の違う (inconsistent な ) レプリカができあがる

補足: Atomic broadcast 全順序付きのブロードキャスト すべてのプロセスが同じ順序でメッセージを受け取る メッセージはすべてのプロセスに到達するか、全く到達しないか

のどちらか

8

Page 9: Paxos

分散システムで合意を取るのはなぜ難しいのか

CC が使えないメールを利用して、集合場所を決めることを考える ただし、メールには到達保証がない ( 到達確認ができない ) 参加メンバーだけはわかっている 誰が取り仕切るかは決まっていない 他のメンバーが今何をしているのかはわからない

せっかくメール送ったのに返信が来ない・・・考えられる状況は メールは届いてない メールは届いてるけど仕事中で返信できない メールは返信されたけど、届く前に消えてしまった・・・

他のやっかいな問題 取り仕切り役が 2 人同時に、別々の集合場所を提案 音信不通の人が途中から復帰してくるけど議論に追いつけない

9

Page 10: Paxos

Consensus が必要とされるほかのところ

分散トランザクション トランザクションを Commit するか、 Abort するか 全員が同じ選択をしないと一貫性 (consistency) がオワコンに

メンバシップ管理 協調動作しているグループのメンバを管理する

メンバが追加されるとき、削除されるときに合意を取る 全員が常に同じメンバを見ている状態を維持

リーダー決定 リーダーは 1 プロセス (1 人 ) であるように決定する

人間的な問題 「お昼どこに行く?」、「明日どこに集合する?」 CC が使えないメールのみで合意を取れるか

10

Page 11: Paxos

問題設定

11

Page 12: Paxos

Consensus problem の設定

プロセス 合意を取りたいグループのメンバ (活動単位みたいなやつ )

主に Paxos における役割 (Role) Proposer

値を提案する Accepter

値を受理する Learner

ある値に関して合意が取れたことを確認する プロトコルによってはいない

1 プロセスがすべての役割を担ってもいい Proposer&accepter&learner兼任のプロセスだけでの構成も可

12

Page 13: Paxos

プロトコルが満たすべき性質

安全性 (safety) に関わる性質 ゆるふわバージョン Proposer が提案された値のみが選択される

誰も提案していない謎の値は選択されない ただ 1 つの値のみが選択される

正しく動作しているすべてのプロセスは同じ値を選ぶ 値が実際に使われるのは選択された後

先走り防止

その他の性質 (liveness) 停止保証 : 有限時間で値が選択されることを保証

13

Page 14: Paxos

問題があまりない状態での Consensus

想定する状況 メッセージは必ず届く メッセージは壊れない すべてのプロセスが同じ速度で処理を進める 障害は 100%検知できる 停止したプロセスは復活しない (fail-stop)

常にこの状態だと楽ちん

14

Page 15: Paxos

現実の問題

分散システム的な問題設定 処理に任意の時間がかかる、しかもプロセス毎に進行速度が違う 通信に任意の時間がかかる、メッセージが失われる可能性がある 停止したプロセスが、あとで復旧する可能性がある (fail-recover) しかし、メッセージが壊れた状態で到達しない (non-Byzantine)

15

A1働きたくないでござる (ゆっくり進行 )

メール返したくないでござるP1

これコミットしていいですか?

A2

A3

A4

メール届かない

一時間寝ます

Page 16: Paxos

補足: Synchronous/Asynchronous system model 同期、非同期、分散システムではちょっと意味が違う

特に元々 lock-free とかしてた人にとっては・・・w 佐藤先生つぶやきが togetter にまとめられている

Google Spanner まとめ http://togetter.com/li/317139

Synchronous system model 先ほど「問題があまりない」と紹介した例 純粋にアルゴリズムを検証するのに便利なモデル

Asynchronous system model 問題しかない、なにが起こってもおかしくない方のモデル このモデルで正しく動けば、すべての状況で正しく動くんでは!

16

Page 17: Paxos

補足: FLP impossibility

分散システム界隈でよく見かける定理

非同期システムでは、たとえメッセージのロスがなくても、プロセスが 1台でも停止する可能性がある限り、 100% 合意に至れるConsensus アルゴリズムは存在しない Paxos も例外ではない!

注意 100% 合意に至れないだけで、大体のケースでは合意に至れる 「 100% の確率で完了するアルゴリズム」が存在しないことの証

17

Page 18: Paxos

Paxos

18

Page 19: Paxos

Paxos とは

非同期システム上での Consensus protocol の 1 つ 1989 年 ( 有名な論文が出たのは 1998 年 ) Lamport先生

分散アルゴリズムの神 名前はギリシャの Paxos島から

そこの議会の仕組み (fiction) が元ネタになってるらしい Chubby で一気に有名になった

相当やばい状態でも動く 2PC 、 3PC の問題を解決している

19

Page 20: Paxos

説明の流れ

Paxos made simple に従って話を進める Lamport先生の論文 ( というか記事? ) 2001 年

まずは単純なモデルを構築 徐々に問題を解決しながら完成に近づけていく

1回の Paxos インスタンスに関する説明 1 つの値に対して合意を取る一連の処理をインスタンスと呼ぶ State machine replication は i 番目の命令毎にインスタンスを実

行して実現する

20

Page 21: Paxos

単純な方法

Proposer 1台、 accepter 1台 Proposer の提案が accepter に渡った段階で値が選択される

問題 Proposer 、 accepter どちらが停止してもプロトコルが停止する

解決策 Proposer 、 accepter が複数台いる構成にする まずは accepter が複数いる状況を考える 次に proposer が複数いる状況を考える

21

Page 22: Paxos

複数 accepter を使って合意を取る

手順 Proposer が複数の accepter に提案を送る Accepter は値を受理 (accept) してもいいし、しなくてもいい 十分に多く (以後”過半数” ) の accepter が受理した値を選択する

例:過半数、 Quorum Accepter 集合の部分集合の集合で、任意の 2 つの要素 ( 部分集

合 ) が 1 つ以上の共通する要素 ( プロセス ) を持つ Accepter が 1 つの提案しか受理しないようにすれば動く

問題 Accepter が全部の提案を拒否すると提案を選択できない

制約 P1. Accepter は最初に受け取った提案を受理しなければならな

い22

Page 23: Paxos

Proposer を複数用意する

複数台用意できれば、 1台停止しても怖くない しかし、メッセージロスが絶妙に積み重なった状況を考える

N台の accepter はすべて値を受理している 全体で M個の値が受理されている しかし、どの値も過半数の accpeter から受理されていない

23

A1

A2

A3 A4

A5

3 提案

Page 24: Paxos

複数 proposer での問題

問題 M=2 の状況でも 1台の accepter の障害でプロトコルが停止する

かも 解決策

Accepter が複数の提案を受理できるようにする 値の上書きを許す

2F+1台構成で F台までの障害は許容したい 今だと何台構成でも 1台の障害しか

許容できない状況 もちろんワーストケースの話

24

^o^

A2

A3 A4

A5

Page 25: Paxos

提案 ID(proposal number) の導入

Accepter が複数の提案を受理できるようにするために・・・ 提案に全順序付きの ID を付ける 混乱をなくすため、すべての提案がユニークな ID を持つようにす

る 値は同じでも、提案自体は違うことを識別したい

ID は単調増加する (連番である必要はない ) データの例

提案 : ( 提案 ID, 値 ) 提案 ID: (数値 , プロセスの ID)

プロセスの ID はユニークなものを採用 その他

複数の ID が異なる提案が同じ値を持つことはある 同じ ID の提案は、同じ値しか持たない

25

Page 26: Paxos

提案の選択と提案の上書きによる問題

「値 v を持つ提案が選択された」とは 過半数の accepter が値 v を持つ提案を受理した場合、提案が選択

されたという 値が選択された後も、提案を送ることは可能

N/2+1台の accepter にだけ受理された状態で accepter が 1台

停止するとよくわからないことになるため

受理した提案を上書きすることによる問題 一度選択された (過半数の accepter から受理された ) 値を変更で

きる “ただ 1 つの値のみが選択される”という性質に違反する もう 1 つ制約が必要

26

Page 27: Paxos

もう 1 つの制約

P2. 一度値 v を持つ提案が選択されたら、より大きな ID を持つ提案が選択される場合、その提案の値は v でなければならない

これで、提案選択後に選択された提案の値以外で上書きされることを防げる

具体的にどうやってこの制約を実現するのか 少なくとも accepter には制約が必要 このことを考慮して P2 を少し修正する

27

Page 28: Paxos

P2 の修正

提案が選択されるためには、最低でも 1 つの accepter に受理されなければならない これを考慮して P2 を少し修正

P2a. 値 v を持つ提案が選択されたら、任意の accepter に受理されるより大きな ID を持つ提案の値は v でなければならない

しかし、このままでは P1 を満たせない・・・ P1. Accepter は最初に受け取った提案を受理しなければならない

28

Page 29: Paxos

P1 と P2a の問題

問題が起こる状況 提案が選択されている しかし、まだ提案を 1度も受け取っていない accepter もいる その accepter に違う値を持つ提案が送られる P1 により、その accepter は提案を受理しなければならない

29

A1

A2

A3 A4

A5

最初の提案は受理するんだろオラァ

やめて\ (^o^)/

Page 30: Paxos

補足:現段階での疑問

いずれにせよ過半数は維持できているため大丈夫では? この問題を放置すると今後の制約を洗練させる際の支障に・・・ 具体的には、最も大きな提案 ID を利用して選択済みでない値を提

案できるのが問題 今は、とりあえずこうしないと無理と思って続ける

30

A1

A2

A3 A4

A5

/ (^o^)\

Page 31: Paxos

P2a の修正

結局 proposer側にも制約をかけるしかない

P2b. 値 v を持つ提案が選択されたら、任意の proposer からリクエストされる、より大きな ID を持つすべての提案の値は v でなければならない

P2b を満たせば P2a を満たし、 P2a を満たせば元々の P2 を満たす

Proposer は選択されている値しか提案できないため P1 を維持可能

では P2b をどうやって満たすか

31

Page 32: Paxos

提案が選択されている状況を考える

ある提案が選択されていると言うことは・・・ その提案を受理した Accepter 集合の部分集合 S が存在する S は過半数 (※) の accepter で構成される

ということを元に、本当はかっこよく帰納的に説明するんですが!

32

A1

A2

A3 A4

A5

※特定の性質を満たせば 過半数である必要は無い

Page 33: Paxos

しょぼい説明

提案を行う前に、過半数の accepter に対して現在受理している提案を確認すればよくない? もし提案が受理されてたら、とりあえず ID が一番大きな提案の値

をもう一度提案しとけばいいよね 提案が選択された後でも大丈夫そう!? うまくいくっぽくね!?

詳細は Paxos made live を参照

33

A1

A2

A3 A4

A5ほんとは を提案したいけど今一番新しい提案は だから を提案しておこう・・・

Page 34: Paxos

P2b の修正

P2c. 値 v を持つ ID が n の提案が proposerより出た場合、次のような accepter の集合 S が存在しなければならない S には過半数の accepter が含まれる S に含まれるどの accepter もまだ ID が n未満の提案を受理し

ていない (proposer が好きな値を提案できる状況 ) S に含まれる accepter が受理した ID が n未満の提案のうち、

一番大きな ID を持つ提案の値は v である まだまだ問題はある!

確認した中で一番大きな提案の ID は m だった。 ID n(>m) で提案を行ったが、その途中で ID m’(<n かつ >m) の

提案が割り込んだ。しかも m’ の提案は自分とは違う値を持ってい

た。 そして m’ の提案が選択されてしまっていた・・・!

34

Page 35: Paxos

Prepare&Promise

自分の提案 ID が提案時点で最大であることを保証したい 確認時点では無くて、自分が提案する時点で最大であることを保

証 しかし未来を予測するのは難しい・・・

状況を確認してから提案するまでに状態が変わったらどうしよう

Prepare(n) メッセージの導入 自分もうすぐ提案するので、今後 ID が n未満の提案は無視して! これで少なくとも自分より古くなる予定の提案は全部拒否できる Prepare を受け取った accepter は約束を必ず守ること!

Promise Accepter の Prepare に対する返信、受理するか拒否するか 自分が現在受理している提案を返す (ID と値 )

35

Page 36: Paxos

Accept

Prepare(n) のレスポンスを過半数から受け取ったら提案を送る 過半数から受け取れないと正確に現状を判断できない

P2c に従って値を提案 Accept(n, v)

n は Prepare した提案 ID v は値

Accepter はどう対応すべきか nよりも大きな ID で Prepare されていたら Accept を拒否 Prepare されていた ID の場合は受理し Accepted メッセージを返

信 Accept に渡された ID が、現在 Prepare で受理した IDよりも大

きい場合も Accept しちゃって問題ない 過半数は Prepare を受理しているはずなので、制約は崩れない

36

Page 37: Paxos

最後の修正と制約のまとめ

P1a. Accepter は nより大きな Prepare リクエストを受理していないとき、またそのときに限り、 ID が n の提案を受理できる

P2c. 値 v を持つ ID が n の提案が proposerより出た場合、次のような accepter の集合 S が存在しなければならない S には過半数の accepter が含まれる S に含まれるどの accepter もまだ ID が n未満の提案を受理し

ていない S に含まれる accepter が受理した ID が n未満の提案のうち、

一番大きな ID を持つ提案の値は v である

37

Page 38: Paxos

Paxos できた?

なんかそれらしくなった気がする 今まで出てきた制約をまとめてみる フェーズを 2 つに分けて考える

フェーズ 1: Prepare&Promise メッセージのやりとり フェーズ 2: Accept&Accepted メッセージのやりとり

Promise や Accepted で返す情報を増やすことにより若干最適化可

Learner はもうちょっと後で出てくる

38

Page 39: Paxos

Paxos: フェーズ 1 Prepare

Proposer は Prepare(n) メッセージを過半数の accepter に送る N はこれから送ろうと思っている提案の ID(proposal number)

Accepter から Promise メッセージが返ってくるのを待つ 補足:非同期なので、適当にタイムアウトを設定して待つ

適当な時間が経過したらもう一度リクエストを投げればいい

39

Page 40: Paxos

Paxos: フェーズ 1 Promise

Accepter は Prepare(n) を受け取ったら Promise レスポンスを返す n が Promise済みの提案 IDよりも大きかった場合は受理

提案を受理していた場合は、その提案 (ID と値を含む ) を返す 提案を受理していなかった場合は nil っぽいものを返す

そうでない場合は拒否 拒否した場合は、現在受理している提案 ID を返す

40

Page 41: Paxos

Paxos: フェーズ 2 に入る前に

次の状況になったら Prepare からやり直し 1台以上の accepter に拒否された

拒否レスポンスの中から、最大の提案 ID を選択 それより大きな ID で Prepare し直し

拒否はされなかったが、過半数のレスポンスを回収できなかった 安全な判断ができないのでやり直し

41

A1

A2

A3 A4

A5

が過半数かどうかわからないからやり直そう

Page 42: Paxos

Paxos: フェーズ 2 Accept

Proposer は accepter に Accept(n, v) を送る n は Prepare した提案の ID v は値 Accept を送る対象の accepter は、 Promise を受け取ったもので

なくてもいい v は次のように決める

提案を受理していた accepter がいた場合は、返ってきたレスポン

スのうち最も大きな ID を持つ提案の値を v として採用 どの accepter も値を受理していなかった場合は、自分の好きな値

を v として採用 P2c の話

42

Page 43: Paxos

Paxos: フェーズ 2 Accepted

Accepter は Accept(n, v) を受け取る n が Promise した提案 ID以上の値だったら受理 そうでなかったら拒否

Accepter はどのような状況下で Prepare や Accept を受け取ってもそれらを無視していい 「無視していい」とは

メッセージが失われてもいい 障害が起こったりしてリクエストに応えられなくてもいい

レスポンスが返ってこないからといって死亡判定する必要も無い 安全!!

43

Page 44: Paxos

停止保証

FLP impossibility! Paxos にも合意に至れないパスがある Proposer 2台がより大きな値で Prepare し続けると・・・

この問題をなくすことは不可能 発生率を減らすにはどうすればいいか

44

Proposer1 Accepter Proposer2

Prepare(n)Prepare(n+1)

Prepare(n+2)Prepare(n+3)

Prepare(n+4)…

Accept できない

(#^ω^) ビキビキ

Page 45: Paxos

停止しなくなる確率を下げる

解決策 Proposer のリーダーを 1台選び、それだけが提案できるようにす

る Distinguished proposer

現実的には Paxos のフェーズ 2回分を独立して実行するのに十分な時間、1台の proposer だけが動けば OK

リーダーの選び方は・・・ また別の機会に

45

Page 46: Paxos

安全性に関して

Proposer が 2台以上いると停止は保証されないことはわかった しかし、リーダーが誤って 2台以上同時出現することもある

Split brain リーダーが 1台しか出てこないようにすることはたぶん不可能!

Paxos はリーダーが複数台いても安全性は守られる 停止保証がなくなるだけ 2 つ以上の提案が選択されることはない 謎の提案が選択されることもない

46

Page 47: Paxos

提案 ( 値 ) が選択されたことの確認

提案を安全に選択する手段は確立できた 提案が選択されたことはどうやって確認する?

Learner ががんばる

Accepter は勝手に提案が選択されたと判断してはいけない 提案を上書きできなくなる Accepter が 1台停止しただけでも合意に至れなくなる可能性がで

過半数の accepter に提案が受理されたことを learner に確認させる

47

Page 48: Paxos

Learner の構成例 1

Accepter が learner にメッセージを送る もちろんメッセージは遅延したり、到達順序が前後したりする 過半数超えを確認するためには提案の値ではなく ID を利用

欠点:メッセージ数が accepter の数と learner の数の積に

48

P1

A1

A2

A3

L1

L2

過半数超えたら OKAccept(n, v)

Accepted(n, v)

Page 49: Paxos

Learner の構成 2

Distinguished learner でメッセージ数を削減 non-Byzantine だから問題が簡単になってるそうです

Byzantine-failure が起こると、 L1 が間違った情報をまき散らす

かも

49

P1

A1

A2

A3

L1

Accept(n, v)

Accepted(n, v)

L2

L3

L4

Accepted(n, v)

Page 50: Paxos

Learnerその他

メッセージの損失を考慮 Accepter からの Accepted メッセージは失われる可能性がある そうすると提案が選択されたことに気づけない Learner が定期的に accepter に聞きに行けば解決か?

Accepter が停止していると厳しい Proposer にもう一度提案してもらう必要がある

Distinguished learner の冗長化 Distinguished learner が 1台だけだと SPOF になる 冗長化は簡単

メッセージ数 (accepter数+learner数 )*distinguished learner

数 A:5 、 L:5構成では 25 メッセージ必要 A:5 、 DL:2 、 L:3 では (5+3)*2 で 16 メッセージ

50

Page 51: Paxos

現実的な learner の運用

Distinguished proposer&learner を同じプロセスで動かす いわゆるマスター

Proposer は Accepted メッセージを accepter から回収する Learner の役割も果たせる

Accepted メッセージが失われて過半数の確認ができない場合は? もう 1度 Paxos インスタンスを実行すればいい

51

Page 52: Paxos

Paxos 要約

Paxos プロトコルの 2 フェーズ Prepare&Promise Accept&Accepted ID 付きの提案がポイント!

提案は過半数の accepter に受理されたら合意を取れたといえる 過半数に受理されたのを確認するのは learner の役目

Proposer 、 accepter 、 learner は複数台いても大丈夫 Proposer は、活発なのが複数台いると停止しなくなる場合がある Accepter は沢山いても大丈夫 Learner は沢山いすぎると送らないといけないメッセージが増え

る 補足: Accepter も learner も多ければいいってものじゃないよ!

52

Page 53: Paxos

Multi-Paxos

53

Page 54: Paxos

Paxos の最適化

Paxos は 1 インスタンスあたりのメッセージ数が多い 最小で 4回のやりとりが必要になる

メッセージ数を減らせないか? 仮定をおいたり、制約をかければ何とかなる

Paxos の最適化手法はいろいろある Cheap Paxos Fast Paxos

今日は Multi-Paxos を紹介

54

Page 55: Paxos

Multi-Paxos

複数回連続してインスタンスを実行するような場合向けの最適化 Distinguished proposer が割と stable であると仮定

マスターがあんまり変わらない

何回も連続してインスタンスを実行する場合を考える 1回目に Prepare&Promise を実行して Accepted までこぎ着け

た 2回目以降は、 Prepare&Promise を省略できないか 前回のインスタンスと proposer が同じである場合はいきなり

Accept飛ばしていいんじゃない? 途中で他の proposer が Prepare で割り込めるし、安全性にも問

題ないよね? ざっくりですが、こんな雰囲気!

55

Page 56: Paxos

参考文献紹介

56

Page 57: Paxos

俺たちの戦いはまだ始まったばかりだ!

Paxos というか分散システムは難しいのでいろんな説明を読もう Consensus protocol の歴史と概要を知りたい

Paper trail の Consensus Protocols シリーズ Paxos のわかりやすいところだけ知りたい

Paxos made simple Paxos を実装しようとしたらどういう問題が起こるのか知りたい

Paxos made live Paxos を使ってるプロダクトの話を知りたい

Chubby Paxos ではないけど ZooKeeper も!

Paxos を極めたい The Part-time Parliament

57

Page 58: Paxos

Paper Trail の Consensus Protocols シリーズ

Henry Robinson(@HenryR) さんのブログ http://the-paper-trail.org/ ZooKeeper のコミッタ Cloudera の方

Consensus Protocols で検索 2PC→3PC→Paxos という順で話が進んでいく かなりわかりやすいのでおすすめ!

Paxos の説明のところが Paxos made simple とちょっと違う

58

Page 59: Paxos

Paxos made simple

本日の主な情報源 Lamport先生

いきなりこれを読み始めてもいいレベル! 10回くらい読み直したら理解できた メモ

Proposal/value という単語は適切に使い分けている 注意して読もう

Chosen の対象を見極める 選択されたのは proposal 、それとも value ?

細かいことが気になり始めたら Paxos made liveへ!

59

Page 60: Paxos

Paxos made live

Google の論文 Paxos を実装したらこんな問題に突き当たりました集 解決方法ももちろん載ってる 参考文献も豊富で、しかも面白そうな論文が多い

例 マスター (distinguished proposer) の維持方法

マスターのリースによる管理 ディスク障害との向き合い方 スナップショットの維持方法

MongoDB の oplog too stale 問題に近い話も テスト方法!!すばらしかったので読むべき

60

Page 61: Paxos

Chubby & ZooKeeper

Chubby Google の Paxos を使ったもの

(特許関係がよくわかってない ) これがあると分散システムの設計がすごく楽に

ZooKeeper Chubby クローン (Paxos 使ってない ) ZAB(ZooKeeper Atomic Broadcast) Atomic Broadcast も面白い概念

Consensus と近い ( というか同じ? ) 問題

61

Page 62: Paxos

The Part-Time Parliament

伝説の元論文 最初に投稿されたのは 1990 年? 1998 年の ACM Transactions on Computer Systems

証明も載ってる 難しい 一人で読んでると心が折れそうなので一緒に読む人募集

62

Page 63: Paxos

まとめ

Consensus そもそもどういう問題なのか どこで使われているのか 満たすべき性質

Paxos Paxos made simple に従った紹介 Multi-Paxos の紹介

参考文献紹介

63

Page 64: Paxos

Copyright © 2006-2012

Preferred Infrastructure All Right Reserved.

ご清聴ありがとうございました!