(57)【要約】【課題】  所定のデータを利用するタスクをＰａｘｏｓを用いて行う際に、データ取得不能に起因する分散処理の遅滞を抑制することができる分散コンピューティングシステムを提供する。【解決手段】  本発明に係る分散コンピューティングシステムは、セルを構成するサーバー２ａ〜２ｃがＰａｘｏｓにより合意を形成し、クライアント３の指示に従い所定のデータを利用してタスクを行うもので、リーダーのサーバー２ａが、エージェントのサーバー２ｂ，２ｃに対し、データ取得促進信号を送信し、サーバー２ｂ，２ｃが、データを保有していない場合に、データを取得した上でサーバー２ａにデータ取得完了信号を送信し、サーバー２ａが、それ自体もデータを取得した上で、セルを構成する半数以上のサーバーからデータ取得完了信号を受信すると、サーバー２ｂ，２ｃに対してタスクの実行を指示する実行信号を送信し、サーバー２ｂ，２ｃが、データを利用してタスクを行う。【選択図】  図２
2011164719.tif 000002
【特許請求の範囲】
【請求項１】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、
前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信し、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、
前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする分散コンピューティングシステム。
【請求項２】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信し、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信し、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信し、
前記代行信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信し、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする分散コンピューティングシステム。
【請求項３】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信し、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信し、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信し、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする分散コンピューティングシステム。
【請求項４】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、
前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする分散コンピューティング方法。
【請求項５】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信するステップと、
前記代行指示信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする分散コンピューティング方法。
【請求項６】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする分散コンピューティング方法。
【請求項７】
セルを構成する複数のコンピューティングデバイスを、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、
前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする分散コンピューティング用プログラム。
【請求項８】
セルを構成する複数のコンピューティングデバイスを、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信するステップと、
前記代行指示信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする分散コンピューティング用プログラム。
【請求項９】
セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、
前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、
前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、
前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信するステップと、
前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、
前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、
前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする分散コンピューティング用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング技術に関する。
【背景技術】
【０００２】
昨今、リソースの効率的利用等を目的とした分散コンピューティングがクラウドと呼ばれて注目され、ＳａａＳ、ＰａａＳ又はＩａａＳの形態で各種のサービスが提供されている。分散コンピューティングでは、セルを構成する複数のコンピューティングデバイスがクライアントから指示されたタスクを協働して行うため、コンピューティングデバイス間で合意を形成することがあり、このような合意形成のアルゴリズムとして、例えば特許文献１乃至特許文献３に記載のように、Ｐａｘｏｓが知られている。
【０００３】
Ｐａｘｏｓは、セルを構成するコンピューティングデバイスがリーダー又はエージェントとなって、分散コンピューティングシステムがある機能を実行する前に定足数（過半数以上）のコンピューティングデバイスがその機能に合意するか否かをリーダーが諮り、合意が形成されれば実行を開始するコンセンサスアルゴリズムである。このようなアルゴリズムにより、コンピューティングデバイス間の同期を簡易に図ることができ、高可用性を実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１９６７６３号公報
【特許文献２】特開２００６−４４３３号公報
【特許文献３】特開２００６−１５５６１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、クライアントから指示されたタスクが、クライアントその他から与えられた所定のデータを利用して行われなければならない場合に、コンセンサスアルゴリズムとしてＰａｘｏｓを用いると、合意形成を受けて各コンピューティングデバイスがタスクの実行に着手した後に、いずれかのコンピューティングデバイスが通信障害その他の理由で上記データを取得することができない事態が生じ得る。そうすると、そこに至るまでの一連の過程（リーダーがエージェントに対して直近の投票に係る提案を問い合わせるところから始まり、合意形成を経て実行指示を出すまでの過程）が無駄になるばかりか、システムアボートに陥るおそれもあり、分散処理自体が滞るという問題がある。
【０００６】
本発明は、上記の事情に鑑みてなされたもので、所定のデータを利用しなければならないタスクをＰａｘｏｓを用いて行う場合に、コンピューティングデバイスのデータ取得不能に起因する分散処理の遅滞を抑制することができる分散コンピューティングシステム、分散コンピューティング方法及び分散コンピューティング用プログラムを提供することを課題としている。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信し、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする。
【０００８】
請求項２に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信し、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信し、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信し、前記代行信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信し、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする。
【０００９】
請求項３に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティングシステムであって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信し、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信し、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信し、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信し、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信し、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うことを特徴とする。
【００１０】
請求項４に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする。
【００１１】
請求項５に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信するステップと、前記代行指示信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする。
【００１２】
請求項６に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行う分散コンピューティング方法であって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを含むことを特徴とする。
【００１３】
請求項７に係る発明は、セルを構成する複数のコンピューティングデバイスを、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、前記リーダーが、前記エージェントに対し、前記データの取得を促すデータ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、それ自体も前記データを取得した上で、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする。
【００１４】
請求項８に係る発明は、セルを構成する複数のコンピューティングデバイスを、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェントに対し、前記データの取得を他のエージェントに促すデータ取得促進信号を前記リーダーに代わって送信するように指示する代行信号を送信するステップと、前記代行指示信号を受信した特定のエージェントが、他のエージェントに対し、前記データ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする。
【００１５】
請求項９に係る発明は、セルを構成する複数のコンピューティングデバイスが、一部がリーダーとなり他がエージェントとなってＰａｘｏｓにより合意を形成し、クライアントからの指示に従い所定のデータを利用してタスクを行うように機能させる分散コンピューティング用プログラムであって、前記リーダーが、前記エージェントに対し、前記データを保有しているか否かを尋ねるデータ保有確認信号を送信するステップと、前記データ保有確認信号を受信したエージェントのうち前記データを保有するものが、前記リーダーに対し、前記データの保有を通知するデータ保有信号を送信するステップと、前記データ保有信号を受信したリーダーが、そのデータ保有信号を送信した特定のエージェント以外の他のエージェントに対し、前記特定のエージェントからの前記データの取得を促すデータ取得促進信号を送信するステップと、前記データ取得促進信号を受信したエージェントが、前記データを保有していない場合に、前記データを取得した上で前記リーダーにデータ取得完了信号を送信するステップと、前記リーダーが、前記セルを構成する半数以上のコンピューティングデバイスから前記データ取得完了信号を受信すると、前記エージェントに対して前記タスクの実行を指示する実行信号を送信するステップと、前記実行信号を受信したエージェントが、前記データを利用して前記タスクを行うステップとを実行させることを特徴とする。
【００１６】
請求項１、請求項４及び請求項７に係る発明によれば、リーダーが、タスクの実行を指示する前にデータ取得促進信号を送信してエージェントにデータの取得を促し、エージェントは、タスクを実行する際に、既に取得して保有しているデータを利用することができるので、タスクの実行段階に至ってエージェントがデータを取得することができずに分散処理が立ち往生する事態が回避される。
【００１７】
請求項２、請求項５及び請求項８に係る発明によれば、リーダーが、タスクの実行を指示する前に代行信号を送信して、データを保有している特定のエージェントを介して他のエージェントにデータの取得を促し、エージェントは、タスクを実行する際に、既に取得して保有しているデータを利用することができるので、請求項１、請求項４及び請求項７に係る発明と同様に、コンピューティングデバイスのデータ取得不能に起因する分散処理の遅滞を抑制することができる。
【００１８】
請求項３、請求項６及び請求項９に係る発明によれば、リーダーが、タスクの実行を指示する前にデータ取得促進信号を送信して、データを保有している特定のエージェントからのデータの取得を他のエージェントに促し、エージェントは、タスクを実行する際に、既に取得して保有しているデータを利用することができるので、請求項１、請求項２、請求項４、請求項５、請求項７及び請求項８に係る発明と同様に、コンピューティングデバイスのデータ取得不能に起因する分散処理の遅滞を抑制することができる。
【発明の効果】
【００１９】
本発明によれば、所定のデータを利用しなければならないタスクをＰａｘｏｓを用いて行う場合に、コンピューティングデバイスのデータ取得不能に起因する分散処理の遅滞を抑制することができるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】発明を実施するための形態に係る分散コンピューティングシステムを示す説明図である。
【図２】図１の分散コンピューティングシステムにおける信号及びデータの授受を示す説明図である。
【図３】図１の分散コンピューティングシステムの分散コンピューティング方法を示す流れ図である。
【図４】図１の分散コンピューティングシステムのリーダーが交替したときの信号及びデータの授受を示す説明図である。
【図５】図１の分散コンピューティングシステムのリーダーが交替したときの分散コンピューティング方法を示す流れ図である。
【発明を実施するための形態】
【００２１】
本発明を実施するための形態について、図面を用いて説明する。
〔分散コンピューティングシステム〕
図１は、本形態に係る分散コンピューティングシステムを示す。この分散コンピューティングシステムはセル１を含み、セル１は複数のコンピューティングデバイス（以下「デバイス」という。）により構成されている。本形態では、デバイスとして３台のサーバー２ａ，２ｂ，２ｃを例示するが、デバイスの種類や数はこれに限られるものではない。
【００２２】
サーバー２ａ，２ｂ，２ｃは、互いに通信可能に接続されるとともに、それらのＩＰアドレスを把握するクライアント３にインターネットを介して接続され、クライアント３からの指示を受け、所定のデータを利用して演算処理等のタスク（以下「本件タスク」という。）を協働して行う。本件タスクのためのアプリケーションプログラム及び本件タスクを分散処理するための分散コンピューティング用プログラムは、ここではサーバー２ａ，２ｂ，２ｃのそれぞれにインストールされている。また、サーバー２ａ，２ｂ，２ｃは、それぞれ汎用コンピューターであるが、説明の便宜上は、図２に示すように、そのＣＰＵ、記憶装置等のプロセッサ能力、ストレージ能力を合意形成部４ａ，４ｂ，４ｃと実行部５ａ，５ｂ，５ｃに分けることができる。
【００２３】
合意形成部４ａ，４ｂ，４ｃは、セル１の内部でＰａｘｏｓにより合意を形成するためのＰａｘｏｓ装置４を構成する。Ｐａｘｏｓ装置４においては、上記分散コンピューティング用プログラムに従って、合意形成部同士が所定の帯域内の通信手段（例えばＵＤＰ）によりメタデータを値渡しする。
【００２４】
実行部５ａ，５ｂ，５ｃは、上記アプリケーションプログラムに従って本件タスクを実行する。実行部５ａ，５ｂ，５ｃは、帯域外データ転送手段（例えばＦＴＰ、ＲＤＭＡ）により実行部同士やクライアント３との間で大容量データの送受信を行うことができる。
〔分散コンピューティング方法〕
本件タスクの実行時には、図３にも示すように、クライアント３は、セル１に対し、いずれのサーバーがリーダーであるかを問い合わせる（ステップ１：図面において「Ｓ．１」と記載。以下同様）。クライアント３は、サーバー２ａ，２ｂ，２ｃのＩＰアドレスを把握しているから、サーバー２ａ，２ｂ，２ｃのいずれかからいずれがリーダーであるかを知得することができる（ステップ２）。もし未だリーダーが選出されたことがない等の理由により、サーバー２ａ，２ｂ，２ｃのいずれもリーダーの情報を有していないのであれば、クライアント３からの問合せを契機に、サーバー２ａ，２ｂ，２ｃがリーダーを互選してもよい。リーダーの選出方法はどのようなものでもよく、例えば起動時刻が最先の最長老のサーバーをリーダーとすることにより、リーダー交替が生じる頻度を抑制することができる。本形態では、リーダーとなるのは一つのサーバーに限られ、複数のリーダーの選出は行われない（ただし、リーダー交替の過程で一時的にリーダーが併存することはある。）。
【００２５】
ステップ１の問合せによりクライアント３がリーダーを知り、例えばサーバー２ａがリーダーであるとすると、クライアント３は、実行部５ａに対し、本件タスクに利用する所定のデータとしての大容量データ（以下「本件データ」という。）を帯域外データ転送手段により送信し、これが実行部５ａに記憶される（ステップ３）。このデータ送信が完了すると、クライアント３は、実行部５ａに対し、本件タスクをリクエストするリクエスト（ｒｅｑｕｅｓｔ）信号を送信する（ステップ４）。
【００２６】
リクエスト信号を受信した実行部５ａは、本件タスクのリクエストがあったことをトランスミット（ｔｒａｎｓｍｉｔ）信号で合意形成部４ａに伝達する（ステップ５）。これを受けて、合意形成部４ａは、本件タスクの実行についてＰａｘｏｓ装置４で合意を得るために、合意形成部４ｂ，４ｃに対してコレクト（ｃｏｌｌｅｃｔ）信号を送信する（ステップ６）。コレクト信号は、本件タスクのための提案番号を提示するとともに、合意形成部４ｂ，４ｃに対して最後に投票した提案番号の通知を求める。
【００２７】
合意形成部４ｂ，４ｃは、それらが最後に投票した提案番号が提示された提案番号よりも小さいか、それらが未だ投票していない場合には、合意形成部４ａに対して提示された提案番号が保持されることを支持するラスト（ｌａｓｔ）信号で応答し（ステップ７，８）、最後に投票した提案番号（未投票の場合には０）を通知する（ステップ９）。もし最後に投票した提案番号が提示された提案番号以上である場合には、合意形成部４ｂ，４ｃはラスト信号は送信せず、その最後に投票した提案番号を通知する。
【００２８】
合意形成部４ａは、ラスト信号が過半数のサーバーから得られれば、サーバー２ｂ，２ｃに対してデータの取得を促すデータ取得促進信号としてのビギン（ｂｅｇｉｎ）信号を合意形成部４ｂ，４ｃに送信する（ステップ１０，１１）。このビギン信号は本件データの所在情報を含むが、ここでは本件データがサーバー２ａにより既に取得されているので、サーバー２ｂ，２ｃはビギン信号によって本件データがサーバー２ａにあることを認識する。
【００２９】
なお、ステップ１０における「ラスト信号が過半数のサーバーから得られれば」の条件は、リーダーについてはその合意形成部内部でラスト信号の送受信があったと考えられるから、事実上、半数以上のエージェント、つまり、サーバー２ｂ，２ｃの一方からラスト信号が得られれば満たされる。もしラスト信号が過半数のサーバーから得られなければ、例えばサーバー２ａは提示する提案番号を大きくしてコレクト信号の送信からやり直すことも考えられる。
【００３０】
ビギン信号を受信した合意形成部４ｂ，４ｃは、実行部５ｂ，５ｃに、本件データの所在情報を含み、かつ、本件データの取得を要求するバリデーション（ｖａｌｉｄａｔｉｏｎ）信号を送信する（ステップ１２）。実行部５ｂ，５ｃは、その記憶装置に本件データを保有しているか否かを確認し（ステップ１３）、保有していない場合には実行部５ａから帯域外データ転送手段により本件データを取得する（ステップ１４）。そして、実行部５ｂ，５ｃは、バリデーション信号の受信時に既に本件データを保有していた場合、及び、本件データの取得が完了して本件データを保有するに至った場合に、合意形成部４ｂ，４ｃにコンプリーション（ｃｏｍｐｌｅｔｉｏｎ）信号を送信する（ステップ１５）。
【００３１】
コンプリーション信号を受信した合意形成部４ｂ，４ｃは、合意形成部４ａに、データ取得完了信号としてのアクセプト（ａｃｃｅｐｔ）信号を送信する（ステップ１６）。合意形成部４ａは、アクセプト信号が過半数のサーバーから得られれば（この意義は、上記ラスト信号の場合と同様である。）、サーバー２ｂ，２ｃに対して本件タスクの実行を指示する実行信号としてのサクセス（ｓｕｃｃｅｓｓ）信号を合意形成部４ｂ，４ｃに送信する（ステップ１７，１８）。
【００３２】
サクセス信号を受信した合意形成部４ｂ，４ｃは、実行部５ｂ，５ｃに、本件タスクの実行を要求するバリデーション信号を送信する（ステップ１９）。これにより、実行部５ｂ，５ｃは、その記憶装置に保有している本件データを利用して、本件タスクの分散処理を開始する（ステップ２０）。
【００３３】
本形態に係る分散コンピューティングシステムによれば、サーバー２ａが、本件タスクの実行を指示する前にビギン信号を送信してサーバー２ｂ，２ｃに本件データの取得を促し、サーバー２ｂ，２ｃは、本件タスクを実行する際に、既に取得して保有している本件データを利用することができるので、本件タスクの実行段階に至ってエージェントがデータを取得することができずに分散処理が立ち往生する事態が回避される。
〔リーダーが交替したときの分散コンピューティング方法〕
上記のように、セル１においては、リーダーが他のエージェントに対してビギン信号を送信することが通常であるが、もしリーダーにトラブル等が生じてリーダーの交替が生じた場合には、図４及び図５に示すような処理を行う。
【００３４】
すなわち、新たにリーダーとなったサーバーについても符号２ａを付すと、その合意形成部４ａは、サーバー２ａが本件データを保有しているか否かを確認するために、実行部５ａにバリデーション信号を送信する（ステップ２１）。これに対し、実行部５ａは、本件データを保有しているか否かをアンサー（ａｎｓｗｅｒ）信号で合意形成部４ａに回答する（ステップ２２）。実行部５ａが本件データを保有していれば、例えば図３のステップ１１以降の処理を行えばよいが、実行部５ａが本件データを保有していなければ、合意形成部４ａは、サーバー２ｂ，２ｃに対して本件データを保有しているか否かを尋ねるデータ保有確認信号としてのコレクト信号を合意形成部４ｂ，４ｃに送信する（ステップ２３，２４）。
【００３５】
コレクト信号を受信した合意形成部４ｂ，４ｃは、サーバー２ｂ，２ｃが本件データを保有しているか否かを確認するために、実行部５ｂ，５ｃにバリデーション信号を送信する（ステップ２５）。ここでは、実行部５ｂは本件データを有しているが、実行部５ｃは本件データを有していないとして、それぞれ合意形成部４ｂ，４ｃにアンサー信号を送信したと想定する（ステップ２６）。
【００３６】
アンサー信号を受信した合意形成部４ｂ，４ｃは、それぞれのデータ保有状況をラスト信号で合意形成部４ａに通知する（ステップ２７）。この際、合意形成部４ｂは本件データの保有を通知するので、データ保有信号としてのラスト信号を送信する。
【００３７】
ラスト信号を受信した合意形成部４ａは、本件データを保有するサーバー２ｂの合意形成部４ｂに対し、次述のビギン信号を送信するように指示する代行信号としてのリダイレクト（ｒｅｄｉｒｅｃｔ）信号を送信する（ステップ２８）。
【００３８】
リダイレクト信号を受信した合意形成部４ｂは、データ取得促進信号としてのビギン信号を合意形成部４ａ，４ｃに送信し、サーバー２ａ，２ｃに対して本件データの取得を促す（ステップ２９）。このビギン信号は本件データの所在情報を含むが、ここでは本件データをサーバー２ｂが既に保有しているので、サーバー２ｃはビギン信号によって本件データがサーバー２ｂにあることを認識する。
【００３９】
ビギン信号を受信した合意形成部４ａ，４ｃは、実行部５ａ，５ｃに、本件データの所在情報を含み、かつ、本件データの取得を要求するバリデーション信号を送信する（ステップ３０）。実行部５ａ，５ｃは、実行部５ｂから帯域外データ転送手段により本件データを取得し（ステップ３１）、本件データの取得が完了して本件データを保有するに至った場合に、合意形成部４ａ，４ｃにコンプリーション信号を送信する（ステップ３２）。
【００４０】
コンプリーション信号を受信した合意形成部４ｃは、合意形成部４ａに、本件データの取得の完了を通知するアクセプト信号を送信する（ステップ３３）。合意形成部４ａは、そのようなデータ取得完了信号が過半数のサーバーから得られれば（この条件は、サーバー２ｂについてはデータを取得していることが既知であるから、事実上、セル１を構成する半数以上のサーバーからのデータ取得完了信号、つまり、サーバー２ａの内部における上記コンプリーション信号、又は、合意形成部４ｃからのアクセプト信号を合意形成部４ａが受信すれば満たされる。）、サーバー２ｂ，２ｃに対して本件タスクの実行を指示する実行信号としてのサクセス信号を合意形成部４ｂ，４ｃに送信する（ステップ３４，３５）。
【００４１】
サクセス信号を受信した合意形成部４ｂ，４ｃは、実行部５ｂ，５ｃに、本件タスクの実行を要求するバリデーション信号を送信する（ステップ３６）。これにより、実行部５ｂ，５ｃは、その記憶装置に保有している本件データを利用して、本件タスクの分散処理を開始する（ステップ３７）。
【００４２】
本形態に係る分散コンピューティングシステムによれば、リーダーの交替が生じて新たなリーダーであるサーバー２ａが本件データを保有していないときは、サーバー２ａが、本件タスクの実行を指示する前に代行信号を送信して、本件データを保有している特定のエージェント（サーバー２ｂ）を介して他のサーバーに本件データの取得を促す。よって、各サーバーは、本件タスクを実行する際に、既に取得して保有しているデータを利用することができ、コンピューティングデバイスのデータ取得不能に起因する分散処理の遅滞を抑制することができる。
【００４３】
以上、本発明を実施するための形態について例示したが、本発明の実施形態は上述したものに限られず、本発明の趣旨を逸脱しない範囲で適宜変更等してもよい。
【００４４】
例えば、図４及び図５において、サーバー２ａは本件データを保有しているサーバー２ｂにビギン信号を送信させるべくリダイレクト信号を送信したが、サーバー２ａ自らビギン信号（本件データのサーバー２ｂからの取得を促すデータ取得促進信号）をサーバー２ｃに送信してもよい。
【００４５】
また、図３においてサーバー２ａが本件データを取得する時点はリクエスト信号受信前でなくてもよく、さらに、サーバー間の通信にＴＣＰ等を用いることにより、合意形成時のデータの送受信と本件データの送受信を帯域内外で分けずに行ってもかまわない。
【産業上の利用可能性】
【００４６】
本発明は、Ｐａｘｏｓを用いた分散コンピューティングにおいて、タスクの種類を問わずに広く利用することができる。
【符号の説明】
【００４７】
１          セル
２ａ        サーバー（リーダー）
２ｂ，２ｃ  サーバー（エージェント）
３          クライアント
【図１】
2011164719.tif 000003
【図２】
2011164719.tif 000004
【図３】
2011164719.tif 000005
【図４】
2011164719.tif 000006
【図５】
2011164719.tif 000007