(57)【要約】【課題】クラスタ環境においてキューイングを行うコンピュータシステム、方法、プログラムを提供する。【解決手段】本発明のコンピュータシステム（１００）は、少なくとも１つのサーバ（１０４）及び第１キュー（１０２）を備えると共にサービス要求（１０３）に応じてサービスを提供するように動作可能な第１クラスタ（１０１）と、第２キューを備えると共にサービス要求に応じてサービスを提供するように動作可能な第２クラスタとを備える。第１クラスタは、サービス要求を受信し、第１クラスタにアイドルサーバがあるかどうか判別し、第１クラスタにアイドルサーバがある場合には、このアイドルサーバに受信した要求を割り当て、第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、受信した要求を第１キューに入れるか、或いは、受信した要求を第２クラスタに転送するように動作可能である。【選択図】図１
2008047096.tif 000002
【特許請求の範囲】
【請求項１】
ａ．少なくとも１つのサーバ及び第１キューを備えると共に、サービス要求に応じてサービスを提供するように動作可能な、第１クラスタと、
ｂ．第２キューを備えると共に、サービス要求に応じてサービスを提供するように動作可能な、第２クラスタと、
を備える、コンピュータシステムであって、
前記第１クラスタが、
i.  サービス要求を受信し、
ii. 前記第１クラスタにアイドルサーバがあるかどうか判別し、
iii.前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、
iv. 前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を前記第２クラスタに転送する
ように動作可能な、コンピュータシステム。
【請求項２】
前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定される、請求項１に記載のコンピュータシステム。
【請求項３】
前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１に記載のコンピュータシステム。
【請求項４】
前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１に記載のコンピュータシステム。
【請求項５】
前記アルゴリズムが、少なくとも前記第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいている、請求項１に記載のコンピュータシステム。
【請求項６】
前記第１クラスタの前記第１キューと前記第２クラスタの前記第２キューとの間のリンクをさらに備える、請求項１に記載のコンピュータシステム。
【請求項７】
前記第１クラスタが、ローカル状態情報を前記第２クラスタに定期的に提供するように動作可能である、請求項１に記載のコンピュータシステム。
【請求項８】
前記ローカル状態情報が、前記第１確率値を含む、請求項７に記載のコンピュータシステム。
【請求項９】
前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000011
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットである、請求項８に記載のコンピュータシステム。
【請求項１０】
少なくとも１つのクラスタ化されたサーバを含むシステムにおけるキューイング方法であって、
ａ．第１キューを備える第１クラスタにおいてサービス要求を受信し、
ｂ．前記第１クラスタにアイドルサーバがあるかどうか判別し、
ｃ．前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、
ｄ．前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を第２クラスタに転送すること、
を含む方法。
【請求項１１】
前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定される、請求項１０に記載の方法。
【請求項１２】
前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１０に記載の方法。
【請求項１３】
前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１０に記載の方法。
【請求項１４】
前記アルゴリズムが、少なくとも第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいている、請求項１０に記載の方法。
【請求項１５】
ローカル状態情報を前記第２クラスタに定期的に提供することを更に含む、請求項１０に記載の方法。
【請求項１６】
前記ローカル状態情報が、前記第１確率値を含む、請求項１５に記載の方法。
【請求項１７】
前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000012
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットである、請求項１６に記載の方法。
【請求項１８】
少なくとも１つのクラスタ化されたサーバを含むシステムにおいて、コンピュータにキューイング処理を実行させるためのコードを含むプログラムであって、前記コードは、
ａ．第１キューを備える第１クラスタにおいてサービス要求を受信し、
ｂ．前記第１クラスタにアイドルサーバがあるかどうか判別し、前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を第２クラスタに転送すること、
を含む処理をコンピュータに実行させる、プログラム。
【請求項１９】
前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定される、請求項１８に記載のプログラム。
【請求項２０】
前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１８に記載のプログラム。
【請求項２１】
前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定される、請求項１８に記載のプログラム。
【請求項２２】
前記アルゴリズムが、少なくとも第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいている、請求項１８に記載のプログラム。
【請求項２３】
ローカル状態情報を前記第２クラスタに定期的に提供する処理を更にコンピュータに実行させる、請求項１８に記載のプログラム。
【請求項２４】
前記ローカル状態情報が、前記第１確率値を含む、請求項２３に記載のプログラム。
【請求項２５】
前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000013
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットである、請求項２４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのネットワーク化に関し、より具体的には、コンピュータのクラスタ環境におけるキューイングに関する。即ち、本発明は、このようなキューイングを行うコンピュータシステム、方法、及びプログラムに関する。
【背景技術】
【０００２】
グリッド及びクラスタコンピューティングを用いる分散システムにおいて計算量の多いタスクを処理するには、負荷バランシングがますます重要な問題となってきた。１９９０年代からこのような分散システムの使用が増加したのには、いくつかの理由がある。まず、科学者たちは、並列アルゴリズムを効果的に用いることにより、複数のワークステーション及びパーソナルコンピュータにおいて、スーパーコンピュータと同じぐらいの速さで、複雑な計算タスクを処理することができるようになった。スーパーコンピュータは卓越した計算力を備えるとこれまでは考えられてきたが、１台のスーパーコンピュータを購入するよりも複数のワークステーション及びパーソナルコンピュータを共用した方がはるかにコストは安い。２番目に、インターネット、無線ネットワーク、及びモバイルコンピューティングが急成長したことによって、データ及びユーザの場所が分散しているために分散コンピューティング環境を必要とするアプリケーションが多数生じた。最後に重要なことであるが、インターネットのような広域ネットワークではユーザの数が急激に増加し得るので、短時間でサーバに高負荷がかかる可能性があり、そうすると、サーバは「ホットスポット」となって、キューにおけるユーザ要求の待ち時間が大幅に長くなることにより、ユーザに対する平均サービス時間が非合理的に増加する。
【０００３】
従って、グリッド及びクラスタコンピューティング環境では、１種類のユーザ要求を処理するのに複数個（複数インスタンス）のサーバがインストールされており、これをサーバプール若しくはクラスタと呼ぶことがある。クラスタにおけるサーバはいずれも、計算タスクである要求を処理することができ、要求はそれを処理するのに使用可能な１つのサーバが割り当てられるまで、キューに並んでいなければならない。このクラスタに使用可能なサーバがない場合、その要求を別のクラスタに転送することは可能であるが、これらのクラスタをネットワーク化することは、効率、スケーラビリティ（拡張可能性）、及びセキュリティの点で困難である。例えば２００４年には、世界的に、３７，７９０のホストを含む９５６のコンドルプール(Condor pool：計算資源、即ちサーバのホストコンピュータのクラスタ）があった。伝えられるところによると、グーグル(Google)（登録商標）のようなサービスプロバイダは、そのクラスタに約１０万台のコンピュータを備えている。２００５年１２月８日の報告によると、グリッド（Grid）は、世界に、３５０万台のコンピュータデバイス及び１３０万人のメンバーを包含している。
【０００４】
非特許文献１〜非特許文献３には、このような従来のグリッド・クラスタコンピューティング技術が記載されている。また非特許文献４には、従来のキューイング技術が記載されている。
【０００５】
一般的には、待ち行列理論において広く研究されてきたように、複数のサーバに対して共通キューを用いる方が、１つのサーバに対してそれぞれ別個のキューを用いるよりも効率が良い。その理由は、共通キューによれば、キューが空でない（即ち、要求が待っている）ときは常に、いずれのアイドルサーバにもタスクを割り当てることができるからである。しかしながら、サーバがネットワーク上の地理的に分散した場所（即ち、別々のクラスタ）にインストールされている場合（特に、イントラネットが地球上の複数の場所に及ぶ世界的ビジネスの場合）、このような共通キューを実施することは実際には非常に困難である。例えば、コンドルプールは、フロッキング(flocking)及びグライディングイン(gliding in)を用いて、クラスタ外部にある使用可能なサーバを探し出すが、世界的ネットワークではスケーラビリティ及び性能に限りがある。
【０００６】
従って、従来のキューイング技法では、サーバの共同クラスタ用の共通キューを作成するスケーラブル（拡張可能）なキューイングアルゴリズムを提供することができない。
【非特許文献１】IAN FOSTER, et al., "Computational Grids", Chapter 2 of The Grid: Blueprint for a New Computing Infrastructure, Morgan-Kaufman, 1999（イアン・フォスター他著「コンピュータグリッド」、『グリッド：新しいコンピュータインフラの青写真』第２章、モーガン−カウフマン版、1999年）
【非特許文献２】Shouji Ogura, et al., "Evaluation of the inter-cluster data transfer on Grid environment", Proceedings of the 3rd IEEE/ACM Int'l Symposium on Cluster Computing on the Grid, IEEE Computer Science, 2003（小倉章嗣他著「グリッド環境におけるクラスタ間データ転送の評価」、第３回IEEE/ACMグリッドにおけるクラスタコンピューティングに関する国際シンポジウム会報、IEEEコンピュータサイエンス、2003年）
【非特許文献３】Sang-Min Park, et al., "Chameleon: A Resource Scheduler in A Data Grid Environment*", Proceedings of the 3rd IEEE/ACM Int'l Symposium on Cluster Computing on the Grid, IEEE Computer Science, 2003（サンミン・パク他著「カメレオン：データグリッド環境におけるリソーススケジューラ」、第３回IEEE/ACMグリッドにおけるクラスタコンピューティングに関する国際シンポジウム会報、IEEEコンピュータサイエンス、2003年）
【非特許文献４】Peterson Davie, "Queuing Disciplines", Chapter 6 of Computer Networks: A System Approach, pgs. 457-464, Morgan Kaufman, San Francisco, 2000（ピーターソン・デヴィー著「キューイング統御」、『コンピュータネットワーク：システムアプローチ』第６章、457〜464ページ、モーガン−カウフマン版、サンフランシスコ、2000年）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の手法は、従来のキューイング技法に関する上記及びその他の問題のうちの１つ以上を実質的に取り除くシステム、方法、及びプログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の請求項１に係る発明は、ａ．少なくとも１つのサーバ及び第１キューを備えると共に、サービス要求に応じてサービスを提供するように動作可能な、第１クラスタと、ｂ．第２キューを備えると共に、サービス要求に応じてサービスを提供するように動作可能な、第２クラスタと、を備える、コンピュータシステムであって、前記第１クラスタが、i.  サービス要求を受信し、ii. 前記第１クラスタにアイドルサーバがあるかどうか判別し、iii.前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、iv. 前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を前記第２クラスタに転送するように動作可能であることを特徴とする。
【０００９】
本発明の請求項２に係る発明は、請求項１のシステムにおいて、前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定されることを特徴とする。
【００１０】
本発明の請求項３に係る発明は、請求項１のシステムにおいて、前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００１１】
本発明の請求項４に係る発明は、請求項１のシステムにおいて、前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００１２】
本発明の請求項５に係る発明は、請求項１のシステムにおいて、前記アルゴリズムが、少なくとも前記第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいていることを特徴とする。
【００１３】
本発明の請求項６に係る発明は、請求項１のシステムにおいて、前記第１クラスタの前記第１キューと前記第２クラスタの前記第２キューとの間のリンクをさらに備えることを特徴とする。
【００１４】
本発明の請求項７に係る発明は、請求項１のシステムにおいて、前記第１クラスタが、ローカル状態情報を前記第２クラスタに定期的に提供するように動作可能であることを特徴とする。
【００１５】
本発明の請求項８に係る発明は、請求項７のシステムにおいて、前記ローカル状態情報が、前記第１確率値を含むことを特徴とする。
【００１６】
本発明の請求項９に係る発明は、請求項８のシステムにおいて、前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000003
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットであることを特徴とする。
【００１７】
本発明の請求項１０に係る発明は、少なくとも１つのクラスタ化されたサーバを含むシステムにおけるキューイング方法であって、ａ．第１キューを備える第１クラスタにおいてサービス要求を受信し、ｂ．前記第１クラスタにアイドルサーバがあるかどうか判別し、ｃ．前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、ｄ．前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を第２クラスタに転送することを特徴とする。
【００１８】
本発明の請求項１１に係る発明は、請求項１０の方法において、前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定されることを特徴とする。
【００１９】
本発明の請求項１２に係る発明は、請求項１０の方法において、前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００２０】
本発明の請求項１３に係る発明は、請求項１０の方法において、前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００２１】
本発明の請求項１４に係る発明は、請求項１０の方法において、前記アルゴリズムが、少なくとも第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいていることを特徴とする。
【００２２】
本発明の請求項１５に係る発明は、請求項１０の方法において、ローカル状態情報を前記第２クラスタに定期的に提供することを更に含むことを特徴とする。
【００２３】
本発明の請求項１６に係る発明は、請求項１５の方法において、前記ローカル状態情報が、前記第１確率値を含むことを特徴とする。
【００２４】
本発明の請求項１７に係る発明は、請求項１６の方法において、前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000004
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットであることを特徴とする。
【００２５】
本発明の請求項１８に係る発明は、少なくとも１つのクラスタ化されたサーバを含むシステムにおいて、コンピュータにキューイング処理を実行させるためのコードを含むプログラムであって、前記コードは、ａ．第１キューを備える第１クラスタにおいてサービス要求を受信し、ｂ．前記第１クラスタにアイドルサーバがあるかどうか判別し、前記第１クラスタにアイドルサーバがある場合には、該アイドルサーバに前記受信した要求を割り当て、前記第１クラスタにアイドルサーバがない場合には、少なくとも第１確率値に基づいたアルゴリズムに従って、前記受信した要求を前記第１キューに入れるか、又は前記受信した要求を第２クラスタに転送すること、を含む処理をコンピュータに実行させることを特徴とする。
【００２６】
本発明の請求項１９に係る発明は、請求項１８のプログラムにおいて、前記第１確率値が、前記第１キューに待機しているサービス要求の数に基づいて決定されることを特徴とする。
【００２７】
本発明の請求項２０に係る発明は、請求項１８のプログラムにおいて、前記第１確率値が、前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００２８】
本発明の請求項２１に係る発明は、請求項１８のプログラムにおいて、前記第１確率値が、前記第１キューに待機しているサービス要求の数及び前記第１クラスタにおけるサーバの数に基づいて決定されることを特徴とする。
【００２９】
本発明の請求項２２に係る発明は、請求項１８のプログラムにおいて、前記アルゴリズムが、少なくとも第２キューに待機しているサービス要求の数に基づいて決定された第２確率値に更に基づいていることを特徴とする。
【００３０】
本発明の請求項２３に係る発明は、請求項１８のプログラムにおいて、ローカル状態情報を前記第２クラスタに定期的に提供する処理を更にコンピュータに実行させることを特徴とする。
【００３１】
本発明の請求項２４に係る発明は、請求項２３のプログラムにおいて、前記ローカル状態情報が、前記第１確率値を含むことを特徴とする。
【００３２】
本発明の請求項２５に係る発明は、請求項２４のプログラムにおいて、前記ローカル状態情報が、下の式で表される第２確率値を更に含み、
【数１】
2008047096.tif 000005
式中、Ｐkは前記第１確率値であり、Φkは前記第１クラスタの隣接クラスタのセットであることを特徴とする。
【００３３】
本発明に関する更なる態様について、一部は以下の説明で述べられ、一部は以下の説明から明らかとなるか或いは本発明の実施により理解されるであろう。本発明の態様は、以下の詳細な説明及び添付の特許請求の範囲により特に示される原理、並びに、様々な原理と態様との組み合わせによって、実現され、達成され得る。
【００３４】
当然のことながら、上記及び下記記述は共に、単なる例示及び説明であり、いかなる形においても、特許請求の範囲に記載されている発明又はその特許出願を限定することを意図しない。
【発明の効果】
【００３５】
本発明によるシステム、方法、プログラムにより、複数のクラスタ間での共有キューを効率よく、かつ容易にシステムを拡張可能な形態で維持することができるという効果がある。
【発明を実施するための最良の形態】
【００３６】
本明細書中に組み込まれ且つ本明細書の一部を構成する添付の図面は、本発明の実施形態を例示しており、以下の記述と共に、本発明の技法の原理を説明及び図示する機能を果たす。
【００３７】
以下の詳細な説明において、添付の図面を参照するが、これらの図面では、全く同一機能の要素は同じ参照番号で示されている。添付の図面は、限定の目的ではなく、例示の目的で、本発明の原理に従った具体的な実施形態及び実施例を示している。これらの実施例は、当業者が本発明を実施することができるように詳細に説明されており、当然のことながら、他の実施例を用いてもよく、本発明の範囲及び精神を逸脱しない限り、構造的な変更や様々な要素の置き換えを行ってもよい。従って、以下の詳細な説明は、限定された意味で解釈されるものではない。更に、説明する本発明の様々な実施形態は、汎用コンピュータで実行するソフトウェアの形態で実施されても、専用ハードウェアの形態で実施されても、ソフトウェアとハードウェアを組み合わせた形態で実施されてもよい。
【００３８】
本発明の手法の一態様は、サーバの連携クラスタ若しくはグリッド用の共通キューを実施するように設計された、高性能のキューイング方法及びシステムである。本発明の手法の一実施形態では、サーバの各クラスタがローカルキューを保持し、これらのキューがネットワーク化されることによって、これらのクラスタにおける全サーバ用の統一（若しくは共通）キューが形成される。過密なキューによって受信された受信サービス要求は、キューの長さ及び／又はその他の状態に応じて決定され且つ慎重に設定された確率を用いるランダムアルゴリズムに基づいて、他のキューへ転送される。本発明のシステムの一実施形態は、クラスタ間におけるサポートの優先順位を表すように動作可能な、ネットワークキュー間における定期的メッセージ交換アルゴリズムを備える。
【００３９】
当業者には理解されるように、本発明の手法によれば、ローカルキューがネットワーク化されてサポートの合意が行われ、これにより、サービスのグリッドが、事業提携に適応可能となると共に参加者の数に合わせて拡張可能となる。また、理解されるように、本発明のキューイング方法は、ローカル性認識（locality awareness）及び負荷バランスを備えた状態で、キュー間において要求を転送することができ、この方法によって、各クラスタは、ローカルで発生する要求を高速処理するためのローカルキューを、サーバファームのように低いオーバヘッドで保持することができる。
【００４０】
従って、本発明の概念の一実施形態によれば、連携されたサーバクラスタ用の共通キューを実施する、高性能のキューイング方法が提供される。サーバの各クラスタがローカルキューを保持すると同時に、これらのキューはネットワーク化されて、これらのクラスタにおける全サーバ用の統一（若しくは共通）キューが形成される。また、ランダムアルゴリズム及びネットワークキュー間におけるメッセージ交換アルゴリズムによって、過密キューにおける要求を他のキューへ転送する方法が提案される。
【００４１】
次に、本発明のキューイングシステム及び方法を、添付の図面を参照しながら詳細に説明する。図１を参照すると、本発明のシステム１００は、クラスタ１０１にインストールされた複数インスタンスのサービスを含む。このシステム１００において、各クラスタ１０１はキュー１０２を含み、受信したサービス要求１０３を保持する。当業者には理解されるように、本発明の概念は、クラスタ１０１によって提供されるいずれの特定タイプのサービスにも限定されない。このようなサービスは、あらゆる既知の若しくはこれから開発されるサービスプロトコル（例えば、ＨＴＴＰ、ＦＴＰ、ＳＯＡＰ、ＳＭＴＰ、ＩＭＡＰ、ＰＯＰなどが挙げられるが、これらに限定されない）によるサービスを含み得る。
【００４２】
クラスタ１０１はそれぞれ、前記サービスを提供するように動作可能な１つ以上のサーバ１０４を含む。これらのサーバ１０４は、高いサービスアベイラビリティ（サービス提供性）及び／又はフォールトトレランス（耐障害性）を提供する技法であれば、いずれの既知の若しくはこれから開発される技法を用いて、クラスタ１０１に構成されることができる。クラスタはそれぞれ、クライアント（図示省略）からのサービス要求を受信するように動作可能である。クラスタに向けられたこのようなサービス要求は、ローカルサービス要求と呼ばれる。本発明の概念によれば、クラスタ１０１のうちの１つによって受信されたローカルサービス要求は、この受信クラスタ１０１におけるアイドルサーバに割り当てられるか、この受信クラスタのキューに入れられるか、この受信クラスタによって別のクラスタ１０１へ転送される。
【００４３】
クラスタ１０１のうちの１つによってローカルサービス要求が受信された際、この受信クラスタ１０１内に使用可能な（即ち、アイドル状態の）サーバ１０４がまだ少なくとも１つある場合には、この使用可能なアイドルサーバのうちの１つがすぐに割り当てられ、受信された要求が処理される。逆に受信クラスタ内の全サーバ１０４が他の要求を処理するのに使用中である場合には、このクラスタ内のサーバ１０４のうちの１つがアイドル状態となるまで、要求１０３はこの受信クラスタ１０１のローカルキューに入れられる。或いは、受信された要求は、別のクラスタ１０１に転送されてもよく、この場合、この受信された要求は転送された別のクラスタ１０１において、アイドルサーバに割り当てるか、キュー１０２に入れるか、更に別のクラスタに転送されることができる。
【００４４】
本発明のシステムは、新しい要求１０３をキュー１０２に入れるのに確率アルゴリズムを用いることに注意されたい。具体的には、受信クラスタにアイドルサーバがない場合、要求は、ローカルキュー１０２の長さに応じて決定される確率により、受信クラスタのローカルキュー１０２の最後に追加される。そうでなければ、受信された要求１０３は、ネットワーク化された全てのキューの長さ及び／又はその他の状態によって決定される確率により、別のクラスタ１０１に属するネットワークキュー１０２に転送される。
【００４５】
以下の記載では、コンピュータシステム内における全く同一のクラスタ１０１には１、２…で始まる数字が付与されているものとする。本発明の概念の一実施形態によれば、クラスタｋのローカルキューが要求を受け入れる確率Ｐkは、Ｎk（クラスタｋのキューに待機しているその他のサービス要求の数）及びｍk（クラスタｋにおけるサーバ１０４の数）の関数である。一例としての実施形態では、このＰkの値は以下のように計算される。
【００４６】
【数２】
2008047096.tif 000006
【００４７】
本発明の概念の別の態様によれば、クラスタ１０１のネットワークキュー１０２は各々、隣接する一対のキュー間のリンクを保持する。このようなリンクは、クラスタのいずれかがそのキューに非常に多くの数の要求を急に受信したとき、２つのクラスタ１０１が最優先で互いに「サポート（支援）する」ように構成されている場合に作成される。要求１０３は、遠くのキューまでクラスタ１０１間を２回以上（即ち、複数のホップにわたり）転送することが可能であるため、直接的にリンクされていないキュー１０２であっても、それらのサーバ１０４をやはり共用することができることに留意されたい。
【００４８】
図２は、一例として、１つの要求がクラスタ１０１間を２回以上転送される構造を示している。図２は、一例としての要求の転送経路を示しており、要求はクラスタ１０１のキュー１０２−１〜１０２−ｋ間を複数回にわたって転送される。この実施形態では、要求が訪れるｋ番目のキュー１０２−ｋは、その要求を受け入れて記憶するか、或いは、Ｐkによりその要求を次のキューへ転送するか、個別に判断する。具体的には、キュー１０２−１は確率Ｐ1でその要求を受け入れ、キュー１０２−２は確率Ｐ2で要求を受け入れる、という具合になる。
【００４９】
図３は、クラスタ１０１−ｋが要求１０３をそのキュー１０２−ｋに受け入れるかどうかを決定する決定過程３０１を示している。この決定過程は、以下の３つのステップを含む。まず、受信キュー１０２−ｋは確率Ｐkで、単純にその要求を受け入れる。そうでなければ、過程は第２ステップへ続き、この第２ステップでは、受信キュー１０２−ｋは、それに直接的にリンクされた隣接キューのうちの１つのみに、その要求を以下に説明するようにランダムに転送しようと試みる。本発明のシステムの一実施形態では、各キュー１０２は、その「ローカル状態」を全ての隣接キューと定期的に交換することに留意されたい。このローカル状態とは、そのキューに対する１組の数（Ｐk，Ｒk）であり、ここで、Ｐkは先に定義されたとおりであり、Ｒkは以下のように定義される。
【００５０】
【数１】
2008047096.tif 000007
【００５１】
上記式において、Φkは、ｋ番目のクラスタにおけるキュー１０２−ｋの全ての隣接キューのセットである。このキュー１０２−ｋが要求を転送しようと試みる場合、この要求は以下の式で表される確率で隣接キュー１０２−ｙへ転送される。
【００５２】
【数３】
2008047096.tif 000008
【００５３】
上記式において、Ｒyは、キュー１０２−ｋが知っているキュー１０２−ｙの最新状態における値であり、｜Φk｜は、キュー１０２−ｋの隣接キューの数である。（１−Ｐk）で正規化するのは、キュー１０２−ｙに関して先に計算するＲyに値Ｐkが関与しており、これを相殺すべきだからである。
【００５４】
最後に、前記第２ステップで要求１０３を転送しようとする試みが全て確率によって拒否された場合、この要求はｋ番目のキュー１０２−ｋに単に留まる。本発明の概念の一実施形態では、所定の時間が経つと、ｋ番目のキュー１０２−ｋの長さが長いままで確率Ｐkが引き続き低い場合、このキュー１０２−ｋは要求１０３を再度転送しようとすることができる。
【００５５】
要求１０３は、現キューの負荷以外の理由（例えば、遠隔ユーザ認証の失敗や、序列ネゴシエーションの失敗）で、ローカルキューによって拒否されることもあることに留意されたい。実際には、このような要因によって、確率Ｐkはより小さくなる。しかし、当業者には理解されるように、このような追加の作用は本発明にとってそれほど重要なものではない。
【００５６】
以下に説明するように、要求１０３がより早い順序でクラスタ１０１を訪れるほど、且つ、クラスタ自体の受信要求を受け入れる確率がより高いほど、要求１０３はより高い確率でクラスタ１０１によって受け入れられる。更に、本発明の概念の一態様によれば、要求１０３が無限長経路（例えば、サイクル）で転送されることはまずない。
【００５７】
本発明の一実施形態を、シミュレーションによってテストした。このシミュレーションの結果によれば、ポアソン過程にユーザが出入りする動的環境では、作成された共通キューの方が分離キューよりも効率が良かったことが示された。このシミュレーションの結果は、オンザフライ（動的）キューの長さが短くなり、且つ、要求の平均待ち時間も短くなる、ということで目に見えるかたちで現れる。
【００５８】
当業者には理解されるように、本発明のランダム転送アルゴリズムによれば、要求は、最初の受信クラスタにより近く且つ確率がより高いキューによって確実に受け入れられる。これにより、必要とされる要求転送動作の数が最小限に抑えられる。以下の説明において、Ｑkは、要求がｋ番目に訪れたインスタンスによって受け入れられる確率を示している。ｋ＝１，２，３…という全ての値に関し、Ｑkの値は以下の式によって計算される。
【００５９】
【数４】
2008047096.tif 000009
【００６０】
理想的な負荷バランシングアルゴリズムでは、全てのｋに関してＱk／Ｐk比率が同じになると推測され得るが、当業者には理解されるように、インスタンスの場所も重要な要素と考えるべきである。つまり、要求元に「より近い」インスタンスは、所定の同じ負荷を受け入れる確率も「より高い」。本発明の方法によれば、「負荷バランス」要件と「ローカル性認識」要件との両方が満たされる。
【００６１】
図３に示されている例としての実施形態では、Ｐkの値は、ｋ番目に訪れたクラスタ１０１−ｋに関し、閉区間０〜０．６（平均０．３）からランダムに選択される。図４は、Ｐk、Ｑk、受け入れ率、及びｋの関数であるＱk／Ｐk比率の値の例示的グラフを示している。この図４を参照すると、結果として得られたＱk曲線にはＰk曲線との類似性が見られるが、Ｑk／Ｐk比率は実際にはｋが大きくなるにつれて減少している。分析すると、１回目に訪れたｋの範囲内における受け入れ率は、以下のとおりである。
【００６２】
【数５】
2008047096.tif 000010
【００６３】
また、当業者には理解されるように、要求がより早い順序でクラスタを訪れるほど、且つ、クラスタ自体の受信要求を受け入れる確率がより高いほど、要求はより高い確率でクラスタによって受け入れられる。ゆえに、本発明の技法によれば、要求は、長さがより短く（従って先入れ先出しの場合には待ち時間がより短く）且つ最初のクラスタにより近く確率がより高いキューに確実に転送される。このようにローカルキューがネットワーク化されてサポートの合意が行われ、これにより、サービスのグリッドが、事業提携に柔軟且つ適応可能となると共に、そのサービスグリッドにおける参加者の数に合わせて拡張可能となる。
【００６４】
本発明は、クラスタ化された複数のサーバコンピュータを含むシステムにおいて、上述したキューイング処理を行う方法、及び該システムに上述のキューイング処理を実行させるコード（命令）を含むプログラムとしても実現できる。
【００６５】
図５は、本発明のクラスタ１０１の一実施形態が実施され得る、コンピュータ／サーバシステム５００の一実施形態を示すブロック図である。
各クラスタ１０１は、上述したように相互接続されたプラットフォーム５０１のうちの１つ以上を含み得る。このシステム５００は、コンピュータ／サーバプラットフォーム５０１、周辺装置５０２、及びネットワーク資源５０３を含む。
【００６６】
コンピュータプラットフォーム５０１は、データバス５０４、又は、このコンピュータプラットフォーム５０１の様々な部分間にわたり情報を通信するその他の通信メカニズムと、このバス５０４に接続されて情報を処理し且つその他の計算及び制御タスクを行うプロセッサ５０５とを含み得る。また、コンピュータプラットフォーム５０１は、バス５０４に接続されて様々な情報及びプロセッサ５０５により実行される命令を記憶する、揮発性記憶装置５０６（例えば、ランダムアクセスメモリ(ＲＡＭ)や、その他の動的記憶装置）も含む。この揮発性記憶装置５０６は、プロセッサ５０５による命令の実行中に、一時的数値変数又はその他の中間情報を記憶するのに用いることができる。更に、コンピュータプラットフォーム５０１は、バス５０４に接続されて静的情報及びプロセッサ５０５（例えば、基本入出力システム(ＢＩＯＳ)）への命令並びに様々なシステム構成パラメータを記憶する、読み出し専用メモリ（ＲＯＭ若しくはＥＰＲＯＭ）５０７又はその他の静的記憶装置も含み得る。また、固定記憶装置５０８（例えば、磁気ディスク、光ディスク、固体フラッシュメモリ素子）が設けられバス５０４に接続されて、情報及び命令が記憶される。これらの記憶装置には、本発明のシステムに上述したキューイング処理を実行させるためのコードからなるプログラムが記憶されることができる。
【００６７】
コンピュータプラットフォーム５０１は、バス５０４を介して、情報をこのコンピュータプラットフォーム５０１のシステム管理責任者又はユーザに表示するディスプレイ５０９（例えば、陰極線管(ＣＲＴ)、プラズマディスプレイ、液晶ディスプレイ(ＬＣＤ)）に接続され得る。英数字及びその他のキーを含む入力装置（キーボード）５１０がバス５０４に接続されて、情報及びコマンドの選択がプロセッサ５０５に伝送される。別のタイプのユーザ入力装置として、方向情報及びコマンドの選択をプロセッサ５０５に伝送し且つディスプレイ５０９におけるカーソルの動きを制御するカーソル制御装置５１１（例えば、マウス、トラックボール、カーソル方向キー等の位置ポイント装置）がある。一般的に、このような入力装置では、２つの軸（即ち、第１軸(例えば、ｘ)及び第２軸(例えば、ｙ)）における２つの自由度を有することにより、平面における位置を特定することができる。
【００６８】
コンピュータプラットフォーム５０１にバス５０４を介して外部記憶装置５１２を接続することにより、コンピュータプラットフォーム５０１に追加の若しくは取り外し可能（リムーバブル）な記憶容量を設けてもよい。コンピュータシステム５００の一実施形態では、この外部リムーバブル記憶装置５１２を用いて、他のコンピュータシステムとのデータ交換を支援してもよい。
【００６９】
本発明は、コンピュータシステム５００を用いて本明細書中に記載の技法を実施することに関する。一実施形態では、本発明のシステムは、コンピュータプラットフォーム５０１のような装置に備えられ得る。本発明の一実施形態によれば、本明細書中に記載の技法は、コンピュータシステム５００により、揮発性記憶装置５０６に収容された１つ以上の命令のうちの１つ以上のシーケンスをプロセッサ５０５が実行することにより実施される。このような命令は、別のコンピュータ可読媒体（例えば、固定記憶装置５０８）から揮発性記憶装置５０６に読み込まれてもよい。揮発性記憶装置５０６に収容された命令のシーケンスを実行することにより、プロセッサ５０５は、本明細書中に記載の処理ステップを行う。これにより、コンピュータシステム５００を上述したキューイング処理を実行するシステムとして機能させることができる。
別の実施形態では、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせて組み込み回路を用いて、本発明を実施してもよい。このように、本発明の実施形態は、ハードウェア回路とソフトウェアとのいずれの特定の組み合わせにも限定されない。
【００７０】
本明細書中で用いる「コンピュータ可読媒体」という語は、プロセッサ５０５に命令を与えて実行させることに関するあらゆる媒体を指す。このコンピュータ可読媒体は、本明細書中に記載の方法及び技法のいずれも実施する命令を保持し得る、機械可読媒体の単なる一例である。このような媒体は、多数の形態を取ることができ、例として、不揮発性媒体、揮発性媒体、及び伝送媒体が挙げられるが、これらに限定されない。不揮発性媒体としては、例えば、固定記憶装置５０８のような、光ディスク若しくは磁気ディスクが挙げられる。揮発性媒体としては、揮発性記憶装置５０６のような、動的記憶装置が挙げられる。伝送媒体としては、データバス５０４を含むワイヤのような、同軸ケーブル、銅線、及び光ファイバーが挙げられる。また、この伝送媒体は、電波や赤外線によるデータ通信で生成されるような、音波や光波の形態を取ることもできる。
【００７１】
コンピュータ可読媒体の一般的な形態としては、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、あらゆるその他の磁気媒体、又は、ＣＤ−ＲＯＭ、あらゆるその他の光媒体、又は、パンチカード、紙テープ、孔パターンを備えたあらゆるその他の物理的媒体、又は、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、フラッシュドライブ、メモリカード、あらゆるその他のメモリチップ若しくはカートリッジ、又は、後で説明するような搬送波、又は、コンピュータが読み取ることのできるあらゆるその他の媒体が挙げられる。
【００７２】
１つ以上の命令のうちの１つ以上のシーケンスをプロセッサ５０５に伝送して実行するのに、様々な形態のコンピュータ可読媒体を用いてもよい。例えば命令は、まずリモートコンピュータから磁気ディスクに伝送されることができる。或いは、リモートコンピュータは、命令をその動的記憶装置にロードし、モデムを用い電話回線を介してこの命令を転送することができる。コンピュータシステム５００のローカルなモデムは、電話回線上でデータを受信し、赤外線送信機を用いてこのデータを赤外線信号に変換することができる。赤外線検出器がこの赤外線信号に保持されたデータを受信することができると共に、適切な回路がこのデータをデータバス５０４上に載せることができる。バス５０４はこのデータを揮発性記憶装置５０６に伝送し、プロセッサ５０５がこの揮発性記憶装置５０６から命令を読み出して実行する。揮発性記憶装置５０６によって受信された命令は、必要に応じて、プロセッサ５０５によって実行される前か或いは後に、固定記憶装置５０８に記憶されてもよい。また、この命令は、当業界では周知の様々なネットワークデータ通信プロトコルを用い、インターネットを介して、コンピュータプラットフォーム５０１にダウンロードされてもよい。
【００７３】
コンピュータプラットフォーム５０１は、データバス５０４に接続されたネットワークインタフェースカード５１３のような、通信インタフェースも含む。この通信インタフェース５１３は、ローカルネットワーク５１５に接続されたネットワークリンク５１４への双方向データ通信接続をもたらす。例えば、この通信インタフェース５１３は、対応するタイプの電話回線へのデータ通信接続をもたらす総合デジタル通信網（ＩＳＤＮ）カード又はモデムであってもよい。別の例として、この通信インタフェース５１３は、互換ＬＡＮへのデータ通信接続をもたらすローカルエリアネットワークインタフェースカード（ＬＡＮＮＩＣ）であってもよい。また、無線リンク（例えば、周知の８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ、ブルートゥース等）を用いて、ネットワークを実現してもよい。このような実現方法ではいずれも、通信インタフェース５１３は、様々なタイプの情報を表すデジタルデータストリームを保持する、電気信号、電磁信号、又は光信号を送受信する。
【００７４】
一般的に、ネットワークリンク５１４は、１つ以上のネットワークを介して、他のネットワーク資源へのデータ通信をもたらす。例えば、ネットワークリンク５１４は、ローカルネットワーク５１５を介して、ホストコンピュータ５１６又はネットワーク記憶装置／サーバ５２２への接続をもたらし得る。更に若しくは或いは、このネットワークリンク５１４は、ゲートウェイ／ファイアウォール５１７を介して、広域若しくは大域ネットワーク５１８（例えば、インターネット）へ接続し得る。従って、コンピュータプラットフォーム５０１は、インターネット５１８上のいずれに位置するネットワーク資源（例えば、遠隔ネットワーク記憶装置／サーバ５１９）にもアクセスすることができる。一方、コンピュータプラットフォーム５０１も、ローカルエリアネットワーク５１５及びインターネット５１８上のいずれに位置するクライアントによってもアクセスされ得る。これらのネットワーククライアント５２０及び５２１自体は、プラットフォーム５０１と同様のコンピュータプラットフォームに基づいて実装されてもよい。
【００７５】
ローカルネットワーク５１５及びインターネット５１８は共に、デジタルデータストリームを保持する電気信号、電磁信号、又は光信号を用いる。コンピュータプラットフォーム５０１とデジタルデータを送受信する、様々なネットワークを介する信号及びネットワークリンク５１４上にあり通信インタフェース５１３を介する信号は、情報（データ信号）を搬送する搬送波の例示的形態である。
【００７６】
コンピュータプラットフォーム５０１は、様々なネットワーク（例えば、インターネット５１８、ローカルネットワーク（ＬＡＮ）５１５、ネットワークリンク５１４、通信インタフェース５１３）を介して、メッセージを送信しデータ、例えばプログラムコードを受信することができる。インターネットの例において、コンピュータプラットフォーム（システム）５０１がネットワークサーバとして機能する場合、クライアント５２０及び５２１の少なくとも１つで動作するアプリケーションプログラムに必要なコード又はデータを、インターネット５１８、ゲートウェイ／ファイアウォール５１７、ローカルエリアネットワーク５１５、及び通信インタフェース５１３を介して送信し得る。同様に、コンピュータプラットフォーム５０１は、他のネットワーク資源からコードを受信し得る。このような送受信され得るコード又はデータは、システム５００内のサーバ（コンピュータプラットフォーム５０１及び他のネットワークサーバ等）が本発明のキューイング処理を実施するためのプログラムコードであってもよい。
【００７７】
受信されたコードは、受信され次第プロセッサ５０５によって実行されるか、又は後で実行されるために、固定記憶装置５０８又は揮発性記憶装置５０６又は他の不揮発性記憶装置に記憶され得る。このように、コンピュータプラットフォーム（システム）５０１は、本発明のキューイング処理を実施するためのアプリケーションコードを搬送波の形態で取得し得る。
【００７８】
最後に、本明細書中に記載の処理及び技法は、本質的にいかなる特定の装置にも関連せず、コンポーネントのいかなる適切な組み合わせによっても実施され得ることを理解されたい。更に、本明細書中に記載の教示に従って、様々なタイプの汎用装置を用いてもよい。また、本明細書中に記載の方法及びプログラムの各ステップを行う専用装置を構築することは有益であることも明らかであろう。本発明を特定の例に関して説明してきたが、これらの例は、全ての点において、制限ではなく例示を意図したものである。当業者にはハードウェア、ソフトウェア、及びファームウェアの多数の異なる組み合わせが、本発明を実施するのに適していることが理解されよう。例えば、説明したソフトウェアは、様々なプログラミング言語又はスクリプト言語（例えば、アセンブリ言語、Ｃ／Ｃ＋＋、ｐｅｒｌ、シェル、ＰＨＰ、Ｊａｖａ(登録商標)など）で実施され得る。
【００７９】
更に、当業者には、本明細書中に開示した本発明の具体例及び実施例を考慮することにより、本発明のその他の実施例が明らかとなるであろう。データ複製機能を備えたコンピュータ制御の記憶装置に、本明細書中に説明した実施形態の様々な態様及びコンポーネントの少なくとも１つを、単独で或いは任意の組み合わせで用いてもよい。これらの具体例及び実施例は単なる例と見なし、本発明の真の範囲及び精神は添付の特許請求の範囲により示されることが意図されている。
【図面の簡単な説明】
【００８０】
【図１】本発明の概念が実施され得る、ネットワークキューを備えるクラスタシステムの、一例としての実施形態を示す図である。
【図２】本発明の概念による、キュー間において要求を転送する際の確率的な受け入れを示す図である。
【図３】本発明の概念による、受信要求を受け入れるか又は転送するかの決定過程を示す図である。
【図４】０〜０．６のランダムなＰkで要求を受け入れる例示的確率を示すグラフである。
【図５】本発明のシステムが実施され得るコンピュータプラットフォームの、一例としての実施形態を示す図である。
【符号の説明】
【００８１】
１００    キューイングシステム
１０１    クラスタ
１０２    キュー
１０４    サーバ
３０１    決定過程
５００    コンピュータシステム
５０１    コンピュータプラットフォーム
５０２    周辺装置
５０３    ネットワーク資源
５１４    ネットワークリンク
【図１】
2008047096.tif 000014
【図２】
2008047096.tif 000015
【図３】
2008047096.tif 000016
【図４】
2008047096.tif 000017
【図５】
2008047096.tif 000018