💭

分散処理を勉強した記録~その27~

2021/04/03に公開

この記事は、
「分散処理システム」著:真鍋義文 森北出版株式会社
を参考にしています。

今回は、「ビザンチン将軍問題を解くアルゴリズム」についてです。
まず、誰も裏切っていない場合について考えてみます。

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