💭
分散処理を勉強した記録~その27~
この記事は、
「分散処理システム」著:真鍋義文 森北出版株式会社
を参考にしています。
今回は、「ビザンチン将軍問題を解くアルゴリズム」についてです。
まず、誰も裏切っていない場合について考えてみます。
P0が将軍、P1~P3が部隊長です。
P0がP1~P3に「1」という値を送信します。
P1~P3は素直に「1」を信用します。
この場合は単純にこれで終わりです。
次に、P2が裏切る(故障)する場合です。
同様にP0から「1」という値が送信されますが、
P2だけは受信することができませんでした。
この場合、P1はP2とP3に対して自分の値を知らせます。
P2とP3はP1からの値を保存し、
同様にP2は自分の値をP1とP3に送信します。
同様にP3も自分の値を送信します。
各プロセスは自分が保持している値で多数決を採ります。
すると、全員「1」で合意することができました。
今回はここまでです。ありがとうございました。
Discussion