第十九回P2P SIP勉強会
『分散合意アルゴリズムの神髄~Paxosを極めて~』
大阪市立大学・鹿野将典氏
wikipedia: http://en.wikipedia.org/wiki/Paxos_algorithm
当日の写真: http://picasaweb.google.co.jp/Kazuyuki.Shudo/100613P2PSIP?authkey=Gv1sRgCMS47uaYj7u8fw
かんたんメモ
- 想定する環境は:
- 各ノードは勝手ばらばらに動いている
- メッセージに信頼性はないが、こわれて届くことはない。
- いつ届くかはまったく保証がない(1年後かも)。
- ビザンチン障害はない。
- 登場人物は3種類: proposer,acceptor,learner
- proposerの中にはleaderというの居るけど、それは自意識でしかなくて他のノードはそんなことはしらない。
- いちおうleader electionで決めるとのこと。(でも複数leaderが居る可能性があるらしい)
- メッセージの種類は4種類: prepare, promise, accept, accepted
- prepare: leader proposer->all acceptors あるVnで合意したいんでよろしく!
- promise: acceptors->leader proposer はいはいわかりました。or proposerがすでに合意がとられているVkを知らないのならVkを教える。
- accept: leader proposer->acceptors 過半数の合意がとれたらcommit!
- accepted: acceptors->leader proposer+learner できたよん。
- メッセージには round#, seq#, proc# などの属性もくっついてるとのことだったがよくわからなかった。
- メッセージの名前はいろいろな流派があるらしい。
- 障害の話はよくわからなかった。
- split-brain問題は、どうやら両方に属するノードが必ず存在することで解決しているようだ。
- acceptorの数はleaderは事前に知っている。