第十九回P2P SIP勉強会

『分散合意アルゴリズムの神髄~Paxosを極めて~』

大阪市立大学・鹿野将典氏

http://www.siprop.org/ja/2.0/index.php?%B3%AB%C8%AF%2F%A5%B3%A5%DF%A5%E5%A5%CB%A5%C6%A5%A3%A1%BC%2F%CA%D9%B6%AF%B2%F1

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は事前に知っている。