(57)【特許請求の範囲】
【請求項１】
ネットワークを介して相互に接続された複数のクライアントにおいて、所定の作業を分散して実行する分散処理方法であって、
各クライアントにおいて、作業依頼に基づく分散処理の実行の可否を示す自己の状態を、ネットワークに接続されている所定のマシンに通知するステップと、
前記所定のマシンにおいて、各クライアントの、前記作業依頼に基づく分散処理の実行の可否を示す当該クライアントの状態を、当該所定のマシンのデータベースに保持するステップと、
依頼主となる何れかのクライアントにおいて、作業指示に応答して、前記所定のマシンにアクセスして分散処理の割り当て要求を送信するステップと、
前記所定のマシンにおいて、前記データベースから、その状態が、作業依頼に基づく分散処理の実行が可能であるような他のクライアントを検索し、当該作業依頼を受諾可能な当該他のクライアントを示す情報を、前記依頼主となる何れかのクライアントに送信するステップと、
前記依頼主となる何れかのクライアントにおいて、作業依頼を受諾可能な当該他のクライアントを示す情報を受理するステップと、
前記他のクライアントを示す情報を参照して、他のクライアントから選択された特定のクライアントの各々に対する作業依頼および作業内容を、前記所定のマシンに伝達するステップと、
前記所定のマシンにおいて、前記特定のクライアントの各々に対する作業依頼および作業内容を受理すると、当該特定のクライアントの各々に対して、作業依頼および作業内容を伝達するステップと、
前記特定のクライアントの各々において、前記作業依頼を受理することに応答して、当該作業依頼を受諾可能か否かを判断し、判断結果を前記所定のマシンに伝達するとともに、可能である場合に前記作業依頼および作業内容にかかる処理を実行するステップと、
前記所定のマシンにおいて、前記判断結果を作業の依頼主であるクライアントに伝達するとともに、前記判断結果に基づき、前記データベース中の前記作業依頼を受諾可能である特定のクライアントの状態を、作業依頼に基づく分散処理の実行が不可能であることを示すものに更新するステップと、
前記作業依頼および作業内容にかかる処理を実行している特定のクライアントにおいて、前記処理が終了した場合に、作業終了を示す通知を前記所定のマシンに伝達するステップと、
前記所定のマシンにおいて、前記作業終了を示す通知を依頼主であるクライアントに伝達するとともに、前記通知に基づき、前記データベース中の、前記作業終了を示す通知を送信した特定のクライアントの状態を、作業依頼に基づく分散処理の実行が可能であることを示すものに更新するステップと、を備えたことを特徴とする分散処理方法。
【請求項２】
さらに、前記依頼主であるクライアントにおいて、なすべき作業の処理単位である作業単位を画定するステップを備え、
前記作業内容が、作業単位数を含むことを特徴とする請求項１に記載の分散処理方法。
【請求項３】
さらに、前記作業依頼および作業内容にかかる処理を実行している特定のクライアントにおいて、前記処理を実行中に、所定のタイミングで、作業の進捗状況を示す報告を、前記所定のマシンに伝達するステップと、
前記所定のマシンにおいて、前記作業の進捗状況を示す報告を依頼主であるクライアントに伝達するステップとを備えたことを特徴とする請求項１または２に記載の分散処理方法。
【請求項４】
さらに、前記依頼主であるクライアントにおいて、特定のクライアントに関して、進捗状況を示す報告が伝達されない場合、或いは、所定の期間内に作業終了を示す通知が伝達されない場合に、前記特定のクライアントにおける作業が中断していると判断するステップと、
当該判断に基づき、他の特定のクライアントへの作業割り当てを再形成するステップとを備えたことを特徴とする請求項３に記載の分散処理方法。
【請求項５】
前記データベース中の前記状態が、作業を受諾可能であることを示す第１の状態、依頼された作業を実行中であることを示す第２の状態、および、作業を受諾不可能であることを示す第３の状態の何れかであり、
前記所定のマシンにおいて、作業依頼を受諾可能な特定のクライアントとして、第１の状態であるクライアントを選択して、当該特定のクライアントに関するリストを作成し、
特定のクライアントからの判断結果が作業を受諾するものである場合に、前記データベース中の当該特定のクライアントの状態を第２の状態に設定し、その一方、作業を受諾しないものである場合に、当該特定のクライアントの状態を第３の状態に設定し、かつ、
前記作業終了を示す通知の受理に応答して、前記データベース中の関連する特定のクライアントの状態を第１の状態に設定することを特徴とする請求項１ないし４の何れか一項に記載の分散処理方法。
【請求項６】
前記所定のマシンが、ネットワークに接続されたサーバであることを特徴とする請求項１ないし５の何れか一項に記載の分散処理方法。
【請求項７】
前記所定のマシンが、何れかのクライアントであることを特徴とする請求項１ないし５の何れか一項に記載の分散処理方法。
【請求項８】
ネットワークを介して相互に接続された複数のクライアントを備え、当該複数のクライアントにより分散処理を実現するコンピュータシステムであって、
前記各クライアントが、作業依頼に基づく分散処理の実行の可否を示す自己の状態を、ネットワークに接続された所定のマシンに登録する状態登録手段と、
他のクライアントに対する分散処理の割り当て要求を、前記所定のマシンに伝達するとともに、前記所定のマシンを介して、前記他のクライアントのうち、特定のクライアントに対して作業依頼および作業内容を伝達する作業依頼処理手段と、
自己が作業を依頼された場合に、当該作業依頼を受諾可能か否かの判断結果、および、受諾した作業依頼および作業内容にかかる処理の作業終了を示す通知を含む、当該作業依頼に関する情報を前記所定のマシンに伝達する作業情報伝達手段と、を有し、
前記ネットワークに接続された前記所定のマシンが、
前記クライアントについての、作業依頼に基づく分散処理の実行の可否を示す状態を記憶するクライアント管理データベースと、
作業の依頼主であるクライアントからの分散処理の割り当て要求にしたがって、前記クライアント状態データベースを参照して、作業依頼を受諾可能なクライアントのリストを作成して、作業の依頼主であるクライアントに伝達するリスト作成手段と、
前記作業の依頼主であるクライアントの作業依頼処理手段からの、リストから選択された特定のクライアントに対する作業依頼および作業内容に基づき、当該特定のクライアントの各々に対して、作業依頼および作業内容を伝達する作業依頼伝達手段と、
前記特定のクライアントからの、前記判断結果、および、作業依頼に関する情報に基づき、前記クライアント管理データベースを更新するデータベース更新手段と、を備え、
前記データベース更新手段が、
前記判断結果に基づき、前記データベース中の前記作業依頼を受諾可能である特定のクライアントの状態を、作業依頼に基づく分散処理の実行が不可能であることを示すものに更新するとともに、
前記作業終了を示す通知に基づき、前記作業終了を示す通知を送信した特定のクライアントの状態を、作業依頼に基づく分散処理の実行が可能であることを示すものに更新するように構成されたことを特徴とする分散処理システム。
【請求項９】
前記所定のマシンが、前記ネットワークに接続されたサーバであることを特徴とする請求項８に記載の分散処理システム。
【請求項１０】
前記所定のマシンが、前記クライアントの何れかであることを特徴とする請求項８に記載の分散処理システム。
【発明の詳細な説明】
【０００１】
【産業上の技術分野】
本発明は、ネットワークを介して相互に接続された複数のマシンによる分散処理およびその制御に関する。
【０００２】
【従来の技術】
ネットワークを介して複数のマシンを接続し、ある作業をこれら複数のマシンが処理する分散処理が実現されている。一般に、分散処理システムにおいては、マシンの位置付けに主従（マスタ／スレーブ）の関係があった。
たとえば、ネットワークレンダリングにおいては、マスタのマシンが、スレーブのマシンのうち、プロセスの空いているマシンに対して、静止画一枚分のデータ処理を割り振り、スレーブマシンにてデータ処理が実行されて、作成された静止画が共有されたフォルダに収容される。これにより、多数の静止画を分散して、並列的に作成することが可能となり、三次元画像を高速に得ることができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記主従関係のある分散処理システムにおいては、マスタのマシンのみが、スレーブへの作業の割り当ての権利を有しているため、スレーブマシンを柔軟に利用することは難しかった。また、ネットワークレンダリングの例にあるように、スレーブのマシンは処理を引き受ける役割に固定されており、スレーブのマシンで他のアプリケーションを実行させることを考慮していなかった。したがって、場合によっては、スレーブのマシンが稼動せず、その処理能力を発揮していないことも起こりうる。
【０００４】
その一方、主従関係のない分散システム、たとえば、「http://www.beowulf.org」に開示されているベオウルフ（beowulf）は、独立して複数の計算機をネットワークで結合して処理を実行できるように構成されている。しかしながら、このようなシステムは、完全に分散処理専用であり、各計算機の空き時間を利用して当該計算機自身の処理を実行することなどが考慮されていない。したがって、柔軟なシステム運用が困難であるという問題点があった。
本発明は、各クライアントが、アプリケーションを対面して使用可能な状態に保ちつつ、その処理能力を効率的に利用して、全体として高い処理能力を持たせることが可能なシステムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明の目的は、ネットワークを介して相互に接続された複数のクライアントにおいて、所定の作業を分散して実行する分散処理方法であって、
各クライアントにおいて、自己の状態を、ネットワークに接続されている所定のマシンに通知するステップと、
前記所定のマシンにおいて、各クライアントの状態を保持するステップと、
依頼主となる何れかのクライアントにおいて、作業指示に応答して、前記所定のマシンにアクセスして、他のクライアントのうち、作業依頼を受諾可能なクライアントを示す情報を受理するステップと、前記情報を参照して、特定のクライアントの各々に、作業依頼および作業内容を、前記所定のマシンを介して伝達するステップと、
前記特定のクライアントの各々において、前記作業依頼を受理することに応答して、当該作業を受諾可能か否かを判断し、判断結果を前記所定のマシンに伝達するとともに、前記作業依頼にかかる処理を実行するステップと、
前記所定のマシンにおいて、判断結果を作業の依頼主であるクライアントに伝達するとともに、当該特定のクライアントの各々の状態を、判断結果に基づき更新するステップと、
前記特定のクライアントにおいて、作業が終了した場合に、作業終了を示す通知を前記所定のマシンに伝達するステップと、
前記所定のマシンにおいて、作業終了を示す通知を依頼主であるクライアントに伝達するとともに、当該特定のクライアントの各々の状態を、前記通知に基づき更新するステップとを備えたことを特徴とする分散処理方法により達成される。
【０００６】
本発明によれば、所定のマシンにおいて各クライアントの状態が把握され、これに基づき、依頼主となるクライアントが、作業依頼を受諾可能なクライアントに対して、作業を依頼することができる。これにより、主従の関係を持たすことなく、各クライアントは、依頼主となることもでき、かつ、作業依頼を受諾して、当該作業を実行する作業クライアントとなり、柔軟なシステム運用が可能となる。また、各マシンの処理能力を十分に発揮することが可能となる。
【０００７】
本発明の好ましい実施態様においては、さらに、前記依頼主であるクライアントにおいて、なすべき作業の処理単位である作業単位を画定するステップを備え、前記作業内容が、作業単位数を含む。すなわち、この実施態様では、依頼主であるクライアントにおいて特定のクライアントにて処理すべき作業単位数を決定している。
【０００８】
より好ましい実施態様においては、さらに、前記特定のクライアントにおいて、前記作業にかかる処理を実行中に、所定のタイミングで、作業の進捗状況を示す報告を、前記所定のマシンに伝達するステップと、前記所定のマシンにおいて、前記作業の進捗状況を示す報告を依頼主であるクライアントに伝達するステップとを備えている。
上記実施態様において、依頼主であるクライアントにおいて、特定のクライアントに関して、進捗状況を示す報告が伝達されない場合、或いは、所定の期間内に作業終了を示す通知が伝達されない場合に、前記クライアントにおける作業が中断していると判断するステップと、判断に基づき、他の特定のクライアントへの作業割り当てを再形成するステップとを備えているのがより望ましい。
【０００９】
本発明の別の好ましい実施態様においては、上記クライアントの状態は、作業を受諾可能であることを示す第1の状態、依頼された作業を実行中であることを示す第２の状態、および、作業を受諾不可能であることを示す第3の状態の何れかであり、所定のマシンにおいて、作業依頼を受諾可能な特定のクライアントとして、第1の状態であるクライアントを選択して、当該特定のクライアントに関するリストを作成し、特定のクライアントからの判断結果が作業を受諾するものである場合に、当該特定のクライアントの状態を第２の状態に設定し、その一方、作業を受諾しないものである場合に、当該特定のクライアントの状態を第3の状態に設定し、かつ、前記作業終了を示す通知の受理に応答して、関連する特定のクライアントの状態を第１の状態に設定する。
【００１０】
別の実施態様においては、さらに依頼主であるクライアントにおいて、なすべき作業の処理単位である作業単位を画定するステップと、作業単位ごとの作業内容を示すテーブルを、当該クライアント内、或いは、ネットワークに接続された何れかのマシン内に設けるステップと、前記特定のクライアントにおいて、前記テーブル中に、自己が処理する作業内容を示すデータを与えるステップとを備えている。
所定のマシンは、ネットワークに接続されたサーバであっても良いし、或いは、何れかのクライアントであっても良い。
【００１１】
また、本発明の目的は、ネットワークを介して相互に接続された複数のクライアントを備え、当該複数のクライアントにより分散処理を実現するコンピュータシステムであって、
前記各クライアントが、少なくとも初期的に自己の状態を、ネットワークに接続された所定のマシンに登録する状態登録手段と、他のクライアントに対して作業を依頼することを、前記のマシンに伝達するとともに、他のクライアントのうち、特定のクライアントに対して作業を依頼する作業依頼処理手段と、自己が作業を依頼された場合に、当該依頼された作業に関する情報を前記所定のマシンに伝達する作業情報伝達手段とを有し、
前記ネットワークに接続された所定のマシンが、各クライアントから伝達された当該クライアントの状態や、当該クライアントからのデータを受理して、当該クライアントを特定するクライアント特定手段と、前記データに基づき当該クライアントの状態を判断するクライアント状態判断手段と、前記クライアントの状態を記憶するクライアント管理データベースと、作業の依頼主であるクライアントの依頼にしたがって、前記クライアント状態データベースを参照して、作業依頼を受諾可能なクライアントのリストを作成するリスト作成手段とを備え、
前記クライアント状態判断手段が、作業に関する情報に基づき、前記クライアント管理データベースを更新することを特徴とする分散処理システムにより達成される。
【００１２】
さらに、本発明の目的は、ネットワークを介して相互に接続された複数のクライアントにおいて、所定の作業を分散して実行する分散処理を実行するために各クライアントにて実行させるコンピュータプログラムであって、前記ネットワークに接続されたマシンのうちの何れかを、仲介用のマシンとして認識するステップと、自己の状態を、ネットワークに接続されている仲介用のマシンにおいて保持させるために通知するステップと、自己が作業の依頼主となる場合に、与えられた作業指示に応答して、前記仲介用のマシンにアクセスして、他のクライアントのうち、作業依頼を受諾可能なクライアントを示す情報を受理するステップと、
前記情報を参照して、特定のクライアントの各々に、作業依頼および作業内容を、前記仲介用のマシンを介して伝達するステップと、作業依頼が前記仲介用のマシンを介して伝達された場合に、その受理に応答して、当該作業を受諾可能か否かを判断し、判断結果を、前記仲介用マシンを介して作業の依頼主であるクライアントに伝達するとともに、可能である場合に前記作業依頼にかかる処理を実行するステップと、作業が終了した場合に、作業終了を示す通知を、前記仲介用マシンを介して前記作業の依頼主であるクライアントに伝達するステップとをクライアントに実行させることを特徴とするコンピュータプログラムにより達成される。
【００１３】
好ましくは、上記コンピュータプログラムは、さらに、前記作業依頼にかかる処理が実行される場合に、当該処理の実行中に、所定のタイミングで、作業の進捗状況を示す報告を、前記仲介用のマシンを介して、作業の依頼主であるクライアントに伝達するステップをクライアントに実行させる。より好ましくは、さらに、自己が作業の依頼主となる場合に、進捗状況を示す報告が伝達されない場合、或いは、所定の期間内に作業終了を示す通知が伝達されない場合に、当該伝達されない報告或いは通知にかかるクライアントにおける作業が中断していると判断するステップと、当該判断に基づき、他のクライアントへの作業割り当てを再形成するステップとをクライアントに実行させる。
【００１４】
また、本発明の目的は、ネットワークを介して相互に接続された複数のクライアントにおいて、所定の作業を分散して実行する分散処理を実行するために当該ネットワークに接続された仲介用マシンにて実行させるコンピュータプログラムであって、クライアントから伝達された状態を、当該クライアントと関連付けて記憶するステップと、作業の依頼主となるクライアントからの要求に応答して、前記記憶された状態を参照して、作業依頼を受諾可能なクライアントを示す情報を送信するステップと、作業の依頼主となるクライアントからの作業依頼を、他のクライアントに転送するステップと、当該他のクライアントの各々から、作業を受諾可能か否かを示す判断結果を受理して、判断結果を作業の依頼主であるクライアントに伝達するとともに、前記判断結果に基づき、他のクライアントの各々の状態を更新するステップと、前記他のクライアントのうち、作業依頼を受諾したクライアントから作業終了を示す通知を受理した場合に、当該通知を作業の依頼主であるクライアントに伝達するとともに、前記通知に基づき、当該他のクライアントの状態を更新するステップとを前記仲介用マシンに実行させることを特徴とするコンピュータプログラムにより達成される。
【００１５】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図１は、本発明の実施の形態にかかるシステムの概略を示すブロックダイヤグラムである。図１に示すように、本実施の形態にかかるネットワークコンピュータシステムは、複数のクライアント１２−１、１２−２、・・・、１２−ｎと、データ処理により生成されたデータ等を記憶するファイルサーバ１４と、各クライアントの状況を示す情報を記憶するとともに、クライアントマシン間のデータ通信を仲介する他のサーバ１６とを有している。これらクライアント１２、サーバ１４、１６はＬＡＮ等のネットワーク１８を介して接続されている。
本明細書において他のサーバ１６を、クライアントの状況や負荷を把握するものであるため、便宜上「ロードバランサー」と称する。
【００１６】
クライアント１２は、それぞれ、主従の関係を有するものではなく、それぞれ、ユーザによりコマンドの入力にしたがって必要な作業を実行することができる。また、各クライアントは、他のクライアントからの作業依頼を受けて、当該他のクライアントのための処理を実行することができる。たとえば、図２に示すように、あるクライアント１２−１からロードバランサー１６を介してクライアント１２−ｉに作業依頼が与えられると（符号２０２参照）、当該クライアント１２−ｉは、作業可能であれば、クライアント１２−１からの依頼にしたがって必要な処理を実行する（符号２０３）。このように他のクライアントからの依頼にしたがって作業をするクライアントを、本明細書において「作業クライアント」と称する。
【００１７】
作業依頼を受けたクライアントである作業クライアントは、当該クライアント自身の作業（たとえば文書の作成等）を実行しつつ、与えられた処理を実行し、与えられた処理が終了すると、作業の終了をロードバランサー１６を介して依頼主のクライアント１２−１に通知する（符号２０４参照）。これにより、作業クライアントは、通常のクライアントに戻ることになる（符号２０５参照）。
図３（ａ）は、依頼主であるクライアントにて実行される処理を示すフローチャートである。ここでは、クライアント１２−１が依頼主となり、他の所定のクライアントが作業クライアントとなると考える。
【００１８】
オペレータが入力装置を操作して、データ作成、たとえば、部品リストの作成指示を入力すると、クライアント１２−１がこれを受理して（ステップ３０１）、データ作成のための情報を収集する（ステップ３０２）。たとえば、ファイルサーバ１４から、部品リストを作成するために必要な情報が、このステップ３０２にて取得される。次いで、クライアント１２−１は、取得した情報に基づき、作業単位を画定させる（ステップ３０３）。ここでは、作成されるデータの総量を見積もって、あるデータ量を一つの作業単位としても良いし、所定数の処理ステップを一つの作業単位としても良い。なお、ここで、作業クライアントに割り当てる作業単位数等を概ね決定しておいても良い。
【００１９】
さらに、クライアント１２−１は、ファイルサーバ中に中間ファイルを作成する（ステップ３０４）。本実施の形態においては、図３（ｂ）に示すように、ファイルサーバ１４に、ワーキングディレクトリが設けられ、ここで各クライアントが中間ファイルを収納するためのディレクトリを作成できるようになっている。クライアント１２−１は、ワーキングディレクトリの下位に、上記データ作成処理用のディレクトリ３１１（\WorkDir\CL001）を作成する。この下位には、クライアント１２−１自体の実際の作業領域となるディレクトリ３１２−１（\WorkDir\CL001\CL001）や、後述する作業クライアントの作業領域となるディレクトリ３１２−２、・・・３１２−ｉが作成される。ステップ３０４においては、作成されたディレクトリ３１２−１（\WorkDir\CL001\CL001）中に作成された中間ファイルが収容される。
【００２０】
このようにして、依頼主のクライアント１２−１における前処理が終了すると、ロードバランサーを介して、各クライアントに対して処理依頼が伝達される。図１２に示すように、本実施の形態にかかる通信システム１０においては、大まかには、各クライアント１２−１、１２−２、１２−３（図中、「クライアント１〜３」と表記する。）における起動およびシステムへのログイン（符号１２０１参照）、依頼主であるクライアント１２−１による他のクライアントへの作業依頼（符号１２０２参照）、作業クライアントによる進捗状況や処理終了の報告（符号１２０３参照）、および、最終的に全ての作業が終了したときのログオフ（符号１２０４）という手順が設けられる。
これらの各々について以下に詳細に説明を加えるが、これに先立ち、本実施の形態にかかるロードバランサー１６につき説明を加える。
【００２１】
図４（ａ）は、本実施の形態にかかるロードバランサー１６の構成を示すブロックダイヤグラムである。図４（ａ）に示すように、ロードバランサー１６は、ＬＡＮに接続され、クライアント１２とのデータ授受を制御する通信制御部２０と、データが伝達されたクライアントを識別するクライアント識別部２２と、クライアントから与えられたコマンドを受理して必要な処理を実行するコマンド処理部２４と、クライアントを識別するクライアント番号（クライアントＩＤ）やクライアントに関する種々のデータを記憶するクライアント管理データベース（ＤＢ）２６とを有している。本実施の形態においては、クライアントから作業クライアントを含む他のクライアントへのデータ通信は、ロードバランサー１６を介して行われる。ロードバランサー１６はデータ授受に介在して、これに基づき、各クライアントの状態を把握することが可能となる。
【００２２】
図４（ｂ）は、クライアント管理ＤＢ２６中のデータの例を示す図である。図４（ｂ）に示すように、クライアント管理ＤＢ２６においては、クライアント番号（符号４０１）と、これに関連付けられた、当該番号が付与されたクライアントの状態を示すデータ（クライアント状態データ：符号４１１）および作業ログ（符号４１２）とを含むデータの組４００が記憶される。このようなデータの組４００は、クライアントごとに設けられている。
【００２３】
本実施の形態において、クライアント状態データとして、他のクライアントからの作業依頼を受け入れて分散処理の実行が可能な状態（ステータス）である「コントラクト(Contract)」、作業依頼に基づき分散処理を実行中である「ビジー(Busy)」、および、作業依頼の受け入れを拒否する「リジェクション(Rejection)」の３つを設定できるようになっている。したがって、ロードバランサー１６は、クライアントからのデータに基づき、適宜、このステータスを変更するようにクライアント管理ＤＢ３６を更新する。
【００２４】
このように構成されたデータ通信システムにおける処理について以下に説明を加える。図５（ａ）は、クライアント１２が起動してログインする際に実行される処理を示すフローチャートである。クライアント１２の起動により、ロードバランサー１６に、ホスト名（クライアント番号）にてログインする（ステップ５０１）。ロードバランサー１６のクライアント識別部２２が、クライアント番号に基づきクライアントを識別してログイン応答を返送する（ステップ５０２）。次いで、クライアント１２は、上述した３つのステータスのうち何れかを、自己のステータスとしてロードバランサー１６に伝達する（ステップ５０３）。ロードバランサー１６は、クライアント番号に基づき、クライアント管理ＤＢ２６中のデータの組４００を特定して、伝達されたステータスを記憶する（ステップ５０４）。これによりクライアント１２が登録される。
【００２５】
図６は、クライアントが起動されて、ロードバランサー１６に対するログイン処理を実行する状態を示すフローチャートである。図６に示すように、たとえば、クライアント１２−１（図中、「クライアント１」と表記している）に関しては、ログインおよびログイン応答（ステップ６０１、６０２）の後に、ステータス「コントラクト(Contract)」が通知されている（ステップ６０３）。ロードバランサー１６は、これに基づき、第１のクライアントのステータスを「コントラクト(Contract)」とするべくクライアントＤＢ２６を更新している（ステップ６１１）。
【００２６】
同様に、クライアント１２−２（図中「クライアント２」と表記している。）においても、ステータス「コントラクト(Contract)」が通知され、これがクライアントＤＢ２６に登録される（ステップ６２１〜６２３、ステップ６１２）。その一方、クライアント１２−ｉ（図中「クライアントｉ」と表記している）は、ログインの際に、既に分散処理を実行している最中であるため、ステータス「ビジー(Busy)」をロードバランサー１６に通知している（ステップ６３１〜６３３）。また、クライアント１２−ｎ（図中、「クライアントｎ」と表記している）は、何らかの理由、たとえば、オペレータが設定することなどにより、ステータス「リジェクション(Rejection)」を通知している（ステップ６４１〜６４３）。これらステータスが受理されるごとに、ロードバランサー１６は、クライアント管理ＤＢ２６を更新している（ステップ６１２〜６１４）。
【００２７】
次に、図３に示す前処理が終了した後に依頼主であるクライアントから、分散処理の割り当てを要求する際の処理につき、図５（ｂ）を参照して説明を加える。依頼主であるクライアント１２−１は、ロードバランサー１６に対して分散処理割り当て要求を伝達する（ステップ５１１）。ロードバランサー１６のクライアント識別部２２が、要求を伝達したクライアントを特定する（ステップ５１２）。次いで、クライアント管理ＤＢ２６が検索されて（ステップ５１３）、他のクライアントに関するデータの組を参照して、そのステータスが「コントラクト(Contract)」であるものが存在するか否かが判別される。作業依頼を受理可能な他のクライアントが存在しない場合には（ステップ５１４でノー(No)）、割り当て不可能であることがクライアント１２−１に通知される（ステップ５１５）。その一方、作業依頼を受理可能な他のクライアントが存在する場合には（ステップ５１４でイエス(Yes)）、ステータスが「コントラクト(Contract)」であるクライアントのリストがクライアントに伝達される（ステップ５１６）。
【００２８】
図７は、図５に引き続いて実行される処理を示すフローチャートである。依頼主であるクライアント１２−１（図中「クライアント１」と表記する）は、受理したリストを参照して（ステップ７００）。作業依頼をすべきクライアントおよび依頼にかかる作業単位を決定する。
クライアント１２−１は、依頼すべきクライアントを特定して、そのクライアント番号と作業単位を含む作業依頼とをロードバランサー１６を介して、依頼先であるクライアント１２−２（図中「クライアント２」と表記する）に伝達する（ステップ７０１、７０２）。クライアント１２−２は、作業依頼を受理して、これを受諾することが可能であれば、受諾応答を、ロードバランサー１６に返送する（ステップ７０３）。次いで、作業依頼に応答して、必要な作業を開始する（ステップ７０４）。ここで、クライアント１２−２は、上記作業に関して作業クライアントとなる。無論、クライアント１２−２は、依頼された作業に専従する必要は無く、たとえば、オペレータの指示にしたがった他の処理を実行できることは言うまでも無い。
【００２９】
ロードバランサー１６は、クライアント１２−１に対して、クライアント１２−２が受諾したことを示す受諾報告７０５を送信し（ステップ７０５）、次いで、クライアント１２−２のステータスを「ビジー(Busy)」とするようにクライアント管理ＤＢ２６を更新する（ステップ７０６）。クライアント１２−１も、クライアント１２−２が作業クライアントして、作業の一部の分散処理を担うことを記憶するのが望ましい（ステップ７０７）。
図７においては、他のクライアント１２−３（図中「クライアント３」と表記する）についても、作業依頼がなされ（ステップ７１１、７１２）、クライアント１２−３は、作業依頼を受諾して（ステップ７１３）、これにより、当該作業に関して作業クライアントとなる。クライアント１２−３も、依頼内容に応じた作業を開始する。ロードバランサー１６は、受諾報告を依頼主であるクライアント１２−１に伝達するとともに、クライアント１２−３のステータスを「ビジー(Busy)」にするようにクライアント管理ＤＢ２６を更新する（ステップ７１６）。クライアント１２−１においても、ステップ７０７と同様に、作業依頼の結果を記憶しておく（ステップ７１７）。
【００３０】
その一方、図８に示すように、依頼主であるクライアント１２−１が、リストにしたがってクライアント１２−ｉ（図中「クライアントｉ」と表記する）に作業依頼をしたものの（ステップ８０１、８０２）、何らかの理由によりこれが拒否される場合がある（ステップ８０３）。このような作業依頼に対する拒否の応答も、クライアント１２−ｉから、まず、ロードバランサー１６に伝達される（ステップ８０３）。
【００３１】
ロードバランサー１６は、作業依頼が拒否されたことを示す報告をクライアント１２−１に伝達する（ステップ８０４）とともに、クライアント１２−ｉのステータスを、「リジェクション(Rejection)」とするように、クライアント管理ＤＢ２６を更新する（ステップ８０５）。
また、拒否報告を受理したクライアント１２−１は、これを記憶するとともに、必要な場合には、作業割り当て（作業クライアントに割り当てる作業単位量など）を再形成するための処理を実行する。
【００３２】
図９は、作業クライアントにて作業が開始されてから（図７のステップ７０４参照）実行される処理を示すフローチャートである。図９に示すように、作業クライアントは、作成されていない場合には、ファイルサーバ１４にアクセスして、ワーキングディレクトリ内にホスト名（クライアント番号等）のディレクトリを作成する（ステップ９００）。本実施の形態においては、図３（ｂ）に示すように、ワーキングディレクトリ中に作成された中間ファイル３１１（\WorkDir\CL001）の下位に、たとえば、中間ファイル３１２−２（\WorkDir\CL002）が作成される。
次いで、作業クライアントは、作業依頼において指定された作業単位を特定して、依頼主であるクライアント１２−１の中間ファイル３１２−１（\WorkDir\CL001\CL001）から特定した作業単位に対応するファイルを、先に作成した中間ファイルに移動する（ステップ９０２）。
【００３３】
このような前処理の後、作業クライアントにおいては作成依頼にしたがったデータ処理が実行される（ステップ９０３）。データ処理による処理結果（たとえば、部品リスト）は、指定された中間ファイル３１１（\WorkDir\CL001）に出力される（ステップ９０４）。
また、作業クライアントは、所定のタイミングで、ロードバランサー１６に進捗状況を通知する（ステップ９０５）。無論、このような処理の間にも、オペレータの指示等に基づく作業クライアント自身の処理（本来の処理）が実行され得ることはいうまでもない。ステップ９０３ないし９０５の処理は、依頼された作業（データ処理）が終わるまで繰り返される（ステップ９０６参照）。依頼された作業が完了すると、作業クライアントは、処理の終了をロードバランサー１６に通知する（ステップ９０７）。
【００３４】
図１０は、作業クライアントからの進捗状況の通知や処理終了の通知に関するデータ通信処理を示すフローチャートである。前述したように、作業クライアントであるクライアント１２−２（図中、「クライアント２」と表記する）におけるデータ処理（ステップ１００１（ステップ９０３））において、所定のタイミングで進捗状況が、ロードバランサー１６に通知される（ステップ１００２）。ロードバランサー１６は、これを依頼主であるクライアント１２−１（図中、「クライアント１」と表記する）に伝達する（ステップ１００３）とともに、クライアント管理ＤＢ２６におけるクライアント１２−１に関するデータの組を見出して、その作業ログに必要な情報（データ処理中であることなど）を記憶する（ステップ１００４）。
【００３５】
依頼主であるクライアント１２−１は、進捗状況の通知を受理すると、作業クライアントの進捗状況を確認して、この進捗情報を作業クライアントと関連付けて記憶する（ステップ１００５）。
また、作業クライアントにおいて処理が終了して（ステップ１０１１（ステップ９０７））、終了通知がロードバランサー１６に伝達されると（ステップ１０１２）、ロードバランサー１６はこれをクライアント１２−１に伝達する（ステップ１０１３）とともに、クライアント管理ＤＢ２６を更新する（ステップ１０１４）。ここでは、クライアント１２−２のステータスが「ビジー(Busy)」から「コントラクト(Contract)」に変更される。また、依頼主であるクライアント１２−１においては、クライアント１２−２（作業クライアント）によるデータ処理が終了したことが記憶される（ステップ１０１５）。このような処理が、作業クライアントとなった他のクライアントに関しても実行される。
【００３６】
依頼主のクライアント１２−１においては、進捗状況の通知に関して、図１１に示す処理が実行される。作業を依頼している作業クライアントのうち、処理の対象となる作業クライアントが特定されると（ステップ１１０１）、依頼主であるクライアント１２−１は、当該作業クライアントについて所定のタイミングで進捗状況に関する通知があったか否かを判断する（ステップ１１０２）。ステップ１１０２でイエス(Yes)と判断された場合には、次の作業クライアントに関する作業に進む（ステップ１１０６参照）。その一方、ステップ１１０２でノー(No)と判断された場合には、クライアント１２−１は、当該作業クライアントにおいて何らかの理由により作業が中断していると判断して、作業クライアントと関連付けて判断結果を記憶する（ステップ１１０４）。次いで、作業クライアントに依頼した作業を他のクライアントに割り当てるなど、作業の再割り当てに必要な処理を実行する（ステップ１１０５）。このような処理が作業を依頼している全てのクライアントに関して実行される。
【００３７】
また、依頼主のクライアント１２−１は、作業の終了に関しても、図１１に示すような処理を実行しても良い。すなわち、所定の時間が経過したにもかかわらず、ある作業クライアントから終了通知が与えられない場合には、当該作業クライアントにおいて何らかの原因により作業が中断したものと判断し、その結果を記憶するように構成しても良い。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００３８】
たとえば、前記実施の形態においては、依頼主であるクライアントが、作業単位を画定し、必要な数の作業単位を含む作業依頼を、作業クライアントとなるべき他のクライアントに伝達した。すなわち、作業の割り当てを作業クライアントにて決定し、この割り当てを作業クライアントに伝達しているが、これに限定されるものではなく、作業クライアントが、自己が可能な作業単位数を判断して、当該作業単位数だけの作業を実行するようにしても良い。この場合には、たとえば、ロードバランサーにおいて、何れかのクライアントがどれだけの作業単位を分担しているかを含むテーブルを用意し、これを作業クライアント等が更新するように構成しても良い。
【００３９】
また、前記実施の形態において、ファイルサーバにおいて、作業対象となる中間ファイルを用意し、また、処理結果もファイルサーバ中の所定の中間ファイルに格納するように構成したが、これに限定するものではなく、依頼主のクライアント中に中間ファイルを用意し、また、処理結果を収容するように構成しても良い。
【００４０】
さらに、前記実施の形態において、ロードバランサー１６をクライアント１２とは別に設けているがこれに限定されるものではない。すなわち、何れかのクライアント１２がロードバランサーとして機能するように構成し、他のクライアントからのデータ通信を、ロードバランサーとして機能するクライアント１２を介して実現するような構成をとってもよい。
なお、本明細書において、一つの手段の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の手段の機能が、一つの物理的手段により実現されてもよい。
【００４１】
【発明の効果】
本発明によれば、各クライアントが、アプリケーションを対面して使用可能な状態に保ちつつ、その処理能力を効率的に利用して、全体として高い処理能力を持たせることが可能なシステムを提供することが可能となる。
【図面の簡単な説明】
【図１】  図１は、本発明の実施の形態にかかるシステムの概略を示すブロックダイヤグラムである。
【図２】  図２は、本実施の形態にかかるクライアントおよび作業クライアントの関係を説明するための図である。
【図３】  図３は、本実施の形態にかかるクライアントにて実行される処理のフローチャートおよびファイルサーバにおけるファイルの構成を説明する図である。
【図４】  図４は、本実施の形態にかかるロードバランサーの構成を示すブロックダイヤグラムおよびデータ構成図である。
【図５】  図５は、本実施の形態にかかるデータ通信システムにおけるデータ通信手順を示すフローチャートである。
【図６】  図６は、本実施の形態にかかるデータ通信システムにおけるデータ通信の例を示すフローチャートである。
【図７】  図７は、本実施の形態において作業依頼の際に実行される処理の例を示すフローチャートである。
【図８】  図８は、本実施の形態において作業依頼の際に実行される処理の例を示すフローチャートである。
【図９】  図９は、本発明の実施の形態にかかる作業クライアントにて実行される処理を示すフローチャートである。
【図１０】  図１０は、本実施の形態における進捗状況の通知の例を示すフローチャートである。
【図１１】  図１１は、本実施の形態において、依頼主であるクライアントにて実行される処理の例を示すフローチャートである。
【図１２】  図１２は、本システムにて実行される処理の概略を示すフローチャートである。
【符号の説明】
１２    クライアント
１４    ファイルサーバ
１６    ロードバランサー
１８    ＬＡＮ
２０    通信処理部
２２    クライアント識別部
２４    コマンド処理部
２６    クライアント管理ＤＢ
【図１】
0004612961.tif 000002
【図２】
0004612961.tif 000003
【図３】
0004612961.tif 000004
【図４】
0004612961.tif 000005
【図５】
0004612961.tif 000006
【図６】
0004612961.tif 000007
【図７】
0004612961.tif 000008
【図８】
0004612961.tif 000009
【図９】
0004612961.tif 000010
【図１０】
0004612961.tif 000011
【図１１】
0004612961.tif 000012
【図１２】
0004612961.tif 000013