様々な図面中の同じ参照記号は、同じ要素を示す。
図1に示すように、グリッドコンピューティング環境100におけるサービスが、アプリケーション用の計算リソースを管理する。グリッドコンピューティング環境100は、アプリケーション用のコンピューティングまたはデータ取得タスクを実施するために、個別に割り当てることができる1組の分散コンピューティングリソースである。こうした計算リソースは、コンピュータデバイス12、14、16、18、20、22を含む。こうしたコンピュータデバイスは、ネットワーク8を使って通信する。アプリケーションが必要とする計算量は、可変である。たとえば、グリッドコンピューティング環境100内のコンピュータデバイス12、14、16、18、20、22を使うアプリケーション例は、インターネット価格設定コンフィギュレータである。コンピュータデバイス12は、インターネットに接続されたコンピュータデバイス上のウェブブラウザを介して、ユーザに、価格設定情報へのネットワークアクセスを提供する。ウェブブラウザは、内容を表示し、かつ/またはウェブページ、メディアファイルなどのアプリケーション、ならびにネットスケープナビゲータ(登録商標)、マイクロソフトインターネットエクスプローラ(登録商標)、および同様のアプリケーションなどのプログラムを実行することができるどのアプリケーションでもよい。
この例では、コンピュータデバイス12上のウェブサーバが、ユーザに価格設定情報を提供する。計算される各価格用の計算パラメータが、IPCディスパッチャ116によって、それぞれコンピュータデバイス12、14、16、18上で実行されるIPCサーバ120、122、124、126に渡される。インターネット上のウェブサーバおよびアプリケーションが柔軟なので、ユーザ数は可変でよい。このため、インターネット価格設定コンフィギュレータにとって必要な計算量が動的になる。IPCマネージャ118が、グリッドコンピューティング環境100内のサービスと通信することによって、サービスは、インターネット価格設定コンフィギュレータの動的な必要計算量に基づいて、計算リソース(たとえば、コンピュータデバイス12、14、16、18、20、22内のプロセッサ)を割り振り、割振り解除することができるようになる。このようにして計算リソースを割り振り、割振り解除することにより、コンピュータデバイス12、14、16、18、20、または22は、汎用計算リソースとして指定され、インターネット価格設定コンフィギュレータアプリケーションのピーク需要を扱うことだけに専用とはならなくなる。IPCマネージャ118は、IPCディスパッチャ116と連携し、そうすることによって、IPCディスパッチャ116が、ネットワーク8内のリソースへのアクセス権をもつようになる。
このように、グリッドコンピューティング環境100内でリソースを割り振り、割振り解除する能力により、IPCマネージャ118は、使用可能な計算リソースを「必要に応じて」位置決めし使用することが可能になる。リソースが位置決めされると、IPCマネージャ118は、グリッドコンピューティング環境100内のサービスを利用して、グリッドコンピューティング環境100内のコンピュータデバイス上のアプリケーションとしてIPCサーバ120、122、124、126をインストールすることができる。IPCディスパッチャ116は、Tueckeらによってオープングリッドサービスインフラストラクチャ(OGSI)バージョン1.0で定義されたウェブサービス定義言語(WSDL)インターフェイスを用いて、IPCディスパッチャ116とIPCサーバ120、122、124、126との間の情報フローを管理し交換する。たとえば、OGSI WSDLインターフェイスは、IPCディスパッチャ116およびIPCサーバ120、122、124、126から、価格設定計算用の計算パラメータを渡すのに用いることができる。OGSI WSDLインターフェイスは、IPCサーバ120、122、124、126からIPCディスパッチャ116に、完了した結果を戻すのにも用いることができる。OGSIバージョン1.0は、参照によって本明細書に組み込まれている。OGSI WSDLインターフェイスは、グリッドコンピューティング環境100およびインターネット価格設定コンフィギュレータなどのアプリケーションの制御、障害回復、および安全な管理を可能にする。
IPCディスパッチャ116は、IPCサーバ120、122、124、126を使って、ユーザ向けに計算を実施し、グリッドコンピューティング環境100内のサービスは、IPCサーバ120、122、124、126を実行するグリッドコンピューティング環境100内のコンピュータデバイス上のリソース使用を監視する。こうしたサービスは、この使用情報をIPCマネージャ118にも送る。使用要件と現在のリソースのロードとの間の比較に基づいて、IPCマネージャ118はグリッドコンピューティング環境100内のリソースの使用を所望のレベルで続けるように、IPCサーバ120、122、124、126向けにより多くのリソースを割り振り、またはリソースを割振り解除するために、グリッドコンピューティング環境100内のサービスに動的に通知することができる。
グリッドマネージャ152、154、156、160、162、164は、コンピュータデバイス12、14、16、18、20、22にそれぞれ存在する。グリッドコンピューティング環境100内部で、グリッドマネージャのペアは、1つのグリッドマネージャを、別のグリッドマネージャに対して上位と分類する方向関係を有し得る。1つのグリッドマネージャが、他のグリッドマネージャとの複数の上位関係を有し得る。たとえば、グリッドマネージャ152は、グリッドマネージャ154、156との上位関係を有する。1つのグリッドマネージャが、他のグリッドマネージャとの複数の下位関係も有し得る。こうした階層関係により、IPCマネージャ118は、グリッドコンピューティング環境100内の計算リソースを使用するのに、ネットワーク8内のすべてのコンピュータデバイスからなるリストにアクセスする必要がない。IPCマネージャ118は、グリッドマネージャを実行する1つのコンピュータデバイス(たとえば、グリッドマネージャ152を実行するコンピュータデバイス12)のネットワークアドレスにアクセスすることだけが要求され、このグリッドマネージャは、他のコンピュータデバイス上で実行される他のグリッドマネージャとの関係を用いて、IPCディスパッチャ116に、グリッドコンピューティング環境100内の他のコンピュータデバイスへの間接アクセスを提供する。
グリッドマネージャ(たとえば152、154、156、160、162、164)が、他のグリッドマネージャとのすべての上位関係からなる第1のリスト、および他のグリッドマネージャとのすべての下位関係からなる第2のリストを維持する。各グリッドマネージャは、こうしたリスト中のグリッドマネージャすべてへの、ネットワーク8を介した「常にオープン」な通信チャネルを、たとえば、上述した伝送制御プロトコル(TCP)、ハイパーテキスト転送プロトコル(HTTP)、およびシンプルオブジェクトアクセスプロトコル(SOAP)に基づいたOGSI WSDLインターフェイスを用いて維持する。こうしたリストおよび対応する通信チャネルは修正することができ、ランタイム中にグリッド階層を動的に再構成させる。また、障害のあるグリッドマネージャを、階層中で動的に置き換えさせる。たとえば、図1を参照すると、グリッドマネージャ154に障害が起こった場合、グリッドマネージャ152が、グリッドマネージャ160、162との接続を失う。この場合、グリッドマネージャ152がグリッドマネージャ160、162と新しい上位関係をもつように、グリッドマネージャの間の関係を修正することができる。同様に、グリッドマネージャ160、162が、グリッドマネージャ152との新しい下位関係を有するようになる。
図2に示すように、アプリケーション(たとえば、インターネット価格設定コンフィギュレータ)が、コンピュータデバイス(たとえば12、14、16、18、20、または22)上で実行される前にネットワーク8内で必要なリソースを割り振られるように、アプリケーションスタートプロセス200が設計される。プロセス200は、また、同様のアプリケーションがコンピュータデバイス上の同じリソースを使って同時にスタートしようとしている場合に、2つ以上のアプリケーションが互いに衝突することも干渉することもないように保証する。たとえば、IPCマネージャ118は、IPCサーバ(たとえば120)が、サービス品質(QoS)に合わせて、コンピュータデバイス14内のプロセッサ上で実行される唯一のアプリケーションであることを要求し得る。この場合、別のアプリケーションがコンピュータデバイス14内のプロセッサ上で同時に実行を試みられると、この別のアプリケーションが干渉することになる。
プロセス200は、IPCマネージャ118(または他の何らかのアプリケーション)が、計算リソースに対する要件を送って(202)、こうした要件に合致する、使用可能なリソースがグリッドコンピューティング環境100にあるかどうか判定するために、グリッドマネージャ(たとえば154)に照会を行うことを含む。こうした要件は、要求されるプロセッサ数、そうしたプロセッサの要求される使用率、メインメモリ、およびネットワーク速度など、コンピュータデバイス内のリソースに関する情報を指定する。クエリは、(グリッドコンピューティング環境100内の)どの階層レベルにクエリが伝播されるべきかという情報も含み得る。プロセス200は、グリッドマネージャ154が、こうした要件を受け取る(204)ことを含む。
IPCマネージャ118からの、使用可能なリソースに関するクエリに応答するために、プロセス200は、グリッドマネージャ154が、要件を、グリッドマネージャ154にとって既知のリソースと突き合わせる(206)ことを含む。こうしたリソースは、グリッドマネージャ154によって直接管理される、コンピュータデバイス14内のリソース(たとえば、プロセッサ40)を含む。現在使用可能であり、要件を満たす、グリッドマネージャ154によって直接管理されるリソースが、グリッドマネージャ154によって維持されるリソース−クエリリストに追加される。
グリッドマネージャ154は、グリッドマネージャ154との下位関係を有するグリッドマネージャ160、162にもクエリを送る。プロセス200は、グリッドマネージャ160、162が、グリッドマネージャ154に、リクエストされた要件を満たし、使用可能であり、グリッドマネージャ160、162それぞれにとって既知であるリソース(たとえば、コンピュータデバイス18、20上のプロセッサ)のリストを送ることによってクエリに応答する(208)ことを含む。グリッドマネージャ160、162にとって既知であるリソースからなる、こうしたリソース−クエリリストは、グリッドマネージャ160、162との下位関係を有するグリッドマネージャ(図示せず)によって管理されるリソースも含み得る。グリッドマネージャ154は、グリッドマネージャ160、162からの、使用可能なリソースからなるこうしたリソース−クエリリストを、リクエストされた要件を満たす使用可能なリソースからなるグリッドマネージャ154のリソース−クエリリストに追加する。プロセス200が、このリソース−クエリリスト中に少なくとも1つのリソース(たとえば、プロセッサ40)があると判定した(210)場合、グリッドマネージャ154は、このリソース−クエリリストをIPCマネージャ118に送る(214)。あるいは、プロセス200が、グリッドマネージャ154が上位グリッドマネージャ(たとえば、グリッドマネージャ152)との関係を有すると判定した(212)場合、グリッドマネージャ154は、使用可能なリソースに関するクエリをグリッドマネージャ152に送る(202)。このクエリに応答して、グリッドマネージャ152は、グリッドマネージャ152との下位関係を有するグリッドマネージャ154に冗長なクエリを返送することはない。
プロセス200は、グリッドマネージャ154が、使用可能なリソースのリストとともに、それに対応する、要件に合致するネットワーク8内のグリッドマネージャのアドレスを送る(214)ことを含む。IPCマネージャ118は、(たとえば、コンピュータデバイス16上の)リソースをリストから選択し、コンピュータデバイス16上のリソースを管理するグリッドマネージャ154に、コンピュータデバイス16上のリソースの予約をリクエストする(216)。コンピュータデバイス16内のリソースが依然として予約可能(218)であり、予約が成功した場合、グリッドマネージャ154は、IPCマネージャ118に予約番号を送る(220)。この予約は、IPCマネージャ118がグリッドコンピューティング環境100内のコンピュータデバイス16上のリクエストされたリソースを保証され割り振られることを意味する。グリッドマネージャ154は、IPCマネージャ118などのアプリケーションからの、使用可能なリソースに関するクエリを、独立した実行処理スレッドを用いて扱う。したがって、グリッドマネージャ154は、セマフォを用いて、同一のリソース(たとえば、プロセッサ40)が、同じリソースを同時にリクエストした異なるアプリケーションに対して多数の予約番号を割り当てられることがないようにする。
グリッドマネージャが、コンピュータデバイス16内のリクエストされたリソースが予約可能でないと判定し、予約が失敗した場合、IPCマネージャ118は、リストにある次の使用可能リソースを選択し、この次の使用可能リソースの予約をリクエストする(216)。IPCマネージャ118が、登録番号を受け取り、登録番号の送信時点から測定されたタイムアウトが満了していない(222)場合、IPCマネージャ118は、コンピュータデバイス16内のプロセッサ40のリソースの上でIPCサーバ122をスタートする(224)。IPCサーバ122のスタートは、予約番号およびアプリケーションファイルをグリッドマネージャ156に渡すことによって開始され、次いで、グリッドマネージャ156が、アプリケーションファイルを読んで、コンピュータデバイス16上でIPCサーバ122をインストールし実行する。
図3に示すように、プロセス250は、グリッドコンピューティング環境100内のコンピュータデバイス(たとえば14)上でアプリケーション(たとえば、IPCサーバ122)をインストールして、アプリケーション用に使用可能なリソースをセットアップし、使用可能なリソースを使用し、リソースが必要とされなくなったとき、アプリケーションを削除し、またはアンインストールして、後続アプリケーションによる使用のためにリソースを解放する。プロセス250は、IPCマネージャ118が、IPCサーバ122用のコードに加えて、グリッドマネージャ154が、アプリケーションを実行した後でコンピュータデバイス14を元の状態に戻すことができるように、コンピュータデバイス14からアプリケーションをどのようにしてインストールし、カスタマイズし、追跡し、削除するかということに関する命令を含むアプリケーションファイルを転送する(252)ことを含む。
IPCマネージャ118は、ファイル転送プロトコル(FTP)、ハイパーテキスト転送プロトコル(HTTP)、またはファイルコピーを用いて、ネットワーク結合記憶装置(NAS)から、たとえばコンピュータデバイス14に、アプリケーションファイルを、圧縮したzipファイルなど1個のファイルとして転送する。このzipファイルには、アプリケーションIPCサーバ122のインストールおよびカスタマイズについての情報がある。この情報は、グリッドマネージャ154内でのエンジン(図示せず)のインストールおよびカスタマイズによって抽出され変換される(254)小型の実行可能プログラムまたは拡張マークアップ言語(XML)ドキュメントによって表される。プロセス250は、グリッドマネージャ154が、アプリケーションをインストールし(256)実行する(258)ことを含む。アプリケーションのインストール(256)、カスタマイズ、および実行(258)の間、コンピュータデバイス14に対するすべての変更がログ記録され、そうすることによって、アプリケーションが、IPCマネージャ118によってリクエストされてグリッドマネージャ154によって終了され(260)またはアンインストールされると、グリッドマネージャ154は、コンピュータデバイス14からアプリケーションを削除し、また、アプリケーションをインストールし実行したときに行われた、コンピュータデバイス14に対する他のどの変更も削除する(262)。したがって、コンピュータデバイス14は、アプリケーション実行前の元の状態に復帰し、コンピュータデバイス14のリソースはすべて、後続アプリケーションによる使用のために再度使用可能になる。これにより、リソースは、アプリケーションを実行した後に、コンピュータデバイス14をリブートすることなく使用可能になる。こうした変更は、通信ポートの割振りなど、他の変更に加えてアプリケーションコードを格納し実行するために割り振られたメモリ(たとえば32)中の空間を含む。
いくつかの例では、多数のアプリケーションが、1台のコンピュータデバイス(たとえば14)内のリソース上で同時に実行される可能性がある。グリッドコンピューティング環境100用のアプリケーションは、そのリソース要件に部分的に基づいて分類される。アプリケーションを実行するための、コンピュータデバイスに対するいくつかの変更は、そのクラスのアプリケーションの最初の実行に対してのみ要求され、それ以降の実行は、こうした変更を要求しない。こうした例において、グリッドマネージャ154は、最初の実行のための変更を行うだけである。さらに、アプリケーションをアンインストールするとき、グリッドマネージャ154は、実行され終了された最後のアプリケーションに対する変更を削除するだけである。
グリッドコンピューティング環境100内のコンピュータデバイス上でアプリケーションをインストールした後、グリッドマネージャは、リクエストされると、こうしたアプリケーションのプロセスをスタートまたはストップするように構成される。インターネット価格設定コンフィギュレータ(IPC)アプリケーションの例では、グリッドマネージャ154は、コンピュータデバイス14上のIPCサーバ122をインストールした後でコンピュータデバイス14上のIPCサーバ122をスタートまたはストップするように構成される。IPCマネージャ118は、グリッドマネージャに、グリッドコンピューティング環境100における現在のリソース使用に基づいてグリッドコンピューティング環境100内のIPCサーバをスタートまたはストップするようリクエストする。コンピュータデバイス14上でIPCサーバ122をストップした後、IPCマネージャ118は、あらかじめ指定された期間待機し、次いで、現在のリソース使用がIPCサーバ122を再度スタートする必要性を示さない場合、IPCサーバ122をアンインストールするよう、グリッドマネージャ154にリクエストする。さらに、前述したように、グリッドマネージャは、アプリケーション(たとえばIPCサーバ120、122、124、126)を実行するコンピュータデバイス14などのコンピュータデバイス上でのリソース使用を監視し、この使用情報をIPCマネージャ118に送る。
多くの例において、コンピュータデバイス内のリソース上でのアプリケーションプロセスの制御は、オペレーティングシステム(OS)に固有である。グリッドコンピューティング環境100は、コンピュータデバイス上の様々なオペレーティングシステムを扱うように構成される。さらに、グリッドコンピューティング環境100は、グリッドコンピューティング環境100上で実行されるために設計し直される必要がない様々なアプリケーション(たとえば、インターネット価格設定コンフィギュレータ)を扱うように設計される。グリッドマネージャは、グリッドマネージャコードとアプリケーションコードの開発の間の相互依存性を低下させる一般的なやり方でアプリケーションプロセスを制御する。グリッドマネージャがアプリケーションプロセスの状態を発見し、制御し(たとえば、スタートし、ストップし、停止し、再開し)、検査し、または監視することを可能にするためのインターフェイスがアプリケーションコードに提供される。このインターフェイスは、オペレーティングシステムまたはホスティング環境によって公開されるオペレーティングシステムプロセス用に提供され、3つの側面を含む。インターフェイスの1つの側面は、プロセス識別、状態、リソース消費(アプリケーションが使用し得る中央演算処理装置(CPU)、メモリ、ソケットバインディング、または他のリソースなど)の程度などのプロセスデータ、およびプロセスデータ方式によって定義されるアプリケーション固有データである。
インターフェイスの第2の側面は、スタート、ストップ、待機、再開、優先順位変更などの動作、およびサポートされる管理動作によって定義される他の動作を管理することである。
インターフェイスの第3の側面は、プロセスデータ方式、サポートされる管理動作、および通信バインディングなどの制御バインディングおよび定義である。グリッドコンピューティング環境100内で実行されるすべてのアプリケーションが、こうした3つの側面において同じ情報および機能にアクセスするわけではないので、アプリケーションは、グリッドマネージャに、各アプリケーションがサポートするクエリおよびコマンドのリストを提供する。
アプリケーションコードに提供されるインターフェイスは、アプリケーションプログラムインターフェイス(API)である。このAPIは、アプリケーションプログラム(たとえば、インターネット価格設定コンフィギュレータ)を書くプログラマがグリッドマネージャからのリクエストを扱うための、グリッドマネージャソフトウェアによって規定される(ソフトウェアコードに組み込まれた)1組の方法である。
図4に示すように、IPCサーバ122は、API302およびドキュメント304を含む。API302は、様々なタイプのアプリケーションに適合されるので、ドキュメント304は、どのようにしてグリッドマネージャ154がIPCサーバ122と通信するか、API302を介したどのようなリクエストがIPCサーバ122によってサポートされるかを記述する。グリッドマネージャ154は、IPCサーバ122を開始する前にドキュメント304を読む。いくつかの例では、ドキュメント304は、XMLで書かれ、ドキュメントタイプ記述(DTD)306を含む。DTDとは、標準汎用マークアップ言語(SGML)の規則に従う固有定義である。DTDは、ドキュメントを伴う仕様であり、パラグラフを分離し、見出しを識別するマークアップが何であるか、どのように各マークアップが処理されるかを識別する。ドキュメント304にDTD306を含めることによって、DTD「リーダ」(または「SGMLコンパイラ」)を有するグリッドマネージャ154は、ドキュメント304を処理することが可能であり、一連の様々なマークアップコードおよび関連する意味を利用する多様な種類のドキュメント304を正しく変換することができる。
図4Aに示すように、グリッドマネージャ154は、プロセス350を用いて、IPCサーバ122などのアプリケーションをインストールする。グリッドマネージャ154は、ドキュメント304中のDTD306を読んで(352)、ドキュメント304中のマークアップを識別する。グリッドマネージャ154は、マークアップを用いてドキュメント304を読んで(354)、IPCサーバ122と通信するための通信パラメータを識別する。グリッドマネージャ154は、通信パラメータの仕様に基づいて、IPCサーバ122との通信をセットアップする(356)。グリッドマネージャ154は、通信パラメータを使ってIPCサーバ122と通信して(358)、「スタート」、「ストップ」、および「アイドル状態か?」などのリクエストを送る。
どのアプリケーション(たとえば、インターネット価格設定コンフィギュレータ)をネットワーク8上で実行することができるようになる前でも、グリッドマネージャ152、154、156、160、162、164が、コンピュータデバイス12、14、16、18、20、22上において非同期で開始され、他のグリッドマネージャとの関係が確立される。図5に示すように、プロセス400が、グリッドマネージャの間の関係を初期化する。各グリッドマネージャ(たとえば、グリッドマネージャ154)に関して、グリッドマネージャ154は、プロパティファイルを読む(402)ことによってコンピュータデバイス14を開始する。プロパティファイルは、グリッドマネージャ154との上位関係を有するグリッドマネージャを有するコンピュータデバイスのアドレスのリストを含む。このリストについては、上で、他のグリッドマネージャとのすべての上位関係の第1のリストとして説明した。上位グリッドマネージャ(たとえば、グリッドマネージャ152)が、このアドレスリスト中で指定された場合(404)、グリッドマネージャ154は、上位グリッドマネージャ(たとえば152)への通信チャネルをオープンするようリクエストする(406)。グリッドマネージャ152が既にスタートされている場合、グリッドマネージャ152は、グリッドマネージャ152からの、通信チャネルをオープンするリクエストを受諾することによって応答する。プロセス400は、グリッドマネージャ154が、グリッドマネージャ154との下位関係を有すると識別されるグリッドマネージャ(たとえば、グリッドマネージャ160、162)からの、通信チャネルに対するどのリクエストも検出する(408)ことを含む。プロセス400が、いくつかのリクエストがあると判定した(410)場合、グリッドマネージャ154は、下位グリッドマネージャ(たとえば160、162)からの通信チャネルを可能にする。プロセス400は、グリッドマネージャ154が、上位関係を有するグリッドマネージャへの、通信を求めるリクエストが保留されているかどうか調べる(414)ことを含む。保留されているリクエストがある場合、グリッドマネージャ154は、グリッドマネージャに通信チャネルをリクエストする(406)。こうした通信チャネルは、グリッドマネージャの間のリソースクエリ用に(以前記述したように)、また、グリッドマネージャの間の「ハートビート」メッセージ用に使われて、グリッドコンピューティング環境100内の各グリッドマネージャが機能していることを確かめる。
グリッドマネージャ152、154、156、160、162、164が、確立された関係をもって実行されていると、グリッドマネージャは、グリッドコンピューティング環境100の適正な動作のために使われる。しばしば、グリッドコンピューティング環境100のライフサイクルの間、グリッドマネージャの機能性が強化される。しばしば、こうした強化に合わせてグリッドコンピューティング環境100をシャットダウンし、グリッドコンピューティング環境100をスタートすることは可能でも、好都合でもない。グリッドマネージャ152、154、156、160、162、164は、変更が起きたときにグリッドコンピューティング環境100のユーザに対して最小限の影響しかないように構成される。この透過性を可能にするために、グリッドコンピューティング環境100の管理者が、グリッドマネージャ152、154、156、160、162、164それぞれに個別に、または一斉にアクセスすることを可能にするための、ユーザインターフェイス用のAPIが提供される。このAPIは、ただ1つのメソッド、すなわち、管理者によってタイプ入力されたコマンドを含む文字列を含む点で、静的である。このAPIは、文字列が多様なコマンドを含み得るので、動的である。
いくつかの場合において、グリッドマネージャは、Java(登録商標)プログラミング言語を使って開発される。こうした場合、グリッドマネージャに発行される新しいコマンドは、新しいまたは改定されたJava(登録商標)クラスを、クラスローダを介して動的にロードすることによってサポートすることができる。コードへのこの動的アクセスは、グリッドコンピューティング環境100内のグリッドマネージャをシャットダウンせずに行うことができる。Java(登録商標)クラスローダを使って、グリッドマネージャ用のあるクラスのインスタンスが生成される度に、そのクラスの定義および振舞いを、グリッドコンピューティング環境100に新しい機能性を提供するようにアップデートすることができる。
グリッドコンピューティング環境100をシャットダウンすることなくグリッドコンピューティング環境100の機能性を動的に修正する別のやり方は、グリッドマネージャの間の階層関係を変更し、グリッドマネージャを削除し、または新しいグリッドマネージャを追加することである。グリッドコンピューティング環境100の管理用に提供されるAPIは、既存の関係を解消しまたは新しい関係を追加するためのコマンドを有する個々のグリッドマネージャに文字列を送るようにも構成される。
グリッドコンピューティング環境100の管理者にとって、グリッドコンピューティング環境100内の1台のコンピュータデバイス上のアプリケーションおよびグリッドマネージャ、ならびにグリッドマネージャとの1つまたは複数のレベルの下位関係を有するグリッドマネージャの形のグリッド管理階層の一部を実行する他のコンピュータデバイスを可視化することが有用である。こうしたコンピュータデバイスのビューは、グリッドランドスケープと呼ばれる。図6に示すように、グリッドコンピューティング環境100など、グリッドランドスケープの視覚化のためのグリッドグラフィカルユーザインターフェイス(GUI)500は、コンピュータデバイス上で実行されるサービスの組織を可視化するGUI要素を含む。GUI500は、列および行を有する、グリッドに似た構造を提供する。行はサービスを表し、サービスは、サービスが属すアプリケーション、サービスのタイプ、および固有のサービスインスタンスに関して階層状に構造化される。各サービスインスタンス行は、サービスがインスタンス化されるところを表す、グリッドコンピューティング環境100内の場所に関連づけられる。このコンテキストにおいて、列は、グリッドランドスケープ内のコンピュータデバイスを表す。具体的には、GUI500は、3つのコンピュータデバイス12、14、16を表す3つの列をもつ。GUI500は、グリッドマネージャ152が、それぞれコンピュータデバイス14、16の上で実行される下位グリッドマネージャ154、156を有するコンピュータデバイス12上で実行されることを示す。GUI500は、コンピュータデバイス12上で実行されるインターネット価格設定コンフィギュレータサービスも示す。こうしたインターネット価格設定コンフィギュレータサービスは、IPCディスパッチャ116、IPCサーバ120、およびIPCマネージャ118を含む。
GUI500は、グリッドマネージャおよびインターネット価格設定コンフィギュレータ(または他のアプリケーション)サービスからのフィードバックを用いて動的にリフレッシュされ、そうすることによって、GUI500において新しいサービスが管理者に対して表示される。同様に、シャットダウンされたサービスは、GUI500において削除される。
図7に示すように、グリッドブラウザコンポーネント600は、グリッドコンピューティング環境100内のコンピュータデバイス上のグリッドマネージャをブラウズする複合グラフィカルユーザインターフェイス(GUI)である。コンポーネント600は、曲線エッジおよび頂点を有するグラフを表示する。頂点は、グリッドコンピューティング環境100内のコンピュータデバイスを表し、曲線エッジは、グリッドコンピューティング環境100内の2台のコンピュータデバイス(頂点)におけるグリッドマネージャの方向的関連づけを表す。この関連づけは、階層状(すなわち、上位/下位)である。各頂点は、コンピュータデバイスならびにコンピュータデバイス上で現在実行されているアプリケーションのネットワークアドレスを表示する。たとえば、コンポーネント600は、IPCサーバ118、120、122、124を有するコンピュータデバイス12、14、16、18、20、22を示す。他の例(図示せず)では、グリッドブラウザコンポーネント600は、関連づけを表す方向性のないエッジを有する、グリッドマネージャの、非階層状のピアツーピアな関連づけを示す。
グリッドブラウザコンポーネント600は、コンテキストに依存する。コンピュータデバイス上のグリッドマネージャの間の関係(たとえば、上位/下位)に応じて、ユーザのブラウジング履歴に関してコンピュータデバイスが巡回される。
GUI600内のコンピュータデバイス(たとえば、コンピュータデバイス14)を表す頂点をクリックすることによって、ユーザは、グリッドマネージャならびにグリッドマネージャとの下位関係を有するコンピュータデバイスおよびグリッドマネージャ上で実行されるアプリケーションを、GUI500を用いて自動的に閲覧することができる。ユーザは、コンピュータデバイスを選び、そのグリッドマネージャと他のグリッドマネージャの間の関係を見ることができる。GUI500と600の間のこの接続は、GUI500、600を生成するソフトウェアを使って行われる。
ネットワーク8を、様々なやり方で実装することができる。ネットワーク8は、インターネット、ローカルエリアネットワーク(LAN)または他のローカルネットワーク、私設ネットワーク、公衆網、単純旧式電話システム(POTS)、あるいは他の同様の有線または無線ネットワークなど、どの種類およびどの組合せのネットワークも含む。ネットワーク8を介した通信を、暗号化、セキュリティプロトコルなどの機構、または他のタイプの類似機構を用いて保護することができる。ネットワーク8を介した通信は、モデムリンク、イーサネット(登録商標)リンク、ケーブル、二地点間リンク、赤外線接続、光ファイバリンク、無線リンク、セルラーリンク、ブルートゥース(登録商標)、衛星リンク、および他の同様のリンクなど、どの種類およびどの組合せの通信リンクも含み得る。
ネットワーク8については、説明を容易にするために単純化する。ネットワーク8は、ネットワーク、通信リンク、プロキシサーバ、ファイアウォールまたは他のセキュリティ機構、インターネットサービスプロバイダ(ISP)、ゲートキーパー、ゲートウェイ、スイッチ、ルータ、ハブ、クライアント端末、および他の要素など、より多くの追加要素もより少ない追加要素も含み得る。
コンピュータデバイス12、14、16、18、20、22は、多様なネットワークプロトコルの1つを使って、媒体10を介して通信する。たとえば、1つのプロトコルは、SOAP(シンプルオブジェクトアクセスプロトコル)と組み合わされた伝送制御プロトコル/インターネットプロトコル(TCP/IP)である。
本発明の実施形態を、デジタル電子回路の形でも、コンピュータハードウェア、ファームウェア、ソフトウェアの形でも、その組合せの形でも実装することができる。本発明の実施形態を、コンピュータプログラム製品、すなわち、情報キャリア、たとえばデータ処理機器、たとえばプログラム可能なプロセッサ、コンピュータ、または多数のコンピュータによる実行のため、またはデータ処理機器の動作を制御するための、ノード可読な記憶デバイスや伝播信号の形で明白に実現されるコンピュータプログラムとして実装することができる。コンピュータプログラムを、コンパイラ型やインタープリタ型言語を含む、どの形のプログラミング言語でも書くことができ、スタンドアロンプログラムまたはモジュールとして、コンポーネント、サブルーチン、またはコンピューティング環境における使用に適した他のユニットを含むどの形でも展開することができる。コンピュータプログラムを、1台のコンピュータ上でも、一箇所にあるまたは数箇所に分散され、通信ネットワークによって相互接続された多数のコンピュータでも実行されるように展開することができる。
本発明の実施形態の方法ステップは、入力データに作用し出力を生成することによって本発明の機能を実施するためのコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実施することができる。特殊目的論理回路、たとえば、FPGA(書替え可能ゲートアレイ)やASIC(アプリケーション固有集積回路)によって、方法ステップを実施することもでき、そうした論理回路として本発明の機器を実装することができる。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および特殊目的マイクロプロセッサ両方、およびどの種類のデジタルコンピュータのどの1つまたは複数のプロセッサも含む。概して、プロセッサが、読出し専用メモリまたはランダムアクセスメモリあるいはその両方から命令およびデータを受け取る。コンピュータの基本要素は、命令を実行するプロセッサならびに命令およびデータを格納する1つまたは複数のメモリデバイスである。概して、コンピュータは、データを格納する1つまたは複数の大容量記憶デバイス、たとえば磁気、光磁気ディスク、または光ディスクも含み、そこからデータを受け取り、またはそこへデータを転送し、あるいはその両方を行うように動作可能に結合される。コンピュータプログラム命令およびデータを具体化するのに適した情報キャリアは、例として半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内部ハードディスクや取外し可能ディスク、光磁気ディスク、ならびにCD−ROMおよびDVD−ROMディスクを含むあらゆる形の不揮発性メモリを含む。プロセッサおよびメモリを、特殊目的論理回路によって補うことも、回路に組み込むこともできる。
ユーザとの対話をもたらすために、本発明の実施形態は、表示デバイス、たとえば、ユーザに情報を表示するCRT(ブラウン管)やLCD(液晶ディスプレイ)モニタ、ならびにキーボードおよび指示デバイス、たとえば、ユーザがコンピュータに入力を与えるためのマウスやトラックボールを有するコンピュータ上で実装することができる。ユーザとの対話をもたらすために、他の種類のデバイスを使用することもできる。たとえば、ユーザに与えられるフィードバックは、どの形の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックでもよく、ユーザからの入力は、音響、音声、または触覚入力を含むどの形でも受け取ることができる。
本発明の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含み、ミドルウェアコンポーネント、たとえばアプリケーションサーバを含み、フロントエンドコンポーネント、たとえば、ユーザが本発明の実施形態を実装したものと対話するためのグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータ、あるいはこのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントのどの組合せも含むコンピューティングシステムにおいて実装することができる。システムのコンポーネントは、どの形または媒体のデジタルデータ通信、たとえば通信ネットワークによっても相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえばインターネットを含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いにリモートであり、通常、通信ネットワークを介して対話する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行されるとともに互いにクライアント/サーバ関係を有するコンピュータプログラムに基づいて成り立つ。
本発明のいくつかの実施形態を記述した。それにも関わらず、本発明の精神および範囲から逸脱することなく、様々な修正を行うことができることが理解されよう。他の実施形態も、添付の請求項の範囲内である。