分散処理を勉強した記録~その3~
この記事は、
「分散処理システム」著:真鍋義文 森北出版株式会社
を参考にしています。
今回は、「分散スナップショット」についてまとめました。
<分散スナップショットとは>
分散アルゴリズムにはプロセスが複数あります。
全体の状態を知りたい時、どうすればいいでしょうか?
そんな時、分散スナップショットを使います。
<モグラは全部で何匹いるのか>
モグラが巣から巣へとトンネルを使って移動するゲームを使って説明します。
現在、モグラが全部で何匹居るのか知りたい場合、どうやって調査すればいいでしょうか?
赤い枠がモグラだと思ってください。
今回は2匹居ます。
全体を俯瞰すると簡単ですが、
各プロセスが全体を俯瞰できないことを前提に考えていきます。
モグラの巣穴をプロセス、モグラが通るトンネルを通信路に置き換えて説明します。
今回は、左上のプロセス1から処理を開始します。
プロセス1にはモグラが1匹居るので、
プロセス1の状態を「モグラ:1匹」として保存しておきます。
プロセス1は「マーカーメッセージ」というメッセージを
自分に接続されている通信路だけに送信します。
「マーカーメッセージ」には「普通のメッセージではなく、マーカーメッセージである」情報しか含まれていません。
その後、プロセス1は自分が接続されているトンネルにモグラがいないことを確認します。
プロセス2とプロセス3は、プロセス1からのマーカーメッセージを受信します。
プロセス2とプロセス3もそれぞれ、自分の巣穴の状態を確認して保存しておきます。
プロセス2とプロセス3は各々マーカーメッセージを自分の通信路に送信します。
その後、通信路にモグラが居たことを追記しておきます。
プロセス1はプロセス2とプロセス3からのマーカーメッセージを受信します。
プロセス1は、すべてのマーカーメッセージを受信したので処理を終了します。
プロセス2はプロセス3からのマーカーメッセージを受信します。
プロセス2もすべてのマーカーメッセージを受信したので処理を終了します。
同様に、プロセス3もすべてのマーカーメッセージを受信したので処理を終了します。
これで調査結果が出揃いました。
モグラは全部で2匹です。
今回はここまでです。ありがとうございました。
Discussion