以下、添付図面に基づいて、本発明を実施するための形態について、説明する。
図1は、本発明の実施形態であるグリッドコンピューティングシステムの概略図である。グリッドコンピューティングシステムは、クライアント装置10,サービス提供装置20,及び、サービス検索装置30を、備えており、これら各装置10〜30は、ネットワークNを介して互いに接続されている。
クライアント装置10は、各サービス提供装置20が提供する各種のサービスを享受する利用者によって操作される端末装置である。このクライアント装置10は、具体的には、いわゆるパーソナルコンピュータであり、液晶ディスプレイ等の表示装置と、キーボードやマウス等の入力装置と、これら装置に接続された本体とを、備えている。その本体は、CPU[Central Processing Unit],RAM[Random Access Memory],通信アダプタ,FDD[Flexible Disk Drive],CDD[Compact Disk Drive],及び、HDD[Hard Disk Drive]を、備えており、HDDには、オペレーティングシステムプログラムの他、クライアントプログラム11が、インストールされている。
クライアントプログラム11は、操作者からの指示を受け付けてサービスの享受を各サービス提供装置20に依頼するためのプログラムである。このクライアントプログラム11に従ってCPUが実行する処理の内容については、後述する。
サービス提供装置20は、各クライアント装置10に各種サービスを提供するためのサーバ装置である。このサービス提供装置20は、具体的には、いわゆる汎用コンピュータであり、その内部に、CPU,RAM,通信アダプタ,及び、記憶装置を、備えている。その記憶装置には、オペレーティングシステムプログラムの他、サービス提供プログラムSa〜Seのうちの一つ以上のサービス提供プログラムが、インストールされている。
サービス提供プログラムSa〜Seは、クライアント装置10にサービスを提供する機能を汎用コンピュータに付加するためのプログラムである。サービスの具体例としては、物理学的,天文学的,及び、遺伝学的な高度計算,製品情報や顧客情報などのデータベース検索,並びに、遠隔会議や遠隔監視などのアプリケーションによる処理がある。サービス提供装置20は、記憶装置にインストールされているサービス提供プログラムの数だけ、クライアント装置10にサービスを提供し得る。また、前述したように、二つ以上のサービス提供装置20に対して同一のサービス提供プログラムがインストールされている場合もある。
なお、本実施形態では、七台のサービス提供装置20がネットワークNに接続されており、第1のサービス提供装置20の記憶装置には、サービスAを提供するためのサービス提供プログラムSaが記録され、第2のサービス提供装置20の記憶装置には、サービスBを提供するためのサービス提供プログラムSbが記録され、第3のサービス提供装置20の記憶装置には、サービスCを提供するためのサービス提供プログラムScが記録され、第4のサービス提供装置20の記憶装置には、サービスDを提供するためのサービス提供プログラムSdが記録され、第5のサービス提供装置20の記憶装置には、サービスEを提供するためのサービス提供プログラムSeが記録されている。また、第6のサービス提供装置20の記憶装置には、サービスAを提供するためのサービス提供プログラムSaが記録され、第7のサービス提供装置20の記憶装置には、サービスC,D,Eをそれぞれ提供するためのサービス提供プログラムSc〜Seが記録されている。
そして、サービス提供装置20の記憶装置には、前述したサービス提供プログラムSa〜Seの幾つかとともに、更に、本発明に係るテーブル群20a及びプログラム群20bが、インストールされている。図2は、サービス提供装置20の記憶装置にインストールされているテーブル群20a及びプログラム群20bを示す説明図である。なお、図2に示されるテーブル群20a及びプログラム群20bは、図1の紙面内における最も右側にある第7のサービス提供装置20の例である。
テーブル群20aは、キュー管理テーブル21,動作履歴管理テーブル22,スケジュール管理テーブル23,及び、稼働状況管理テーブル24からなる。このうち、稼働状況管理テーブル24を除く一組の管理テーブル21〜23に記録されているレコードの内容は、サービスの提供にあたって時々変動するものとなっており、動的情報に相当している。
なお、本実施形態では、サービス提供装置20が記憶装置に記憶する一組の管理テーブル21〜23のコピーが、少なくとも一台の他のサービス提供装置20の記憶装置に記録されている。従って、サービス提供装置20の記憶装置には、そのサービス提供装置20が自己の動的情報を管理するために利用する一組の管理テーブル21〜23の他に、他のサービス提供装置がそれ自身の動的情報を管理するために利用する管理テーブル21〜23のコピーが、インストールされている場合がある。換言すれば、一台のサービス提供装置20の記憶装置は、自装置用の管理テーブル21〜23と、他装置用の管理テーブル21〜23とを、記憶する場合がある。この場合において、記憶装置が記憶する他装置用の管理テーブル21〜23は、一組であっても良いし、二組以上であっても良い。二組以上の場合には、一組ごとに、その管理テーブル21〜23を利用するサービス提供装置20が異なっている。
さらに、例えば二台のサービス提供装置20が、互いに自装置用の管理テーブル21〜23と他装置用の管理テーブル21〜23とを持ち合っていても良い。このとき、一方のサービス提供装置20の記憶装置には、自装置用の管理テーブル21〜23と、他装置用の管理テーブル21〜23とが、一組ずつ記録され、他方のサービス提供装置20の記憶装置にも、同じように、自装置用と他装置用とが一組ずつ記録される。また、三台以上のサービス提供装置20が、互いに自装置用の管理テーブル21〜23と他装置用の管理テーブル21〜23とを持ち合っていても良い。このとき、一台のサービス提供装置20の記憶装置には、自装置用の管理テーブル21〜23が一組記録されるとともに、他装置用の管理テーブル21〜23が二組以上記録される。
以下では、サービス提供装置20が自装置用として自身の記憶装置に記憶している管理テーブル21〜24について、説明する。
キュー管理テーブル21は、このサービス提供装置20がクライアント装置10から受け付けた実行の指示を管理するためのテーブルである。図3は、キュー管理テーブル21のデータ構造の一例を示す図である。図3のキュー管理テーブル21中のレコードは、「依頼管理ID」,「依頼元」,「サービス名」,「パラメータ名」,「経由サーバ名」,「ステータス」,及び、「ステータス変更日時」のフィールドを、有している。
ここで、「依頼管理ID」は、サービス提供プログラムSa〜Seの実行の依頼を個別に識別するために各依頼に対して一意に割り当てられる識別情報である依頼管理IDが記録されるフィールドである。「依頼元」は、サービスの実行を依頼してきたクライアント装置10のアドレスが記録されるフィールドである。また、「サービス名」は、クライアント装置10によって実行を依頼されたサービスの名称が記録されるフィールドである。また、「パラメータ名」は、サービスの実行の依頼とともにクライアント装置10から引数として受け取ったパラメータの名称が記録されるフィールドである。
また、「経由サーバ名」は、クライアント装置10からのサービスの実行の依頼を自装置の代わりに受けて一時的に保管していた他のサービス提供装置20の名称が経由サーバ名として記録されるフィールドである。なお、クライアント装置10からのサービスの実行をクライアント装置10から直接依頼された場合には、この「経由サーバ名」フィールドは空欄となる。また、「ステータス」は、このサービスが実行済であるか実行中であるか待機中であるかを示すステータス情報が記録されるフィールドである。また、「ステータス変更日時」は、ステータス情報が最後に変更されたときの年月日時分秒がステータス変更日時情報として記録されるフィールドである。
動作履歴管理テーブル22は、このサービス提供装置20におけるイベント(自装置へのサービス実行依頼の受け付け,サービスの実行の開始,サービスの実行の終了,異常終了,他装置へのサービス実行依頼の代理受け付けなど)に関する情報を記録しておくためのテーブルである。図4は、動作履歴管理テーブル22のデータ構造の一例を示す図である。図4の動作履歴管理テーブル22中のレコードは、「依頼管理ID」,「イベント種別」,「イベント発生日時」,「対象サーバ名」,及び、「対象サービス名」のフィールドを、有している。
ここで、「依頼管理ID」は、依頼管理IDが記録されるフィールドである。なお、この依頼管理IDは、このサービス提供装置20が他装置の代理で受け付けたその他装置へのサービス実行依頼に対しても、割り当てられる。但し、このようにして他装置への依頼に対して割り当てられた依頼管理IDが、前述したキュー管理テーブル21に記録されることはない。
また、「イベント種別」は、そのイベントの種別が記録されるフィールドである。また、「イベント発生日時」は、そのイベントが行われた時の年月日時分秒がイベント発生日時情報として記録されるフィールドである。また、「対象サーバ名」は、クライアント装置10からサービスの実行の依頼がなされたサービス提供装置20の名称が対象サーバ名として記録されるフィールドである。また、「対象サービス名」は、クライアント装置10が提供を依頼してきたサービスの名称が記録されるフィールドである。
スケジュール管理テーブル23は、保守によりこのサービス提供装置20が停止する予定期間を管理するためのテーブルである。図5は、スケジュール管理テーブル23のデータ構造の一例を示す図である。図5のスケジュール管理テーブル23中のレコードは、「予定情報」及び「予定時刻」のフィールドを、有している。
ここで、「予定情報」は、サービス提供装置20の稼働の開始又は停止を示す情報が記録されるフィールドである。また、「予定時刻」は、その稼働の開始又は停止が行われる予定時刻が記録されるフィールドである。なお、これら情報は、管理者によって事前にこのテーブル23に記録されたものである。
稼働状況管理テーブル24は、このサービス提供装置20の稼働状況と、このサービス提供装置20の記憶装置に記録されている他装置用の管理テーブル21〜23を本来利用するサービス提供装置20の稼働状況とを記録しておくためのテーブルである。図6は、稼働状況管理テーブル24のデータ構造の一例を示す図である。図6の稼働状況管理テーブル24中のレコードは、「サーバ名」,「稼働状況」,及び、「自他情報」のフィールドを、有している。
ここで、「サーバ名」は、このサービス提供装置20のサーバ名と、このサービス提供装置20の記憶装置に記録されている他装置用の管理テーブル21〜23を本来利用するサービス提供装置20のサーバ名とが、記録されるフィールドである。また、「稼働状況」は、各サービス提供装置20が稼働中であるか停止中であるかを示す稼働状況情報が記録されるフィールドである。また、「自他情報」は、そのサーバ名にて示されるサービス提供装置20が自装置であるか他装置であるかを示す自他情報が記録されるフィールドである。
図1中のサービス検索装置30は、各サービスがどのサービス提供装置20から提供されるかを検索するための装置である。サービス検索装置30は、具体的には、汎用コンピュータであり、その内部に、CPU,RAM,通信アダプタ,及び、記憶装置を、備えている。その記憶装置には、オペレーティングシステムプログラムの他、静的情報管理テーブル31,保有関係管理テーブル32,及び、サービス検索プログラム33が、インストールされている。
静的情報管理テーブル31は、各サービスを提供するサービス提供装置20についての情報を記録しておくためのテーブルである。図7は、静的情報管理テーブル31のデータ構造の一例を示す図である。図7の静的情報管理テーブル31中のレコードは、「サービス名」,「サーバ名」,「プログラム名」,及び、「プログラム引数」のフィールドを、有している。
ここで、「サービス名」は、サービスの名称が記録されるフィールドである。また、「サーバ名」は、そのサービスを提供するサービス提供装置20のサーバ名が記録されるフィールドである。また、「プログラム名」は、そのサービスを提供する際に実行されるサービス提供プログラムの名称が記録されるフィールドである。また、「プログラム引数」は、同じレコードの「プログラム名」フィールドに名称が記録されたサービス提供プログラムの実行時に実行条件として与え得る全ての引数が記録されるフィールドである。なお、同一のサービスが複数のサービス提供装置20から提供される場合、静的情報管理テーブル31は、そのサービスについてのレコードを、そのサービスを提供するサービス提供装置20の数だけ、有している。
保有関係管理テーブル32は、サービス提供装置20の記憶装置に自装置用として記録されている管理テーブル21〜23のコピーがどのサービス提供装置20に保有されているかを記録しておくためのテーブルである。図8は、保有関係管理テーブル32のデータ構造の一例を示す図である。図8の保有関係管理テーブル32中のレコードは、「サーバ名」及び「コピー保有サーバ名」のフィールドを、有している。
ここで、「サーバ名」は、サービス提供装置20のサーバ名が記録されるフィールドである。「コピー保有サーバ名」は、同じレコードの「サーバ名」フィールドにサーバ名が記録されているサービス提供装置20の記憶装置に自装置用として記録されている管理テーブル21〜23のコピーを、記憶装置に保有しているサービス提供装置20のサーバ名が記録されるフィールドである。
サービス検索プログラム33は、各サービスがどのサービス提供装置20において提供されているかを検索する機能を汎用コンピュータに付加するためのプログラムである。このサービス検索プログラム33に従ったCPUは、何れかのクライアント装置10からの依頼を受けると、そのクライアント装置10に指定されたサービスを提供するサービス提供装置20のサーバ名と、そのサーバ名に対応するコピー保有サーバ名とを上記各テーブル31,32から検索してその検索結果をクライアント装置10に通知する。
以下、以上のように構成される本実施形態のグリッドコンピューティングシステムにおいて実行される処理の内容について、説明する。
サービス提供装置20では、所定の時間(例えば10分間)が経過する毎に、CPUによって記憶装置からキュー実行プログラム25が読み込まれ、キュー実行処理の実行が開始される。図9は、キュー実行処理の内容を示すフローチャートである。
キュー実行処理の開始後、最初のステップS101では、サービス提供装置20は、自装置用として記憶装置に記憶しているキュー管理テーブル21から、「ステータス」フィールドに「待機中」が記録されているレコードを検索する。そして、サービス提供装置20は、「待機中」のステータス情報を持つレコードを自装置用のキュー管理テーブル21から検出できなかったと判断した場合(S101;NO)、キュー実行処理を終了し、「待機中」のステータス情報を持つレコードを自装置用のキュー管理テーブル21から検出できたと判断した場合(S101;YES)、ステップS102へ処理を進める。
ステップS102では、サービス提供装置20は、ステップS101において自装置用のキュー管理テーブル21から検出したレコードのうち、「ステータス変更日時」フィールドに記録されたステータス変更日時情報の示す年月日時分秒の値が最も古いレコードを、特定する。
次のステップS103では、サービス提供装置20は、ステップS102において特定したレコードの「サービス名」フィールドに記録されているサービス名にて示されるサービス提供プログラムを、記憶装置から読み出して、その実行を開始する。
次のステップS104では、サービス提供装置20は、ステップS102において特定したレコードの「ステータス」フィールド中の値を「待機中」から「実行中」へ切り替える。
次のステップS105では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている動作履歴管理テーブル22に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS102において特定したレコードの「依頼管理ID」フィールド中の依頼管理IDと同じものが記録され、その「イベント種別」フィールドには、「サービス開始」が記録される。
次のステップS106では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21のコピーを保有している全てのサービス提供装置20に対し、ステップS102において特定したレコードの「ステータス」フィールド中の値を「待機中」から「実行中」へ切り替えるべき旨と、依頼元のクライアント装置10のアドレス,対象サービス名,及び、パラメータ名とを含むイベント情報を、通知する。
次のステップS107では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21のコピーを保有している全てのサービス提供装置20に対し、動作履歴管理テーブル22に新たなレコードを追加すべき旨と、その新たなレコードに含まれる情報(依頼管理IDやイベント種別など)とを含むイベント情報を、通知する。
次のステップS108では、サービス提供装置20は、ステップS103において開始したサービス提供プログラムの実行が終了するまで、待機する(S108;NO)。そして、当該サービス提供プログラムの実行が終了すると(S108;YES)、サービス提供装置20は、ステップS109へ処理を進める。
ステップS109では、サービス提供装置20は、ステップS102において特定したレコードの「ステータス」フィールド中の値を「実行中」から「実行済」へ切り替える。
次のステップS110では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている動作履歴管理テーブル22に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS102において特定したレコードの「依頼管理ID」フィールド中の依頼管理IDと同じものが記録され、その「イベント種別」フィールドには、「サービス終了」が記録される。
次のステップS111では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21のコピーを保有している全てのサービス提供装置20に対し、ステップS102において特定したレコードの「ステータス」フィールド中の値を「実行中」から「実行済」へ切り替えるべき旨と、依頼元のクライアント装置10のアドレス,対象サービス名,及び、パラメータ名とを含むイベント情報を、通知する。
次のステップS112では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21のコピーを保有している全てのサービス提供装置20に対し、動作履歴管理テーブル22に新たなレコードを追加すべき旨と、その新たなレコードに含まれる情報(依頼管理IDやイベント種別など)とを含むイベント情報を、通知する。通知後、CPU30は、キュー実行処理を終了する。
また、サービス提供装置20では、何れかのクライアント装置10,又は、自装置用として自身の記憶装置に記録されている管理テーブル21〜23のコピーを保有している何れかのサービス提供装置20から、イベント情報が送信されてくると、その受信をトリガとして、CPUによって記憶装置からイベント受付プログラム26が読み込まれ、イベント受付処理の実行が開始される。図10及び図11は、イベント受付処理の内容を示すフローチャートである。
イベント受付処理の開始後、最初のステップS201では、サービス提供装置20は、イベント情報の送信元が、自装置用の管理テーブル21〜23のコピーを保有している何れかのサービス提供装置20であるか否かを、判別する。そして、サービス提供装置20は、イベント情報の送信元が、自装置用の管理テーブル21〜23のコピーを保有しているサービス提供装置20の何れでもないと判断した場合(S201;NO)、イベント情報が何れかのクライアント装置10から受信したものであると判断して、ステップS202へ処理を進める。
ステップS202では、サービス提供装置20は、受信したイベント情報が自分へのサービスの実行依頼を示す情報であるか否かを、判別する。そして、受信したイベント情報が自分へのサービスの実行依頼を示す情報でないと判断した場合(S202;NO)、サービス提供装置20は、そのイベント情報が、他装置用として自身の記憶装置に記録されている管理テーブル21〜23を利用するサービス提供装置20に対するサービスの実行依頼を示す情報であると判断して、ステップS203へ処理を進める。
ステップS203では、サービス提供装置20は、新たな依頼管理IDを生成する。
次のステップS204では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている動作履歴管理テーブル22に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS203において生成した依頼管理IDが記録され、その「イベント種別」フィールドには、「依頼受付」が記録され、「対象サーバ名」フィールドには、このサービスの実行依頼を受けたサービス提供装置20のサーバ名が記録される。
次のステップS205では、サービス提供装置20は、他装置用として自身の記憶装置に記録されている管理テーブル21〜23を利用するサービス提供装置20に対し、その装置20宛てのサービスの実行依頼を代理にて受け付けた旨と、その依頼に係るその装置用の各テーブル21〜23の更新をすべき旨と、その装置用の各テーブル21〜23の更新に必要な各種の情報(クライアント装置のアドレス、実行が依頼されたサービスのサービス名など)とを含むイベント情報を、通知する。
次のステップS206では、サービス提供装置20は、ステップS205においてイベント情報を通知したサービス提供装置20からその応答があったか否かを、判別する。なお、その応答とは、そのサービス提供装置20が、代理に受け付けられたその装置20宛の依頼に基づいて、各テーブル21〜23の更新に係る情報を送信してくることである。そして、ステップS205においてイベント情報を通知したサービス提供装置20からその応答がなかったと判断した場合(S206;NO)、サービス提供装置20は、ステップS207へ処理を進める。
ステップS207では、サービス提供装置20は、稼働状況管理テーブル24において、ステップS206において応答が無かったサービス提供装置20についてのレコードの「稼働状況」フィールド中の値を「稼働中」から「停止中」へ切り替える。切り替えた後、サービス提供装置20は、イベント受付処理を終了する。
一方、ステップS206において、サービス提供装置20は、ステップS205においてイベント情報を通知したサービス提供装置20からその応答があったと判断した場合(S206;YES)、ステップS208へ処理を進める。
ステップS208では、サービス提供装置20aは、ステップS206において応答があったサービス提供装置20について自身の記憶装置に記録する管理テーブル21〜23を、応答として受信した各種の情報に基づいて、更新する。更新後、サービス提供装置20aは、イベント受付処理を終了する。
一方、ステップS202において、サービス提供装置20は、受信したイベント情報が自分へのサービスの実行依頼を示す情報であると判断した場合(S202;YES)、ステップS211へ処理を進める。
ステップS211では、サービス提供装置20は、新たな管理IDを生成する。
次のステップS212では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS211において生成した依頼管理IDが記録され、その「イベント種別」フィールドには、「依頼受付」が記録され、「対象サーバ名」フィールドには、自装置のサーバ名が記録される。
次のステップS213では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている動作履歴管理テーブル22に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS211において生成した依頼管理IDが記録され、「イベント種別」フィールドには、「依頼受付」が記録される。
次のステップS214では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている管理テーブル21〜23のコピーを保有する全てのサービス提供装置20に対し、自装置宛てのサービスの実行依頼を受け付た旨と、その依頼に係る自装置用の各テーブル21〜23の更新をすべき旨と、自装置用の各テーブル21〜23の更新に必要な各種の情報(クライアント装置のアドレス、実行が依頼されたサービスのサービス名など)とを含むイベント情報を、通知する。通知した後、サービス提供装置20は、イベント受付処理を終了する。
また、ステップS201において、サービス提供装置20は、イベント情報の送信元が、自装置用の管理テーブル21〜23のコピーを保有しているサービス提供装置20の何れかであると判断した場合(S201;YES)、ステップS221へ処理を進める。
ステップS221では、サービス提供装置20は、稼働状況管理テーブル24において、イベント情報の送信元のサービス提供装置20についてのレコードの「稼働状況」フィールドの値が「稼働中」となっているか否かを、判別する。そして、サービス提供装置20は、稼働状況管理テーブル24において、イベント情報の送信元のサービス提供装置20についてのレコードの「稼働状況」フィールドの値が「稼働中」と判断した場合(S221;YES)、ステップS224へ処理を進め、稼働状況管理テーブル24において、イベント情報の送信元のサービス提供装置20についてのレコードの「稼働状況」フィールドの値が「稼働中」となっていないと判断した場合(S221;NO)、ステップS222へ処理を進める。
ステップS222では、CPUは、稼働状況管理テーブル24において、イベント情報の送信元のサービス提供装置20についてのレコードの「稼働状況」フィールドの値を「停止中」から「稼働中」に切り替える。
次のステップS223では、サービス提供装置20は、自装置用として自身の記憶装置に記憶している動作履歴管理テーブル22から、「対象サーバ名」フィールドが自装置のサーバ名でないレコードを読み出し、それらレコードを、イベント情報の送信元のサービス提供装置20へ送信する。送信した後、サービス提供装置20は、ステップS224へ処理を進める。
ステップS224では、サービス提供装置20は、受信したイベント情報が自装置宛のサービスの実行依頼を示す情報であるか否かを、判別する。そして、受信したイベント情報が自装置宛てのサービスの実行依頼を示す情報であると判断した場合(S224;YES)、サービス提供装置20は、ステップS225へ処理を進める。
ステップS225では、サービス提供装置20は、新たな管理IDを生成する。
次のステップS226では、サービス提供装置20は、自装置用として自身の記憶装置に記録されているキュー管理テーブル21に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS225において生成した依頼管理IDが記録され、その「イベント種別」フィールドには、「依頼受付」が記録され、「対象サーバ名」フィールドには、自装置のサーバ名が記録される。
次のステップS227では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている動作履歴管理テーブル22に対し、新たなレコードを追加する。この新たなレコードの「依頼管理ID」フィールドには、ステップS225において生成した依頼管理IDが記録され、「イベント種別」フィールドには、「依頼受付」が記録される。
次のステップS228では、サービス提供装置20は、自装置用として自身の記憶装置に記録されている管理テーブル21〜23のコピーを保有する全てのサービス提供装置20に対し、自装置宛てのサービスの実行依頼を受け付た旨と、その依頼に係る自装置用の各テーブル21〜23の更新をすべき旨と、自装置用の各テーブル21〜23の更新に必要な各種の情報(クライアント装置のアドレス、実行が依頼されたサービスのサービス名など)とを含むイベント情報を、通知する。通知した後、サービス提供装置20は、イベント受付処理を終了する。
一方、ステップS224において、受信したイベント情報が自分へのサービスの実行依頼を示す情報でないと判断した場合(S224;NO)、サービス提供装置20は、ステップS229へ処理を進める。
ステップS229では、サービス提供装置20は、受信したイベント情報に基づき、他装置用として自身の記憶装置に記憶している各管理テーブル21〜23を更新する。サービス提供装置20は、例えば、イベント情報がステータス情報の切り替え(他のサービス提供装置20で実行されたS106やS111やS214やS228に基づくイベント情報)であれば、その他装置用のキュー管理テーブル21における該当するレコードのステータス情報を切り替える。また、イベント情報が動作履歴管理テーブル22への新レコードの追加(他のサービス提供装置20において実行されたS107やS112や205やS223に基づくイベント情報)であれば、その他装置用の動作履歴管理テーブル22に対し、該当する情報を有するレコードを追加する。このステップS229を実行した後、サービス提供装置20は、イベント受付処理を終了する。
一方、クライアント装置10では、入力装置が操作されることによって、クライアントプログラムの実行を指示されると、CPUによってHDDからクライアントプログラムが読み込まれ、クライアント処理の実行が開始される。図12乃至図14は、クライアント処理の内容を示すフローチャートである。
クライアント処理の開始後、最初のステップS301では、クライアント装置10は、操作画面を表示装置に表示する。図15は、操作画面41の一例を示す図である。
図15の操作画面41には、サービス名を入力するためのテキストボックス41aが、示されている。また、図15の操作画面41には、上記サービス名のサービスを提供できるサービス提供装置20を検索してその検索結果を表示する際に、サービス提供装置20を後述する速度優先の順番で表示するのか品質優先の順番で表示するのかを選択するための二個のラジオボタン41b,41cが、示されている。
また、図15の操作画面には、上記検索結果が表示される一覧表41dが、示されている。この一覧表41dの各行に検索結果として記録されるレコードは、サーバ名,そのサーバ名のサービス提供装置20の動的情報のコピーを保有するサービス提供装置20のサーバ名,予定されている全てのサービスの実行が終了する予定時刻,及び、現在の動作状態をそれぞれ示すフィールドを、有している。
さらに、図15の操作画面には、テキストボックス41aへのサービス名の入力が済んだ際にクリックするための検索ボタン41e,一覧表41d中の何れかの行を選択した際にクリックするための実行ボタン41f,及び、クライアント処理を終了する際にクリックするための中止ボタン41gが、示されている。
なお、ステップS301において表示装置に表示される操作画面41の一覧表41dには、何も列挙されていない。また、実行ボタン41fはクリックできないように機能不能となっている。クライアント装置10は、このような操作画面を表示装置に表示した後、ステップS302へ処理を進める。
ステップS302では、クライアント装置10は、操作画面41における検索ボタン41e及び中止ボタン41gの何れか一方がクリックされるまで、待機する(S302;NO)。そして、操作画面41における検索ボタン41e及び中止ボタン41gの何れか一方がクリックされると(S302;YES)、クライアント装置10は、ステップS303へ処理を進める。
ステップS303では、クライアント装置10は、クリックされたボタンが検索ボタン41eであるか否かを、判別する。そして、クライアント装置10は、クリックされたボタンが検索ボタン41eでないと判断した場合(S303;NO)、クライアント処理を終了し、クリックされたボタンが検索ボタン41eであると判断した場合(S303;YES)、ステップS304へ処理を進める。
ステップS304では、クライアント装置10は、検索ボタン41eがクリックされた時点でテキストボックス41aに入力されていたサービス名を検索条件として静的情報管理テーブル31を検索するとともにその検索結果を検索条件として保有関係管理テーブル32を検索するように、サービス検索装置30へ依頼する。なお、この依頼を受けたサービス検索装置30では、サービス検索プログラムが起動して、上記サービス名を検索条件としたサービス検索処理が実行され、検索の結果得られた各サーバ名が、クライアント装置10へ送信される。
次のステップS305では、クライアント装置10は、サービス検索装置30から検索結果として各レコードを受信するまで、待機する(S305;NO)。そして、サービス検索装置30から検索結果として各サーバ名を受信すると、クライアント装置10は、第1処理ループL1を実行する。
第1処理ループL1では、クライアント装置10は、検索結果として受信した各サーバ名を一つずつ処理対象として特定することにより、ステップS361〜S363を全てのサーバ名に対して順に実行する。
ステップS361では、クライアント装置10は、処理対象サーバ名にて示されるサービス提供装置20に対し、自装置用の全ての動的情報(管理テーブル21〜23)を送信するように、要求する。
次のステップS362では、クライアント装置10は、当該サービス提供装置20から動的情報を取得できたか否かを、判別する。そして、クライアント装置10は、当該サービス提供装置20から動的情報を取得できたと判断した場合(S362;YES)、この処理対象サーバ名に対する第1処理ループL1の実行を終了し、当該サービス提供装置20から動的情報を取得できなかったと判断した場合(S362;NO)、ステップS363へ処理を進める。
ステップS363では、クライアント装置10は、処理対象サーバ名にて示されるサービス提供装置20が自装置用として記憶装置に記憶している管理テーブル21〜23のコピーを保有しているサービス提供装置20から、処理対象サーバ名にて示されるサービス提供装置20用の動的情報を取得する。なお、クライアント装置10は、コピーを保有するサービス提供装置20が複数存在する場合には、これら装置20に対して動的情報の送信を順に要求し、動的情報を取得できたところで、ステップS363の実行を終了する。このステップS363の実行後、クライアント装置10は、この処理対象サーバ名に対する第1処理ループL1の実行を終了する。
クライアント装置10は、検索結果として受信した全てのサーバ名について第1処理ループL1を実行した後、ステップS306へ処理を進める。
ステップS306では、クライアント装置10は、検索ボタン41eがクリックされた時点で選択されていたラジオボタン41b,41cが何れのラジオボタンであるか否かを、判別する。そして、検索ボタン41eがクリックされた時点で選択されていたラジオボタンが速度優先のラジオボタン41bであると判断した場合(S306;YES)、クライアント装置10は、第2処理ループL2を実行する。
第2処理ループL2では、クライアント装置10は、検索結果として受信した各サーバ名を一つずつ処理対象として特定することにより、ステップS371〜S373を全てのサーバ名に対して順に実行する。
ステップS371では、クライアント装置10は、処理対象サーバ名のキュー管理テーブル21を参照することによって、待機中キューの数を計数する。
次のステップS372では、クライアント装置10は、処理対象サーバ名の動作履歴管理テーブル22を参照することによって、指定されたサービス名のサービスをこのサービス提供装置20が実行したときの処理時間を、サービス開始のイベント発生日時とサービス終了のイベント発生日時とから算出する。このサービス提供装置20が複数回このサービスを実行している場合には、その回数分だけ、処理時間を算出する。そして、クライアント装置10は、算出した処理時間の総和をその個数にて除算することにより、平均処理時間を算出する。
ステップS373では、クライアント装置10は、処理対象サーバ名のサービス提供装置20が停止中の場合には、そのスケジュール管理テーブル23を参照することによって、その稼働が再開されるまでの時間を算出し、ステップS372において算出した平均処理時間にその時間を加算することによって得られる時間を、予定所要時間とする。また、クライアント装置10は、処理対象サーバ名のサービス提供装置20が停止中の場合には、平均処理時間をそのまま予定所要時間とする。その後、クライアント装置10は、この処理対象サーバ名に対する第1処理ループL2の実行を終了する。
クライアント装置10は、検索結果として受信した全てのサーバ名について第2処理ループL2を実行した後、ステップS307へ処理を進める。
ステップS307では、クライアント装置10は、検索結果としての各サーバ名と予定所要時間とを持つレコードを、予定所要時間の短い順に並べ替える。並べ替えた後、クライアント装置10は、ステップS309へ処理を進める。
一方、ステップS306において、クライアント装置10は、検索ボタン41eがクリックされた時点で選択されていたラジオボタンが品質優先のラジオボタン41cであると判断した場合(S306;NO)、クライアント装置10は、第3処理ループL3を実行する。
第3処理ループL3では、クライアント装置10は、検索結果として受信した各サーバ名を一つずつ処理対象として特定することにより、ステップS381〜S383を全てのサーバ名に対して順に実行する。
ステップS381では、クライアント装置10は、処理対象サーバ名のサービス提供装置20が自装置用として自身の記憶装置に記憶する管理テーブル21〜23のコピーを保有するサービス提供装置20の数を、計数する。
次のステップS382では、クライアント装置10は、処理対象サーバ名のサービス提供装置20の自装置用の動的情報のコピーを保有するサービス提供装置20のそれぞれについて、その動作履歴管理テーブル22から異常終了の発生頻度(単位時間当たりの発生件数)を算出する。
次のステップS383では、クライアント装置10は、各発生頻度の逆数を算出した後、各逆数を全て加算することによって品質値を算出する。その後、クライアント装置10は、この処理対象サーバ名に対する第3処理ループL3の実行を終了する。
クライアント装置10は、検索結果として受信した全てのサーバ名について第3処理ループL3を実行した後、ステップS308へ処理を進める。
ステップS308では、クライアント装置10は、検索結果としての各サーバ名と品質値とを持つレコードを、品質値の大きい順に並べ替える。並べ替えた後、クライアント装置10は、ステップS309へ処理を進める。
ステップS309では、クライアント装置10は、表示装置に表示中の操作画面41の一覧表41dに、検索結果としてのサーバ名と、そのサーバ名のサービス提供装置20による指定サービスの実行終了予定時刻とを有するレコードを、ステップS307又はS308において並べ替えられた順に、列挙する。また、そのサーバ名のサービス提供装置20が停止中である場合には、そのサーバ名のレコードには、さらに、そのサービス提供装置20の代わりにサービスの実行依頼を受け付けるサービス提供装置20(動的情報のコピーを保有するサービス提供装置20)のサーバ名が、含まれる。また、そのサーバ名のサービス提供装置20もそのコピー保有のサービス提供装置20も全て停止中である場合には、そのサーバ名を持つレコードの「ステータス」フィールドには、「サービス停止中」が記述される。図16は、検索結果が一覧表41dに列挙された状態にある操作画面41の一例を示す図である。なお、この図16の操作画面41においては、一覧表41d内の各行は、その行を選択することができるボタンとして機能する。そして、その一覧表41d内の何れかの行が選択されると、その行に示されたサーバ名のサービス提供装置20における各種の情報がリストボックスとして表示される。図17は、このリストボックスが表示されているときの操作画面41の一例を示す図である。
次のステップS310では、クライアント装置10は、操作画面41における各ボタン41e〜41gの何れか一つがクリックされるまで、待機する(S310;NO)。そして、操作画面41における各ボタン41e〜41gの何れか一つがクリックされると(S310;YES)、クライアント装置10は、ステップS311へ処理を進める。
ステップS311では、クライアント装置10は、クリックされたボタンが実行ボタン41fであるか否かを、判別する。そして、クライアント装置10は、クリックされたボタンが実行ボタン41fであると判断した場合(S311;YES)、第4処理ループL4を実行する。
第4処理ループL4では、クライアント装置10は、操作画面41の一覧表41dに列挙されているレコードを一つずつ処理対象として特定することにより、ステップS391〜S395を全てのレコードに対して順に実行する。
ステップS391では、クライアント装置10は、処理対象レコード中のサーバ名のサービス提供装置20に対し、指定サービスの実行を依頼する旨のイベント情報を、通知する。
次のステップS392では、クライアント装置10は、待機処理の実行を開始する。具体的には、サービス提供プログラムが呼び掛け型である場合には、クライアント装置10は、実行が終了したかの問い合わせを定期的に送信する処理を、そのサービス提供プログラムから実行終了の応答が得られるまで繰り返す。この処理は、クライアント装置10では、他の処理と並行に実行される。また、サービス提供プログラムが割り込み型である場合には、クライアント装置10は、そのサービス提供プログラムから実行終了が通知されるまで、他の処理を行わずに待機状態を維持する。何れの場合も、クライアント装置10は、操作画面41の一覧表41dにおける当該レコードのステータスフィールドに、「実行中」を表示する。図18は、一覧表41d内の一つのレコードのステータスフィールドに「実行中」が示されているときの操作画面41の一例を示す図である。
次のステップS393では、クライアント装置10は、処理対象レコードの終了予定時刻が経過するまで待機する(S393;NO)。そして、終了予定時刻が経過すると(S393;YES)、クライアント装置10は、ステップS394へ処理を進める。
ステップS394では、クライアント装置10は、サービス提供装置20においてサービスの実行が正常に終了したか否かを、判別する。そして、サービス提供装置20においてサービスの実行が正常に終了していないと判断した場合(S394;NO)、クライアント装置10は、ステップS395へ処理を進める。
ステップS395では、クライアント装置10は、サービスの実行を依頼しているサービス提供装置20が自装置用として記憶装置に記憶する管理テーブル21〜23のコピーを保有するサービス提供装置20に対し、サービス実行中のサービス提供装置20において異常終了が発生した旨と、異常終了に係る各管理テーブル21〜23の更新をすべき旨を含むイベント情報を通知する。通知した後、クライアント装置10は、操作画面41の一覧表41dにおける当該レコードのステータスフィールドに、「異常終了」を表示する。図19は、一覧表41d内の一つのレコードのステータスフィールドに「異常終了」が示されているときの操作画面41の一例を示す図である。このような表示の切り替えを行った後、クライアント装置10は、この処理対象レコードに対する第4処理ループL4の実行を終了する。
クライアント装置10は、操作画面41の一覧表41dに列挙されている全てのレコードに対して第2処理ループL2を実行した場合には、ステップS310へ処理を戻す。
一方、第4処理ループL4の実行中、サービス提供装置20においてサービスの実行が正常に終了したと判断した場合(S394;YES)、クライアント装置10は、第4処理ループL4から抜けだし、ステップS312へ処理を進める。
ステップS312では、クライアント装置10は、操作画面41の一覧表41dにおける当該レコードのステータスフィールドに、「正常終了」を表示する。図20は、一覧表41d内の一つのレコードのステータスフィールドに「正常終了」が示されているときの操作画面41の一例を示す図である。このような表示の切り替えを行った後、クライアント装置10は、ステップS310へ処理を戻す。
一方、ステップS311において、クライアント装置10は、クリックされたボタンが実行ボタン41fでないと判断した場合(S311;NO)、ステップS313へ処理を進める。
ステップS313では、クライアント装置10は、クリックされたボタンが検索ボタン41eであるか否かを、判別する。そして、クライアント装置10は、クリックされたボタンが検索ボタン41eであると判断した場合(S313;YES)、ステップS304へ処理を戻し、クリックされたボタンが検索ボタン41eでないと判断した場合(S313;NO)、中止ボタン41gがクリックされたと判断して、クライアント処理を終了する。
以上に示したような処理が実行されるため、本実施形態のグリッドコンピューティングシステムは、以下に記述するような作用及び効果を、有している。
サービス検索装置30では、サービス提供装置20とそのサービス提供装置20が提供するサービスとが、対応付けられた状態で、静的情報管理テーブル31に記録されている。この静的情報管理テーブル31内のレコードは、サービス提供装置20の稼働状況とは無関係で時間的に一定な静的情報である。このため、本実施形態のグリッドコンピューティングシステムに対し、複数のサービス検索装置30を用意することができる。このようにサービス検索装置30を複数用意することにより、たとえ何れかのサービス検索装置30がダウンしたとしても、その他の検索装置が動作を継続しているので、クライアント装置10は、サービス検索装置30から常に検索結果を取得することができる。然も、どのサービス検索装置30においても、静的情報管理テーブル31の内容に時間的な変化がないことから、どのサービス検索装置30から取得される検索結果であっても、必ず同じ内容となる。従って、サービス検索装置30は、クライアント装置10に対して常に正常な処理を提供することができる。
また、サービス提供装置20の稼働状況を示す動的情報がそのサービス提供装置20とそのサービス提供装置20とは別の幾つかのサービス提供装置20に記録され、さらに、サービス提供装置20の動的情報に変化が生じた場合には、自他の全てのサービス提供装置20に記録されている動的情報が、変化後の動的情報で更新される(S104〜S107,S109〜S112,S204〜S206,S212〜S214,S223,S226〜S228)。このため、クライアント装置10が、目的のサービスを提供するサービス提供装置20の動的情報をそのサービス提供装置20から直接取得できなくても、その動的情報と同じ内容を持つ動的情報を、別のサービス提供装置20から取得できる。従って、クライアント装置10は、目的のサービスを提供できるサービス提供装置20に対してサービスの提供を依頼するか否かを、常に且つ正確に決定することができる。
グリッドコンピューティングシステムの利用者は、このシステムが提供可能な何れかのサービスを享受しようとする場合、自分のクライアント装置10の入力装置を操作することによって、クライアントプログラム11を起動する。すると、クライアント装置10の表示装置には、図15に示されるような操作画面41が表示される(S301)。利用者は、その操作画面41のテキストボックス41aに所望のサービスの名称を入力し、且つ、速度優先のラジオボタン41bか品質優先のラジオボタン41cの何れかをクリックして、検索ボタン41eをクリックする(S302,S303;YES)。すると、クライアント装置10の表示装置に表示されている操作画面41の一覧表41dには、図16に示されるように、利用者が指定したサービスを提供することができるサービス提供装置20のサーバ名が、利用者の選択した速度優先又は品質優先の順に、列挙される(S304〜S309,L1,S361〜S363,L2,S371〜S373,L3,S381〜S383)。そして、利用者が、実行ボタン41fをクリックすると、一覧表41dに列挙されたうちの一番上のサービス提供装置20に対し、利用者が指定したサービスの提供が依頼される(L4,S391)。従って、利用者は、このシステムが提供可能な何れかのサービスを享受しようとする場合、サービスの名称と検索結果の優先順とを決定するだけで、所望のサービスを提供するのに最適なサービス提供装置20に対し、サービスの提供を依頼することができる。
(付記1)
クライアント装置が、サーバ装置に対してサービスの提供を依頼することにより、そのサーバ装置からそのサービスを享受するグリッドコンピューティングシステムであって、
前記各サーバ装置は、自己の稼働状況を示す動的情報と、少なくとも一つの他のサーバ装置の稼働状況を示す動的情報とを、記憶するとともに、自己の動的情報に変化が生じた場合に、他のサーバ装置に記録されている自己の動的情報を更新し、前記クライアント装置から自己の動的情報を要求された場合には、そのクライアント装置に対して自己の動的情報を提供し、前記クライアント装置から他のサーバ装置の動的情報を要求された場合には、その他のサーバ装置の動的情報をそのクライアント装置に対して提供し、
前記クライアントに接続された一つ以上の検索装置が、何れも、各サーバ装置を識別するためのサーバ識別情報とそのサーバ装置が提供できるサービスを識別するためのサービス識別情報とそのサーバ装置の動的情報を記憶する他のサーバ装置のサーバ識別情報とを対応付ける静的情報を記憶しているとともに、何れかのクライアント装置から、何れかのサービス識別情報を受信した場合には、そのサービス識別情報に対応するサーバ識別情報をそのクライアント装置に提供し、
前記クライアント装置は、目的のサービスを提供できるサーバ装置のサーバ識別情報を取得すると、そのサーバ装置に対してサービスの提供を依頼するか否かを決定するために、そのサーバ識別情報のサーバ装置からその動的情報を取得し、そのサーバ装置から動的情報が得られない場合には、そのサーバ装置の動的情報を記憶する他のサーバ装置から当該動的情報を取得する
ことを特徴とするグリッドコンピューティングシステム。
(付記2)
グリッドコンピューティングシステムのクライアント装置からサービスの提供を依頼されると、そのクライアント装置に対してサービスを提供するサーバ装置であって、
自己の稼働状況を示す動的情報と、少なくとも一つの他のサーバ装置の稼働状況を示す動的情報を記憶し、
自己の動的情報に変化が生じた場合に、他のサーバ装置に記録されている自己の動的情報を更新し、
前記クライアント装置から動的情報を要求された場合には、そのクライアント装置に対して自己の動的情報を提供し、
前記クライアント装置から他のサーバ装置の動的情報を要求された場合には、そのクライアント装置に対して他のサーバ装置の動的情報を提供する
ことを特徴とするサーバ装置。
(付記3)
グリッドコンピューティングシステムにおいて各サーバ装置からサービスを享受するクライアント装置に対して接続される検索装置であって、
各サーバ装置を識別するためのサーバ識別情報とそのサーバ装置が提供できるサービスを識別するためのサービス識別情報とを対応付ける静的情報を記憶し、
何れかのクライアント装置から、何れかのサービス識別情報を受信した場合には、そのサービス識別情報に対応するサーバ識別情報をそのクライアント装置に提供する
ことを特徴とする検索装置。
(付記4)
グリッドコンピューティングシステムのサーバ装置からサービスを享受するためのクライアント装置であって、
各サーバ装置を識別するためのサーバ識別情報とそのサーバ装置が提供できるサービスを識別するためのサービス識別情報とそのサーバ装置の動的情報を記憶する他のサーバ装置のサーバ識別情報とを対応付ける静的情報を記憶した検索装置から、何れかのサービス識別情報に対応するサーバ識別情報を取得し、
取得したサーバ識別情報のサーバ装置に対してサービスの提供を依頼するか否かを決定するために、そのサーバ識別情報のサーバ装置からその動的情報を取得し、そのサーバ装置から動的情報が得られない場合には、そのサーバ装置の動的情報を記憶する他のサーバ装置から当該動的情報を取得する
ことを特徴とするクライアント装置。
(付記5)
グリッドコンピューティングシステムのクライアント装置からサービスの提供を依頼されると、そのクライアント装置に対してサービスを提供するコンピュータに対し、情報提供の機能を付加するための情報提供プログラムであって、
前記コンピュータを、
自己の稼働状況を示す動的情報と、前記グリッドコンピューティングシステムの何れかのサーバ装置の稼働状況を示す動的情報とを記憶装置に記憶する記憶手段,
自己の動的情報に変化が生じた場合に、他のサーバ装置に記録されている自己の動的情報を更新する更新手段,及び、
前記クライアント装置から他のサーバ装置の動的情報を要求する情報を受信装置において受信すると、そのクライアント装置に対して他のサーバ装置の動的情報を送信装置を介して送信する通信手段
として機能させる
ことを特徴とする情報提供プログラム。
(付記6)
グリッドコンピューティングシステムにおいて各サーバ装置からサービスを享受するクライアント装置に対して接続されるコンピュータに対し、情報提供の機能を付加するための情報提供プログラムであって、
前記コンピュータを、
各サーバ装置を識別するためのサーバ識別情報とそのサーバ装置が提供できるサービスを識別するためのサービス識別情報とそのサーバ装置の動的情報を記憶する他のサーバ装置のサーバ識別情報とを対応付ける静的情報を記憶装置に記憶する記憶手段,及び、
前記何れかのクライアント装置から、何れかのサービス識別情報を受信装置において受信する受信手段,及び、
前記受信手段が受信したサービス識別情報に対応するサーバ識別情報を前記記憶装置から読み出して、送信装置において前記クライアント装置へ送信する送信手段
として機能させる
ことを特徴とする情報提供プログラム。