(57)【要約】プロデューサシステムへのコンシューマシステムアクセスをリースするプロセス及びシステムを開示する。コンシューマシステムは、１組のリースエージェントと通信して、サービスへのアクセスをコンシューマシステムに提供することができるいくつかのプロデューサシステムの識別情報を取得することができる。各リースエージェントは、一定期間にわたってプロデューサシステムへのアクセスをコンシューマシステムに提供し得る。コンシューマシステムが特定のプロデューサシステムへの更なるアクセスを必要とする場合、コンシューマシステムは、リースの更新を、プロデューサシステムの最初のリースをコンシューマシステムに提供したリースエージェントに要求することができる。【選択図】図２
2016526723.tif 000002
【特許請求の範囲】
【請求項１】
プロデューサシステムへのアクセスをリースして前記プロデューサシステムによってホスティングされたサービスへのアクセスを取得するためのシステムであって、
１つ以上のプロセッサを含むコンシューマシステム
を備え、
前記コンシューマシステムは、
プロデューサシステムのサービスにアクセスするリース要求を生成し、
前記リース要求を複数のリースエージェントに提供し、
プロデューサシステムの識別情報を前記複数のリースエージェントのうちの少なくともいくつかから受信するように構成されたリースリクエスタを更に含み、
前記コンシューマシステムは、前記複数のリースエージェントによって識別された前記プロデューサシステムの少なくともいくつかとの接続を開始しようとするように構成された接続モジュールを更に含み、
前記コンシューマシステムは、前記接続モジュールが前記第１のプロデューサシステムとの接続を失敗せずに確立することに応答して前記プロデューサシステムのうちの少なくともいくつかの第１のプロデューサシステムでの前記サービスにアクセスするように構成されたリソースリクエスタを更に含む、システム。
【請求項２】
前記リースリクエスタは、更に、前記識別されたプロデューサシステムのうちの少なくともいくつかのリース時間を受信するように構成され、前記リース時間は、前記コンシューマシステムが前記プロデューサシステムでの前記サービスにアクセスするように許可される一定期間を含む、請求項１に記載のシステム。
【請求項３】
前記接続モジュールは、更に、前記第１のプロデューサシステムに関連した前記リース時間を前記第１のプロデューサシステムに提供するように構成される、請求項２に記載のシステム。
【請求項４】
前記リソースリクエスタは、更に、前記リース時間がリース閾値を満たす前記第１のプロデューサシステムについて前記リース時間から残る時間の量に応答して満了する前には前記第１のプロデューサでの前記サービスにアクセスする既存のサービス要求が完了されないことになる確率を判定するように構成され、:
前記リースリクエスタは、更に、
前記確率が更新閾値を満たすと判定することに応答において前記第１のプロデューサシステムでの前記サービスにアクセスする更新リース要求を生成し、
前記更新リース要求を、前記第１のプロデューサシステムの前記識別情報を提供した前記複数のリースエージェントの前記リースエージェントに提供するように構成される、請求項２に記載のシステム。
【請求項５】
一部が前記第１のプロデューサシステムに関係する現状情報を含むメタデータを前記第１のプロデューサシステムから取得し
前記現状情報の少なくとも一部を、前記第１のプロデューサシステムの前記識別情報を提供した前記複数のリースエージェントの前記リースエージェントに提供するように構成された現状モジュールを更に備える、請求項１に記載のシステム。
【請求項６】
プロデューサシステムへのアクセスをリースして前記プロデューサシステムによってホスティングされたサービスへのアクセスを取得する方法であって、
１つ以上のプロセッサを含むコンシューマシステムによって
複数のプロデューサシステムの１つのサービスにアクセスするリース要求を生成することと、
前記リース要求を複数のリースエージェントに提供することと、
前記プロデューサシステムのうちの１つ以上の識別情報を個々のリースエージェントから受信することと、
前記複数のリースエージェントによって識別された前記プロデューサシステムのうちの少なくともいくつかとの接続を開始しようとすることと、
前記プロデューサシステムのうちの少なくともいくつかの第１のプロデューサシステムとの接続を失敗せずに確立することに応答して、前記第１のプロデューサシステムによって提供された前記サービスにアクセスすることと、
を含む方法。
【請求項７】
前記プロデューサシステムのうちの１つ以上の前記識別情報を個々のリースエージェントから受信することは、前記識別されたプロデューサシステムのうちの少なくともいくつかの消耗可能なリソースを受信することを含み、
前記消耗可能なリソースは、前記コンシューマシステムが前記プロデューサシステムでの前記サービスにアクセスするように許可される一定期間、１組の計算サイクル、前記識別されたプロデューサシステム、又は、ディスク記憶装置の使用に関連した財務予算のうちの１つ以上を含み、
前記第１のプロデューサシステムの前記消耗可能なリソースからの残る消耗可能なリソースの量がリース閾値を満たすことに応答して、前記方法は、
前記消耗可能なリソースが満了する前には前記第１のプロデューサでの前記サービスにアクセスする既存のサービス要求が完了されないことになる確率を判定することと、
前記確率が更新閾値を満たすと判定することに応答して、前記第１のプロデューサシステムでの前記サービスにアクセスする更新リース要求を生成することと、
前記更新リース要求を、前記第１のプロデューサシステムの前記識別情報を提供した前記複数のリースエージェントの前記リースエージェントに提供すること
を更に含み、
前記更新リース要求を前記リースエージェントに提供することに応答して、前記方法は、前記第１のプロデューサシステムの前記消耗可能なリソースの更新量を受信するか、又は、新しいプロデューサシステムの消耗可能なリソースの新しい量を受信することを更に含み、前記新しいプロデューサシステムは、前記第１のプロデューサシステムと異なる、請求項６に記載の方法。
【請求項８】
前記プロデューサシステムの前記少なくともいくつかの前記第１のプロデューサシステムとの前記接続を失敗せずに確立することに応答して、前記方法は、
メタデータを前記第１のプロデューサシステムから取得することを更に含み、前記メタデータのうちの少なくとも一部は、前記第１のプロデューサシステムに関係する現状情報を含み、
前記方法は、
前記現状情報の少なくとも一部を、前記第１のプロデューサシステムの前記識別情報を提供した前記複数のリースエージェントの前記リースエージェントに提供することを更に含む、請求項６に記載の方法。
【請求項９】
前記プロデューサシステムの前記少なくともいくつかの第２のプロデューサシステムとの接続を失敗せずに確立することに応答して、前記第２のプロデューサシステムでの第２のサービスにアクセスすること、請求項６に記載の方法。
【請求項１０】
プロデューサシステムへのアクセスをリースして前記プロデューサシステムによってホスティングされたサービスへのアクセスを提供するシステムであって、
コンピュータハードウェアを含むコンピュータシステムにおいて実施される、第１のリースシステムを含む第１のリースエージェント、
を備え、
前記第１のリースシステムは、
いくつかのプロデューサシステムによって提供されるサービスへのアクセスをリースする第１の要求をコンシューマシステムから受信し、
前記第１の複数のプロデューサシステムの個々のプロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて、前記いくつかのプロデューサシステムの第１のサブセットを含む第１の複数のプロデューサシステムの第１のプロデューサシステムを識別し、
前記第１のプロデューサシステムを識別することに応答して、前記第１のプロデューサシステムの識別情報を前記コンシューマシステムに提供するように構成され、
前記システムは、更に
第２のリースシステムを含む第２のリースエージェントを備え、前記第２のリースシステムは、
前記サービスへのアクセスをリースする第２の要求を前記コンシューマシステムから受信し、
前記第２の複数のプロデューサシステムの前記個々のプロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて第２の複数のプロデューサシステムの第２のプロデューサシステムを識別するように構成され、前記第２の複数のプロデューサシステムは、前記いくつかのプロデューサシステムの第２のサブセットを含み、前記いくつかのプロデューサシステムの前記第２のサブセットは、前記いくつかのプロデューサシステムの前記第１のサブセットと同一ではなく
前記第２のリースシステムは、更に
前記第２のプロデューサシステムを識別することに応答して、前記第２のプロデューサシステムの識別情報を前記コンシューマシステムに提供し、その結果、前記コンシューマシステムが、少なくとも前記第１のプロデューサシステム及び前記第２のプロデューサシステムからの前記サービスへのアクセスを要求することを可能にするように構成され、それによりプロデューサシステムの前記識別表示は、少なくとも前記第１のリースエージェントと前記第２のリースエージェント間で分散される分散プロセスであるようになっている、システム。
【請求項１１】
前記第１のリースシステムは、更に、第１のリース時間を前記コンシューマシステムに提供するように構成され、前記第１のリース時間は、前記コンシューマシステムが前記第１のプロデューサシステムにアクセスするように許可される一定期間を含み、前記第２のリースシステムは、更に、第２のリース時間を前記コンシューマシステムに提供するように構成され、前記第２のリース時間は、前記コンシューマシステムが前記第２のプロデューサシステムにアクセスするように許可される一定期間を含む、請求項１０に記載のシステム。
【請求項１２】
前記第１のリースエージェントは、第１の現状モジュールを更に含み、前記第１の現状モジュールは、
前記第１のプロデューサシステムの第１の更新された現状情報を受信し、
前記第１の更新された現状情報に少なくとも部分的に基づいて前記第１のプロデューサシステムの前記プロデューサ現状情報を更新するように構成され、
前記第２のリースエージェントは、第２の現状モジュールを更に含み、前記第２の現状モジュールは、
前記第２のプロデューサシステムの第２の更新された現状情報を受信し、
前記第２の更新された現状情報に少なくとも部分的に基づいて前記第２のプロデューサシステムの前記プロデューサ現状情報を更新するように構成される、請求項１０に記載のシステム。
【請求項１３】
前記第１の更新された現状情報及び前記第２の更新された現状情報は、前記コンシューマシステムから受信される、請求項１２に記載のシステム。
【請求項１４】
前記第１の更新された現状情報は、前記第１のプロデューサシステムから受信され、前記第２の更新された現状情報は、前記第２のプロデューサシステムから受信される、請求項１２に記載のシステム。
【請求項１５】
前記第１のリースエージェントは、更に、
前記第１のプロデューサシステムの更なるリース時間を取得する第１のリース更新要求を前記コンシューマシステムから受信し、
前記第１のプロデューサシステムのプロデューサ現状情報に少なくとも部分的に基づいて前記第１のリース更新要求を容認するべきかどうか判定し、
前記第１のリース更新要求を容認することを判定することに応答して、前記第１のプロデューサシステムの第１のリース更新時間を前記コンシューマシステムに提供するように構成され、
前記第１のリース更新要求を容認しないことを判定することに応答して、前記第１のリースエージェントは、更に、
前記第１の複数のプロデューサシステムの各プロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて第１の複数のプロデューサシステムの第３のプロデューサシステムを識別し、
前記第３のプロデューサシステムを識別することに応答して、前記第３のプロデューサシステムの識別情報を前記コンシューマシステムに提供するように構成される、請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、以下の出願、即ち、２０１３年６月２６日出願の「ＭＡＮＡＧＩＮＧ  ＣＬＩＥＮＴ  ＡＣＣＥＳＳ  ＴＯ  Ａ  ＰＬＵＲＡＬＩＴＹ  ＯＦ  ＣＯＭＰＵＴＩＮＧ  ＳＹＳＴＥＭＳ」という名称の米国特許出願第１３／９２７，８９２号と、２０１３年６月２６日出願の「ＰＲＯＤＵＣＥＲ  ＳＹＳＴＥＭ  ＰＡＲＴＩＴＩＯＮＩＮＧ  ＡＭＯＮＧ  ＬＥＡＳＩＮＧ  ＡＧＥＮＴ  ＳＹＳＴＥＭＳ」という名称の米国特許出願第１３／９２７，９２９号と、２０１３年６月２６日出願の、「ＰＲＯＤＵＣＥＲ  ＳＹＳＴＥＭ  ＳＥＬＥＣＴＩＯＮ」という名称の米国特許出願第１３／９２７，９３３号と、２０１３年６月２６日出願の、「ＰＲＯＤＵＣＥＲ  ＳＹＳＴＥＭ  ＰＡＲＴＩＴＩＯＮＩＮＧ  ＡＭＯＮＧ  ＬＥＡＳＩＮＧ  ＡＧＥＮＴ  ＳＹＳＴＥＭＳ」という名称の米国特許出願第１３／９２７，９９５号とに関連し、これらの特許の開示は、その全体が参照により本明細書に組み入れられる。
【背景技術】
【０００２】
多くの場合、計算リソース及びサービスが、いくつかのコンピューティングシステムによって提供される。これらの計算リソース及び／又はサービスは、いくつかの更なるコンピューティングシステムによって消費され得る。多くの場合、いくつかのコンピューティングシステムが、同じリソース又はサービスへのアクセスを提供することになる。リソース又はサービスを提供するコンピューティングシステムの各々は、典型的には、システムが一定期間中に処理することができる要求の数が制限される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許公開第２０１３／００７３７０３号
【発明の概要】
【課題を解決するための手段】
【０００４】
要求しているコンピュータシステムへのサービスをプロビジョニングするのを助けるために、一部の企業は、サービス又はリソースを提供する各システムの使用を追跡することができる集中システムを利用する。集中システムを使用することによって、プロビジョニングシステムの各々に掛かる負荷を、サービス又はリソースを提供するいくつかのコンピューティングシステム間で分散することができる。１つのそのような集中システムが、ハードウェア負荷分散装置である。ハードウェア負荷分散装置は、サービス又はリソースを提供するコンピューティングシステム間で要求を分配するのを助けることができ、それにより、負荷が、企業のプロビジョニングシステム全体にわたって分散される。
【０００５】
図面を通して、参照する要素間の対応を示すために参照番号を再使用する。図面は、本明細書で説明する本発明の実施形態を例示するために提示され、本発明の範囲を制限するためではない。
【図面の簡単な説明】
【０００６】
【図１Ａ】プロデューサシステムによってホスティングされたサービスへのアクセスをコンシューマシステムに提供するネットワーク環境の実施形態を例示する図である。
【図１Ｂ】プロデューサシステムによってホスティングされたサービスへのアクセスをコンシューマシステムに提供し、かつ、プロデューサシステム健康情報を１つ以上のリースエージェントに提供するネットワーク環境の実施形態を例示する図である。
【図２】プロデューサシステムによってホスティングされたサービスへのアクセスをコンシューマシステムに提供するネットワーク環境の実施形態の代替図である。
【図３】プロデューサシステムでのサービスにアクセスするプロセスの実施形態を例示する図である。
【図４】プロデューサシステムのリースをコンシューマシステムに提供するプロセスの実施形態を例示する図である。
【図５】プロデューサシステム更新プロセスの実施形態を例示する図である。
【図６】１組のプロデューサシステムを分割する分割プロセスの実施形態を例示する図である。
【図７】プロデューサシステムの観点からのプロデューサシステム登録プロセスの実施形態を例示する図である。
【図８】リースエージェントの観点からのプロデューサシステム登録プロセスの実施形態を例示する図である。
【図９】リースエージェント再分割プロセスの実施形態を例示する図である。
【図１０】ヒステリシスに基づくプロデューサ選択プロセスの実施形態を例示する図である。
【図１１】ロデューサシステムによってホスティングされたサービスへのアクセスをコンシューマシステムに提供するオーバーレイネットワーク環境の実施形態を例示する図である。
【図１２】プロデューサ仮想マシンでのサービスにアクセスするプロセスの実施形態を例示する図である。
【図１３】プロデューサ仮想マシンでのサービスにアクセスする要求を処理するプロセスの実施形態を例示する図である。
【図１４】プロデューサ仮想マシンへのアクセスをリースするプロセスの実施形態を例示する図である。
【図１５】オーバーレイネットワーク環境における通信を促進するために使用することができる現状管理テーブルの実施例を例示する図である。
【発明を実施するための形態】
【０００７】
序
ハードウェア負荷分散装置は、プロデューサシステムと呼ぶことができる、サービス又はリソースへのアクセスを提供するコンピューティングシステムが、コンシューマシステムと呼ぶことができる、サービス又はリソースへのアクセスを要求するコンピューティングシステムからの要求で過負荷になるのを防止する一助になるために使用することができるが、ハードウェア負荷分散装置は、いくつかの欠点を有し得る。例えば、ハードウェア負荷分散装置は、単一障害点をもたらす。換言すると、ハードウェア負荷分散装置が誤動作した場合、関連の企業システムが、サービス要求をプロデューサシステムにもはや転送することができないのでアクセス不可能になり得る。更に、ハードウェア負荷分散装置は、費用のかかる不透明なハードウェアであり得、企業システムを負荷分散するための魅力のないソリューションとなる。
【０００８】
ハードウェア負荷分散装置に関連した問題の１つのソリューションは、分散化された負荷分散装置を使用することである。しかしながら、分散化された負荷分散装置は、ハードウェア負荷分散装置の使用に関連したいくつかの問題に対応することになるが、分散化された負荷分散装置は、最適状態に及ばない傾向があり、分散化された負荷分散装置は、企業システムの大域的視点を有しておらず、各負荷分散装置は、典型的にはコンシューマ及びプロデューサシステムの定義されたサブセットに対応することに限定されるからである。
【０００９】
本開示では、１組のリースエージェントを利用して複数のコンシューマシステムからのサービス要求を複数のプロデューサシステム間で割り当てるシステム及びプロセスの実施形態を説明する。リースエージェントは、ほとんどの場合、複数のプロデューサシステム全体を認識しながら、プロデューサシステムのサブセットへのアクセス又はリースをモニタ及び割り当てることができる。更に、各サービス要求については、単一のコンシューマシステムが、いくつかのリースエージェント、場合によっては、複数のプロデューサシステムとやりとりすることができる。この１組のリースエージェントは、ある特定の実施形態において、負荷分散のプロセスを１組の分離されたハードウェアベースのシステム間で分散することができ、各リースエージェントは、プロデューサシステムのサブセットについて負荷分散を行うという点においてアマルガム負荷分散装置の役目をすることができる。
【００１０】
有利なことに、ある特定の実施形態において、少なくとも各プロデューサシステムに関する情報のサブセットを各リースエージェントにて維持しながらプロデューサシステムをリースエージェント間で分割することによって、ハードウェア負荷分散装置及び分散化された負荷分散装置の利点を前述の欠点なしで達成することができる。更に、ある特定の実施形態において、コンシューマシステムを特定のリースエージェント及び／又はプロデューサシステムに割り当てないことによって、複数のプロデューサシステムの各々によって処理される負荷は、プロデューサシステムを隔離されたサブシステムに分離するシステムと比較して経時的により分散された状態とすることができる。
【００１１】
場合によっては、プロデューサシステム及び／又はコンシューマシステム上に実装されるシステム及びアプリケーションは、リースエージェントと共に機能するように改変される。例えば、以下で更に説明するように、コンシューマシステムは、プロデューサシステムへのアクセスをリースし、かつ、プロデューサシステムの現状情報を維持するように改変され得る。
【００１２】
いくつかの実施形態において、本開示のシステム及び方法は、コンシューマ仮想マシン及びプロデューサ仮想マシンをホスティングすることができる１組のコンピューティングホストの上で実装される１つ以上のオーバーレイネットワークと共に使用することができる。有利なことに、ある特定の実施形態において、本開示のシステム及び方法は、コンシューマホスト及びプロデューサホストのネットワーキングインフラストラクチャ内で実行することができ、その結果、リースプロセスをコンシューマ及び／又はプロデューサ仮想マシンからの関与なしに行うことができる。
【００１３】
本開示の実施形態がオーバーレイネットワークにおいて実施されるとき、プロデューサシステムをリースエージェント間で分割する代わりに、各オーバーレイネットワークに関連したプロデューサ仮想マシンをリースエージェント間で別々に分割することができる。更に、コンシューマ仮想マシンにプロデューサ仮想マシンをリースするとき、リースエージェントは、リースが要求されているコンシューマ仮想マシンと同じオーバーレイネットワークに割り当てられたプロデューサ仮想マシンを選択することができる。
【００１４】
ネットワーク環境概要
図１Ａは、プロデューサシステム１０６Ａ〜Ｄによってホスティングされたサービスへのアクセスをコンシューマシステム１０４Ａ〜Ｃに提供するネットワーク環境１００の実施形態を例示する。一般的に、ネットワーク環境１００は、単一のデータセンタを表す。しかしながら、場合によっては、ネットワーク環境１００のシステムは、複数のデータセンタ間で分散され得る。
【００１５】
ネットワーク環境１００は、（「プロデューサシステム１０６」として本明細書において単数形で参照され得るか、又は、「プロデューサシステム１０６類」として複数形とすることができる）いくつかのプロデューサシステム１０６Ａ〜Ｄと、（「コンシューマシステム１０４」として本明細書において単数形で参照され得るか、又は、「コンシューマシステム類１０４」として複数形とすることができる）コンシューマシステム１０４Ａ〜Ｃを含むことができる。４つのプロデューサシステム１０６及び３つのコンシューマシステム１０４が例示されているが、ネットワーク環境１００は、任意の数のプロデューサシステム１０６及びコンシューマシステム１０４を含むことができる。更に、ネットワーク環境１００は、１つ以上のデータセンタを表すと上で記載したが、いくつかの実施形態において、少なくとも、コンシューマシステム１０４のいくつかはデータセンタから独立し得る。例えば、いくつかの実施形態において、ネットワーク環境１００は、特定の事業体又は組織に関連し得る。そのような実施形態において、コンシューマシステム１０４の少なくとも一部は、ネットワーク環境１００と通信することができるが、ネットワーク環境１００に関連したシステムの残りではなく個々の又は別個の事業体の制御下であり得るユーザ又は顧客コンピューティングシステムを表し得る。
【００１６】
一般的に、プロデューサシステム１０６の各々は、サービス及び／又はコンピュータリソースをコンシューマシステム１０４に提供することができる。場合によっては、プロデューサシステム１０６は、各々、同じサービス及び／又はリソースをコンシューマシステム１０４に提供することができ得る。他の場合において、プロデューサシステム１０６の少なくとも一部は、プロデューサシステム１０６の他と異なるサービス及び／又はリソースを提供することができ得る。プロデューサシステム１０６によって提供されるこれらのサービス及び／又はリソースとしては、任意の形式のサービス及び／又は計算リソースを挙げることができる。例えば、サービス及びコンピュータリソースとしては、データストレージアクセス、外部ネットワークアクセス（例えば、インターネットへのアクセス）、内部リソースアクセス（例えば、ネットワーク環境１００と同じ事業体によって管理されるデータベースへのアクセス）、カタログサービスへのアクセス、ディレクトリサービスへのアクセス、アプリケーションへのアクセス、（例えば、コマンド又は要求の分散処理に関する）情報処理サービスへのアクセス、ルーティングサービス（例えば、ネットワークルーティングサービス）などを挙げることができる。論じる内容を簡素化するために、本開示のこれ以降では、本明細書で普通の意味を有する「サービス」という用語に加えて、プロデューサシステム１０６により又は該システムを介して提供され得るサービス、コンピュータリソース、又は、任意の他のリソースを指すために「サービス」という用語を使用することとする。
【００１７】
プロデューサシステム１０６としては、任意の形式のコンピューティングシステムを挙げることができる。例えば、プロデューサシステム１０６としては、クライアントシステム、サーバ（例えば、アプリケーションサーバ、ウェブサーバ、など）、ラップトップ、デスクトップ、データベースシステム、バックアップシステム、ディレクトリシステム、重複排除システム、ストレージシステムなどを挙げることができる。同様に、コンシューマシステム１０４としては、任意の形式のコンピューティングシステムを挙げることができる。例えば、コンシューマシステム１０４としては、クライアントシステム、サーバ、ラップトップ、デスクトップ、タブレット、携帯電話、ゲーム機、テレビなどを挙げることができる。いくつかの実施形態において、コンシューマシステム１０４は、また、プロデューサシステムの役目をすることができ、逆もまた同じである。例えば、１つのコンシューマシステム１０４は、データを取得するためにプロデューサシステム１０６（例えば、データベースシステム、又は、ストレージシステムの役目をするプロデューサシステム）にアクセスすることができる。例えば、同じコンシューマシステム１０４は、また、別のコンシューマシステム１０４へのアプリケーションアクセスを提供することによってプロデューサシステムの役目をし得る。場合によっては、コンシューマシステム１０４及びプロデューサシステム１０６は、それぞれ、クライアント及びサーバシステムと考えることができる。しかしながら、先に論じたように、コンシューマシステム１０４及びプロデューサシステム１０６は、そのようなものと限定されるものではない。
【００１８】
コンシューマシステム１０４がプロデューサシステム１０６によって提供されるサービスへのアクセスを望むか又は必要とするたびに、コンシューマシステム１０４は、（「リースエージェント１０２」として本明細書において単数形で参照され得るか、又は、「リースエージェント類１０２」として複数形とすることができる）１つ以上のリースエージェント１０２Ａ〜１０２Ｄにアクセスして、サービスを提供することができるプロデューサシステム１０６へのアクセスを要求することができる。一般的に、コンシューマシステム１０４は、サービス要求を遂行するためにアクセスするべきプロデューサシステム１０６の識別情報を取得するためにリースエージェント１０２の何らかのサブセットにアクセスする。リースエージェント１０２のサブセットは、利用可能なリースエージェント１０２からランダムに選択することができ、利用可能なリースエージェント１０２のいくつかを含む。例えば、プロデューサシステム１０６にアクセスする要求は、図１Ａに例示する４つの利用可能なリースエージェントのうちの３つに提供され得る。しかしながら、場合によっては、コンシューマシステム１０４は、特定のリースエージェント１０２に割り当てられ得る。更に、場合によっては、コンシューマシステム１０４は、プロデューサシステム１０６にアクセスする要求を単一のリースエージェント１０２、又は、ネットワーク環境１００内の各既存のリースエージェント１０２に提供し得る。
【００１９】
図１Ａは、リースエージェント１０２、コンシューマシステム１０４、プロデューサシステム１０６間の通信の一実施例を例示する。図１Ａでわかるように、コンシューマシステム１０４の各々は、４つの利用可能なリースエージェント１０２のうちの３つと通信する。破線の矢印によって示すように、この通信は、例えば、プロデューサシステム１０６によって提供されるサービスにアクセスする要求及び／又はプロデューサシステム１０６にアクセスする要求に関係する制御情報を含む制御情報を含み得る。更に、コンシューマシステム１０４をプロデューサシステム１０６のサブセットに接続する実線矢印によって示すように、通信は、コンシューマ１０４によるサービス要求に対応するプロデューサシステム１０６に関係するデータを含むことができる。更に、リースエージェント１０２は、リースエージェント１０２間で通信して、例えば、リースエージェント１０２及び／又はプロデューサシステム１０６に関係する現状情報を提供し得る。図１Ａのネットワーク環境１００の様々なシステムの間の例示する相互通信は、コンシューマシステム１０４と、プロデューサシステム１０６と、リースエージェント１０２との間の通信の一実施例にすぎず、制限的であることを意図したものではないことに注意されたい。ネットワーク環境１００の様々なシステム間の通信を、図３〜１０に関して本明細書で説明するプロセスに関して更に詳細に説明する。
【００２０】
図１Ｂは、プロデューサシステム１０６によってホスティングされるサービスへのアクセスをコンシューマシステム１０４に提供し、かつ、プロデューサシステム健康情報を１つ以上のリースエージェント１０２に提供するネットワーク環境１００の実施形態を例示する。図１Ｂに例示するように、場合によっては、データをプロデューサシステム１０６からコンシューマシステム１０４に、及び、コンシューマシステム１０４からプロデューサシステム１０６双方に提供することができる。換言すると、場合によっては、データ通信は、双方向性であり得る。
【００２１】
更に、プロデューサシステム１０６は、健康情報をリースエージェント１０２に提供することができ、その結果、リースエージェント１０２が、どのプロデューサシステム１０６が機能しているか、及び、どのプロデューサシステム１０６がコンシューマシステム１０４に割り当てるために利用可能なリソースを有するか追跡することができる。場合によっては、プロデューサシステム１０６は、予定された時間にて健康情報を提供することができる。他の場合において、リースエージェント１０２は、プロデューサシステム１０６に健康情報を要求するか、又は、健康情報がないかプロデューサシステム１０６にｐｉｎｇを送ることができる。多くの場合、各プロデューサシステム１０６は、プロデューサシステム１０６Ａ〜１０６Ｃによって例示するように、単一のリースエージェント１０２に割り当てられる。しかしながら、いくつかの実施形態において、プロデューサシステム１０６は、プロデューサシステム１０６Ｄの場合のように、複数のリースエージェント１０２に割り当てられ得る。
【００２２】
図１Ａ及び１Ｂは異なるデータチャネル及び制御チャネルを例示するが、図１Ａ及び１Ｂに例示するデータチャネル及び制御チャネルの一部又は全部を実施することがネットワーク環境１００可能である。したがって、図１Ｂはコンシューマシステム１０４とリースエージェント１０２との間のチャネルを例示しないが、典型的には、制御チャネルが、図１Ａに例示するようなコンシューマシステム１０４とリースエージェント１０２との間に存在する。更に、チャネルの一部又は全部は、一方向性であり得、一方のシステムがデータ又は制御情報を要求し、他方のシステムがデータ又は制御情報を提供する。あるいは又は更に、チャネルの一部又は全部は、双方向性であり得、通信中の２つのシステムが、データ又は制御情報を要求し、かつ、データ又は制御情報を提供し得る。
【００２３】
図２は、プロデューサシステム１０６によってホスティングされたサービスへのアクセスをコンシューマシステム１０４に提供するネットワーク環境１００の実施形態の代替図を例示する。図２に例示するように、ネットワーク環境１００のシステムの各々は、ネットワーク２０２を介して互いと通信することができる。ネットワーク２０２は、任意の形式の有線ネットワーク又は無線ネットワーク及びその組み合わせを含むことができる。例えば、ネットワーク２０２としては、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、セルラーネットワーク、イサーネットベースのネットワーク、ＷｉＦｉネットワーク、ＷｉＬＡＮネットワークなどを挙げることができる。更に、場合によっては、ネットワーク２０２としては、インターネットを挙げることができる。
【００２４】
図２に例示するように、図１Ａで説明したシステムの各々は、ハードウェア又はソフトウェアにおいて実装され得るいくつかのサブシステムを含み得る。例えば、コンシューマシステム１０４は、リースリクエスタ２４０と、現状モジュール２４２と、接続モジュール２４４と、リソースリクエスタ２４６とを含み得る。リースリクエスタ２４０は、１つ以上のプロデューサシステム１０６のリースを１つ以上のリースエージェント１０２に要求するように構成され得る。場合によっては、リースリクエスタ２４０は、特定的にプロデューサシステム１０６へのアクセスを要求し得る。他の場合において、リースリクエスタ２４０は、プロデューサシステム１０６へのアクセスを明示的に要求することを伴い、又は伴わずに、サービスへのアクセスを要求し得る。
【００２５】
リースリクエスタ２４０が１つ以上のプロデューサシステム１０６の識別情報を取得すると、接続モジュール２４４は、リースエージェント１０２によって識別されたプロデューサシステム１０６の一部又は全部との通信を確立しようとすることができる。プロデューサシステム１０６との接続が確立された後、リソースリクエスタ２４６は、リソース又はサービスを、コンシューマシステム１０４が接続を失敗せずに確立したプロデューサシステム１０６に要求することができる。
【００２６】
現状モジュール２４２は、プロデューサシステム１０６に関係する現状情報を取得することができる。この情報は、その後、プロデューサシステム１０６へのアクセスに備えてコンシューマシステム１０４からの要求に応答してプロデューサシステムへのアクセスに備えてリースエージェント１０２を促進するためにリースエージェントに提供することができる。この情報は、リースエージェント１０２の対応する現状モジュール２２８に供給され得る。場合によっては、現状モジュール２４２は、プロデューサシステム１０６との接続の確立の成功又は失敗に基づいて現状情報を取得する。他の場合において、現状情報は、プロデューサシステム１０６及び／又はプロデューサシステム１０６の一部として含まれる対応する現状モジュール２６２に問い合わせることによって取得される。現状情報は、プロデューサシステム１０６との接続及び／又はプロデューサシステム１０６によるサービスのプロビジョニングに関する任意の情報を含み得る。例えば、現状情報は、コンシューマシステム１０４とプロデューサシステム１０６との間の通信の確立の成功又は失敗に関係する情報を含み得る。別の実施例として、現状情報は、所与の期間中にプロデューサシステム１０６にアクセスするコンシューマシステム１０４の数を含み得る。更なる実施例としては、プロデューサシステム１０６の応答性、プロデューサシステム１０６の能力、プロデューサシステムなどにて利用可能であるリソースに関係する情報を挙げることができる。
【００２７】
図２に例示するように、プロデューサシステム１０６は、登録モジュール２６０と、現状モジュール２６２とを含み得る。先述のように、現状モジュール２６２は、プロデューサシステム１０６に関係する現状情報をプロデューサシステム１０６に関係する現状情報を要求するコンシューマシステム１０４に提供し得る。更に、場合によっては、現状モジュール２６２は、独自に、又は、リースエージェント１０２からの要求に応答して現状情報をリースエージェント１０２に提供し得る。
【００２８】
登録モジュール２６０は、プロデューサシステム１０６をリースエージェント１０２に登録するように構成される。ある特定の実施形態において、登録モジュール２６０は、プロデューサシステム１０６が最初に起動されたときに、プロデューサシステム１０６を初期化ルーチンの一部として自動的に登録し得る。他の実施形態において、登録モジュール２６０は、ユーザ又はアプリケーションからのコマンドに応答してプロデューサシステム１０６を登録し得る。場合によっては、登録モジュール２６０は、プロデューサシステム１０６が割り当てられたリースエージェントがもはや利用可能ではないと判定したときにプロデューサシステム１０６を再登録し得る。
【００２９】
先述のように、リースエージェント１０２は、また、現状モジュール２２８を含み得る。現状２２８モジュールは、プロデューサシステム１０６の現状に関して、コンシューマシステム１０４及びプロデューサシステム１０６の一方又は両方から現状情報を受信することができる。更に、現状モジュール２２８は、プロデューサシステム１０６に関連した現状情報を別のリースエージェント１０２に提供し得る。更に、場合によっては、現状モジュール２２８は、現状情報を他のリースエージェント１０２に要求することによって、他のリースエージェント１０２の健康チェックを実行し得る。例えば、現状モジュール２２８は、健康チェック要求がリースエージェント１０２によって答えられるかどうかに基づいて、リースエージェント１０２がもはや利用可能ではないかどうか判定し得る。場合によっては、現状モジュール２２８は、現状情報をプロデューサシステム１０６に要求することによってプロデューサシステム１０６の健康チェックを実行することができる。
【００３０】
現状モジュール２２８に加えて、リースエージェント１０２は、プロデューサリポジトリ２２０と、分割システム２２２と、リースシステム２２４と、登録モジュール２２６とを含むことができる。プロデューサリポジトリ２２０は、プロデューサシステム１０６に関係する情報を記憶する任意の形式のデータベース、リポジトリ、又は記憶装置を含むことができる。例えば、プロデューサリポジトリ２２０は、プロデューサシステム１０６に関連した現状情報と、プロデューサシステム１０６の識別情報と、リースエージェント１０２間のプロデューサシステム１０６の割当て又はパーティションに関係する情報とを含むことができる。いくつかの実施形態において、プロデューサリポジトリ２２０にて記憶された情報の一部又は全部は、プロデューサリポジトリ２２０の代わりに、又は、プロデューサリポジトリ２２０に加えてエージェントリポジトリ２０６にて記憶され得る。
【００３１】
分割システム２２２は、利用可能なプロデューサシステム１０６をネットワーク環境１００のリースエージェント１０２間で分割することができる任意のシステムを含むことができる。一般的に、分割システム２２２は、利用可能なプロデューサシステム１０６を利用可能なプロデューサシステム１０６を重なり合わないか又は非等価のサブセットに分割して、その後、１つのサブセットを各リースエージェント１０２に割り当てる。したがって、４つのリースエージェント１０２がある場合、プロデューサシステム１０６は、１つのサブセットは、各リースエージェント１０２に関連する４つのサブセットに分割され得る。しかしながら、場合によっては、サブセットは重なり合い得る。そのような場合、プロデューサシステム１０６は、複数のリースエージェント１０２に割り当てられ得るか、又は、複数のリースエージェント１０２と関連づけられ得る。リースエージェント１０２間でプロデューサシステム１０６を分割するプロセスは、ネットワーク環境１００が最初に初期化されるときに発生し得る。更に、プロセスは、定期的に再発生し得る。例えば、プロデューサシステム１０６を分割するプロセスは、利用可能なプロデューサシステム１０６の追加を介してであるか、削除を介してであるかどうかにかかわらず、利用可能なプロデューサシステム１０６の数の変化があるたびに、又は、利用可能なプロデューサシステム１０６における閾値変化があるときに発生し得る。
【００３２】
コンシューマシステム１０４がプロデューサシステム１０６へのアクセスをリースエージェント１０２に要求するたびに、リースシステム２２４は、例えば、プロデューサシステム１０６の場所（プロデューサシステム１０６（例えば、地理学上の場所、データセンタ、サーバラック、など）に関連した現状情報、及び、プロデューサシステム１０６がコンシューマシステム１０４がアクセスに求めているリソースにアクセスできるかどうかを含むいくつかの要素に基づいてコンシューマシステム１０４にリースするべきプロデューサシステム１０６を識別することができる。リースシステム２２４がプロデューサシステムを識別すると、リースシステム２２４は、プロデューサシステム１０６の識別情報を要求しているコンシューマシステム１０４に提供することができる。更に、場合によっては、リースシステム２２４は、コンシューマシステム１０４がプロデューサシステム１０６にアクセスするように許可されるリース時間をコンシューマシステム１０４に提供し得る。あるいは又は更に、リースシステム２２４は、多量の何らかの他の消費可能なリソース又はメトリックをコンシューマシステム１０４に提供し得る。例えば、消費可能なリソースは、計算サイクル、金、ディスク記憶装置、接続要求などである可能性がある。
【００３３】
登録モジュール２２６は、プロデューサシステム１０６の登録モジュール２６０の相手側の役目をし得る。リースエージェント１０２に登録する要求をプロデューサシステム１０６から受け取ると、リースエージェント１０２の登録モジュール２６０は、プロデューサシステム１０６がリースエージェント１０２に割り当てられているかどうか判定し得る。割り当てられている場合、登録モジュール２２６は、プロデューサシステム１０６を登録することができ、これは、プロデューサシステム１０６の利用可能性現状、ならびに、例えば、プロデューサリポジトリ２２０でのプロデューサシステム１０６に関連した現状情報を記憶することを含み得る。他方、登録モジュール２２６が、プロデューサシステム１０６がリースエージェント１０２に割り当てられていないと判定した場合、登録モジュール２２６は、プロデューサシステム１０６に割り当てられている別のリースエージェント１０２を識別することができ、かつ、プロデューサシステム１０６に割り当てられるリースエージェント１０２の識別情報をプロデューサシステム１０６に知らせることができる。
【００３４】
ある特定の実施形態において、ネットワーク環境１００は、エージェントリポジトリ２０６及び／又は分割システム２０４を含み得る。エージェントリポジトリ２０６は、ネットワーク環境１００内に含まれたリースエージェント１０２及び／又はプロデューサシステム１０６に関する情報を含み得る。エージェントリポジトリ２０６内に記憶された情報は、リースエージェント１０２、コンシューマシステム１０４、及びプロデューサシステム１０６のうちの１つ以上によって使用され得る。例えば、場合によっては、リースエージェント１０２は、エージェントリポジトリ２０６を使用して、ネットワーク環境１００のプロデューサシステム１０６の数及び／又は識別情報を判定し得る。この情報を使用して、リースエージェント１０２は、プロデューサシステム１０６を分割する方法を判定することができる。場合によっては、コンシューマシステム１０４は、エージェントリポジトリ２０６を使用して、コンシューマシステム１０４によるアクセスのためにプロデューサシステム１０６がリースエージェント１０２によって識別された後にどこにプロデューサシステム１０６が位置するか判定し得る。エージェントリポジトリ２０６を使用することの別の実施例として、場合によっては、プロデューサシステム１０６はエージェントリポジトリにアクセスして、例えば、プロデューサシステム１０６が最初に起動されると、アクセスするべきリースエージェント１０２の識別情報を判定し得る。
【００３５】
いくつかの実施形態において、分割システム２０４は、リースエージェント１０２間でプロデューサシステム１０６を分割するプロセスを実行し得る。そのような実施形態において、リースエージェント１０２は、それ自体分割システム２２２を含まない場合がある。
【００３６】
いくつかの実施形態において、図２の例示するシステムに含まれるモジュールのうちの少なくとも一部は、システムによって提供されるアプリケーション及び／又はリソースと一体化され得る。例えば、プロデューサシステム１０６の現状モジュール２６２は、プロデューサシステム１０６によって提供されるアプリケーション及び／又はリソースと一体化され得る。同様に、現状モジュール２４２は、コンシューマシステム１０４によってホスティングされるアプリケーション又はサービスと一体化され得る。
【００３７】
プロデューサシステムにおけるサービスにアクセするための例示的なプロセス
図３は、プロデューサシステム１０６でのサービスにアクセスするプロセス３００の実施形態を例示する。プロセス３００は、リースエージェント１０２からプロデューサシステム１０６にアクセスするリース又は一時的な認可を取得することによって、プロデューサシステム１０６でのサービス又はコンピュータリソースにアクセスすることができる任意のシステムによって実施することができる。例えば、プロセス３００は、全体的に又は部分的に、少し例を挙げれば、コンシューマシステム１０４、リースリクエスタ２４０、接続モジュール２４４、リソースリクエスタ２４６、及び現状モジュール２４２によって実施することができる。任意の数のシステムが、全体的に又は部分的にプロセス３００を実行することができるが、論じる内容を簡素化するために、プロセス３００の各部を特定のシステムを参照して説明する。
【００３８】
プロセス３００は、ブロック３０２にて始まり、例えば、リースリクエスタ２４０は、プロデューサシステム１０６へのアクセスのリース要求を生成する。場合によっては、リース要求は、コンシューマシステム１０４上のコンシューマシステム１０４又はアプリケーションのユーザがアクセスすることを望むコンピュータリソース又はサービスの識別情報を含み得る。他の場合において、リース要求は、コンシューマシステム１０４によりアクセスされるべきプロデューサシステム１０６でのサービスを指定することなくプロデューサシステム１０６にアクセスする要求を含む。
【００３９】
ブロック３０４にて、リースリクエスタ２４０は、リース要求をネットワーク環境１００内に含まれたリースエージェント１０２のサブセットに提供する。場合によっては、リースリクエスタ２４０は、リース要求を一部又は全部の利用可能なリースエージェント１０２に提供し得る。リースリクエスタ２４０は、ネットワーク環境１００の各リースエージェント１０２の識別情報を含み得るエージェントリポジトリ２０６にアクセスすることによって利用可能なリースエージェント１０２を識別し得る。他の場合において、コンシューマシステム１０４は、各々、初期化又は起動で、又は、コンシューマシステム１０４の動作中の任意の他の時間にて、リースエージェント１０２の識別情報で構成し得る。例えば、ユーザ（例えば、管理者）は、リースエージェント１０２の識別情報をコンシューマシステム１０４に提供し得る。リースエージェント１０２の識別は、リースエージェント１０２の名前、リースエージェント１０２のアドレス（例えば、インターネットプロトコル（ＩＰ）アドレス又は他のネットワークアドレス），及び／又は、ネットワーク環境１００内のリースエージェント１０２を識別するために使用することができる任意の他の情報を含むことができる。いくつかの実施形態において、リースエージェント１０２にリース要求を提供することは、リースエージェント１０２に、コンシューマシステム１０４が以前にやりとりしている１つ以上のプロデューサシステム１０６に関連した現状情報を提供することを含むことができる。
【００４０】
ブロック３０６にて、コンシューマシステム１０４は、プロデューサシステム１０６の識別表示をブロック３０４にてリース要求を提供されたリースエージェント１０２のサブセットの各々から受信する。場合によっては、コンシューマシステム１０４は、プロデューサシステム１０６の識別表示をリースエージェント１０２のサブセットの一部から受信する。例えば、コンシューマシステム１０４は、プロデューサシステム１０６の識別表示を１つか、２つのリースエージェント１０２、又は、リースエージェント１０２のサブセット全体から受信し得る。コンシューマシステム１０４がいずれのプロデューサシステム１０６の識別情報も受信しない場合、プロセス３００は終了し得、ブロック３０２及び／又は３０４に関連した動作が繰り返され得、及び／又は、ユーザ（例えば、管理者）に警告が発せられ得る。場合によっては、プロデューサシステム１０６の識別表示を受信することは、コンシューマシステム１０４がプロデューサシステム１０６にアクセスするか、又は、プロデューサシステム１０６へのアクセスをリースするように許可される時間の長さを受信することを含む。リースエージェント１０２のサブセットの各リースエージェント１０２は、単一のプロデューサシステム１０６の識別情報を提供することができる。しかしながら、場合によっては、リースエージェントのサブセットのリースエージェント１０２の各々は、複数のプロデューサシステム１０６の識別情報を提供し得る。リースエージェント１０２の識別情報の場合と同様に、プロデューサシステム１０６の識別情報は、コンシューマシステム１０４に対してプロデューサシステム１０６を識別するか、又は、プロデューサシステム１０６にアクセスする方法を提供する任意の情報を含むことができる。例えば、プロデューサシステム１０６の識別情報は、例えば、エージェントリポジトリ２０６にて記憶されるテーブル又はデータ構造においてプロデューサシステム１０６の場所を特定するために使用することができる名前、アドレス（例えば、ＩＰアドレス）、又は識別子を含むことができる。
【００４１】
場合によっては、ブロック３０６は、リースエージェント１０２のサブセットの各々によって識別されたプロデューサシステム１０６について現状情報を受信することを含み得る。この現状情報は、コンシューマシステム１０４がどのプロデューサシステム１０６にアクセスするべきかを判定する一助になるように使用され得る。場合によっては、現状情報は、プロデューサシステム１０６と通信するリースエージェント１０２によって取得され得る。あるいは又は更に、現状情報は、以前プロデューサシステム１０６と通信したコンシューマシステム１０４から取得され得る。受信された現状情報は、リースエージェント１０２が利用可能な現状情報の独立したセット又はサブセットを含み得る。場合によっては、受信された現状情報は、リースエージェント１０２が利用可能な現状情報と交差する場合もあれば、交差しない場合もある。
【００４２】
接続モジュール２４４は、ブロック３０８にて、ブロック３０６にて識別されたプロデューサシステム１０６の各々との接続を開始しようとする。場合によっては、接続モジュール２４４は、ブロック３０６にて識別されたプロデューサシステム１０６のサブセットとの接続を開始しようとし得る。接続を開始しようとすることは、プロデューサシステム１０６との通信チャネルを開成しようとする任意のプロセスを含むことができる。例えば、接続を開始しようとすることは、接続要求パケットをプロデューサシステム１０６に送ることを含むことができる。一般的に、接続モジュール２４４は、コンシューマシステム１０４がプロデューサシステム１０６の識別情報を受信したときにプロデューサシステム１０６との接続を確立しようとし得る。例えば、リースエージェント１０２はコンシューマシステム１０４と異なる距離に位置し得るか、又は、異なる負荷を有し得るためにコンシューマシステム１０４が複数のリースエージェント１０２から同時に応答を受信する場合はめったにないので、接続モジュール２４４は、複数のプロデューサシステム１０６との接続を同時に開始する場合はめったにない。その代わりに、プロデューサシステム１０６との接続を開始する試みは、小さい度合いであっても、ずらして行われ得る。しかしながら、いくつかの実施形態において、接続モジュール２４４は、同時に複数のプロデューサシステム１０６との接続を開始しようとし得る。例えば、場合によっては、コンシューマモジュール１０４は、リースエージェント１０２のサブセットの各々が応答するまで待つ場合があるか、又は、状況によっては、応答は、複数のリースエージェント１０２から同時に受信され得る。
【００４３】
ブロック３１０にて、リソースリクエスタ２４６は、接続モジュール２４４が失敗せずに接続を確立する 第１のプロデューサシステム１０６のサービス又はコンピュータリソースにアクセスするか、又は、該にサービス又はコンピュータリソースへのアクセスを要求する。場合によっては、プロデューサシステム１０６との接続を失敗せずに確立することは、確認応答（「ａｃｋ」）パケットなどをプロデューサシステム１０６から受信することを含むことができる。ブロック３０８に関して先述のような類似した理由で、プロデューサシステム１０６との接続は、ずらして確立され得る。しかしながら、接続モジュール２４４が同時に又は実質的に同時にて１つ超のプロデューサシステム１０６との接続を確かに失敗せずに確立する場合において、リソースリクエスタ２４６は、サービスへのアクセスを要求するべきプロデューサシステム１０６をランダムに選択することができる。あるいは、リソースリクエスタ２４６は、選択アルゴリズムを使用してどのプロデューサシステム１０６にサービスを要求するべきか判定することができる。選択アルゴリズムは、制限されず、例えば、ラウンドロビン、最小時間未参照（ＬＲＵ）、又は、任意の他の形式の選択アルゴリズムを含むことができる。いくつかの実施形態において、コンシューマシステム１０４は、コミュニケーション接続又は通信チャネルが確立されたプロデューサシステム１０６の一部又は全部のサービスへのアクセスを要求し得る。場合によっては、サービスは、同じ形式であり得る。他の場合において、コンシューマシステム１０４は、各プロデューサシステム１０６の異なるサービスへのアクセスを要求し得る。
【００４４】
更に、コンシューマシステム１０４が特定の時点にて要求するより多くのプロデューサシステムで接続が失敗せずに確立される場合において、コンシューマシステム１０４は、１つ以上の更なるプロデューサシステム１０６へのリースを放棄し得る。あるいは、コンシューマシステム１０４は、更なるプロデューサシステム１０６へのリースをリースプールに維持して、更なるプロデューサシステム１０６との接続を維持し得る。そのような場合、更なるプロデューサシステム１０６とのリース期間中に何らかの時間にてコンシューマシステム１０４が更なるサービスへのアクセスを必要とする場合、コンシューマシステム１０４は、リースがリースプール内に維持された更なるプロデューサシステム１０６の１つのサービスを利用することができる。
【００４５】
ブロック３１２にて、現状モジュール２４２は、現状メタデータを第１の接続されたプロデューサシステム１０６から受信する。場合によっては、現状モジュール２４２は、現状メタデータを、接続モジュール２４４が失敗せずに通信チャネルを確立する各プロデューサシステム１０６から受信し得る。更に、現状モジュール２４２は、現状メタデータを、接続モジュール２４４が通信チャネルを確立することができなかったプロデューサシステム１０６から取得し得る。例えば、接続モジュール２４４が特定のプロデューサシステム１０６で通信チャネルを確立することができなかったという事実が、プロデューサシステム１０６に関連した現状メタデータとして含まれ得る。現状メタデータは、制限されず、プロデューサシステム１０６との接続を確立することに関係する情報、プロデューサシステム１０６との接続を維持することに関係する情報、プロデューサシステム１０６の応答性に関係する情報、及び、プロデューサシステム１０６にて利用可能であるサービスに関係する情報を挙げることができる。例えば、現状メタデータとしては、プロデューサシステム１０６に接続する際に経過した時間量、プロデューサシステム１０６との接続における待ち時間、プロデューサシステム１０６での利用可能な処理リソース、要求が（例えば、失われたパケットのために）プロデューサシステム１０６に再送されなければならない回数、及び、プロデューサシステム１０６の現状と関連づけることができる任意の他の形式のデータを挙げることができる。
【００４６】
いくつかの実施形態において、ブロック３１２は、ブロック３１０の前に実行され得る。そのような場合、現状モジュール２４２は、現状情報を各々の接続されたプロデューサシステム１０６から受信し得る。そのような場合のコンシューマシステム１０４は、受信された現状情報に基づいてサービスにアクセスするべきプロデューサシステム１０６を選択することができる。
【００４７】
決定ブロック３１４にて、例えば、リソースリクエスタ２４６を使用するコンシューマシステム１０４は、別のサービスへのアクセスが望まれるかどうか判定する。この他のサービスは、異なるサービスである場合があれば、又は、同じ形式のサービスである場合がある。例えば、場合によっては、１つのサービスは、ネットワークアプリケーションにアクセスするためのものであり得、別のサービスは、ダウンロードネットワークリソース（例えば、ウェブページなど、ネットワークページによってホスティングされた画像又は映像）のためのものであり得る。あるいは、両方のサービスが、ネットワークリソースをダウンロードするのに使用され得る。例えば、ユーザは、２つのネットワークページ又はリソースを２つのネットワークページからダウンロードし得る。そうである場合、接続モジュール２４４は、ブロック３０８にて識別されたプロデューサシステム１０６との接続を開始する。場合によっては、接続モジュール２４４は、コンシューマシステム２４４に関連したリースプールにおいて識別されたプロデューサシステム１０６との接続を開始する。リースプールは、リソースへのアクセスを提供するコンシューマシステム１０４に目下リースされているプロデューサシステム１０６の識別情報を含むことができる。場合によっては、リースプールは、コンシューマシステム１０４にリースされているが、コンシューマシステム１０４が目下アクセスしていないプロデューサシステム１０６を含む。リースプールが一切のリースを含まない場合、コンシューマシステム１０４は、例えば、リースリクエスタ２４０を使用して再びプロセス３００を実行し得る。いくつかの実施形態において、決定ブロック３１４は、随意的である。例えば、プロデューサシステム１０６がコンシューマシステム１０４にリースされない場合、プロセス３００は、ブロック３０２で始まって繰り返され得る。
【００４８】
いくつかの実施形態において、プロセス３００は、プロデューサシステム１０６に以前のリースを更新するのに使用することができる。そのような場合、ブロック３０２にて生成されたリース要求は、コンシューマシステム１０４が以前にアクセスしたプロデューサシステム１０６の識別情報を含むことができる。更に、リース要求は、要求が更新要求であるという表示を含むことができる。更新リース要求は、その後、コンシューマシステム１０４に対してプロデューサシステム１０６を最初に識別したリースエージェント１０２に提供することができる。リースエージェント１０２が、プロデューサシステム１０６がまだ利用可能であり及び／又はコンシューマシステム１０４にサービスを提供する能力を有すると判定すると想定して、リースエージェント１０２は、更新要求が承認されたことを表示することができ、かつ、ブロック３０６の一部としてコンシューマシステム１０４への更新リースの時間の長さを提供することができる。コンシューマシステム１０４が１つ以上の更なるプロデューサシステム１０６とのリースをリースプールにおいて維持し、リース期間が、コンシューマシステム１０４が更なるプロデューサシステム１０６でのサービスを利用することなく、更なるプロデューサシステム１０６について過ぎてしまう場合、コンシューマシステム１０４は、リースが、更なるプロデューサシステムに対応するリース更新要求１０６をリースエージェント１０２に送ることなく無効となることを可能にすることができる。
【００４９】
場合によっては、リース更新を要求するプロセスは、既存のリースの満了時に発生し得る。他の場合において、例えば、リソースリクエスタ２４６を使用するコンシューマシステム１０４は、１つ以上のプロデューサシステム１０６でのサービスにアクセスする既存のサービス要求がリース時間が満了する前に完了されない確率を判定し得る。確率が更新閾値を満たす場合、コンシューマシステム１０４は、既存のリースの満了前の何らかの時点にてプロデューサシステム１０６のリースの再開を要求し得、その結果、リース満了に起因するサービス停止が低減又は防止される。
【００５０】
ある特定の実施形態において、プロデューサシステム１０６へのリースアクセスは、プロデューサシステム１０６及び／又はリースエージェント１０２の１つ以上に関連した組織又は事業体への支払いを行うことを含み得る。例えば、プロデューサシステム１０６は、アクセス有料サービスの一部として提供され得る。あるいは、プロデューサシステム１０６へのリースアクセスは、いかなる種類の支払いも必要しない場合がある。そのような実施形態において、リースは、プロデューサシステムへのアクセスの一時的な性質１０６を指し、金融リースを指すのではない。
【００５１】
プロデューサシステムのリースをコンシューマシステムに提供する例示的なプロセス
図４は、プロデューサシステム１０６のリースをコンシューマシステム１０４に提供するプロセス４００の実施形態を例示する。プロセス４００は、プロデューサシステム１０６の識別情報をコンシューマシステム１０４に提供することができる任意のシステムによって実施することができる。更に、プロセス４００は、プロデューサシステム１０６へのアクセスをコンシューマシステム１０４にリースすることができる任意のシステムによって実施することができる。例えば、プロセス４００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、リースシステム２２４、及び現状モジュール２２８によって実施することができる。任意の数のシステムが全体的に又は部分的にプロセス４００を実施することができるが、論じる内容を簡素化するために、プロセス４００の各部を特定のシステムを参照して説明する。
【００５２】
プロセス４００は、ブロック４０２にて始まり、例えば、リースエージェント１０２のリースシステム２２４は、プロデューサシステム１０６へのアクセスをリースする要求をコンシューマシステム１０４から受信する。いくつかの実例において、要求は、コンシューマシステム１０４がプロデューサシステム１０６にてアクセスすることを求めている特定のサービス又は計算リソースの識別情報を含み得る。前の節で説明したように、場合によっては、リース要求は、プロデューサシステム１０６のコンシューマ１０４による既存のリースを更新する要求を含むことができる。
【００５３】
ブロック４０４にて、現状モジュール２２８は、１つ以上のプロデューサシステム１０６の現状メタデータをコンシューマシステム１０４から受信し得る。この受信された現状メタデータは、１つ以上のプロデューサシステム１０６のサービスと通信するか、又は、該サービスにアクセスするコンシューマシステムの１０４の以前の試みに関連したデータを含み得る。例えば、受信された現状メタデータは、待ち時間情報、プロデューサシステム１０６に対するコンシューマシステム１０４による要求の応答性に関係するデータ、又は、ブロック３１２に関して先述した任意の他の情報を含み得る。更に、受信された現状メタデータは、プロデューサシステム１０６から受信されたデータ、及び／又は、コンシューマシステム１０４がプロデューサシステム１０６とのやりとりに基づいて生成したデータ現状メタデータを含み得る。いくつかの実施形態において、ブロック４０４は、随意的であり得る。例えば、要求がコンシューマシステム１０４から受信された第１の要求である場合、コンシューマシステム１０４は、リースエージェント１０２に提供するべき一切の現状メタデータを有し得ない。
【００５４】
ブロック４０６にて、現状モジュール２２８は、ブロック４０４にて受信された現状メタデータに基づいてプロデューサシステム現状情報を更新する。場合によっては、プロデューサシステム現状情報を更新することは、プロデューサリポジトリ２２０内のプロデューサシステム１０６に関連したエントリを更新することを含み得る。いくつかの実施形態において、ブロック４０６は、随意的であり得る。
【００５５】
更に、ブロック４０８にて、現状モジュール２２８は、ブロック４０４にて受信された現状メタデータの少なくとも一部を第２のリースエージェントに提供する。例えば、プロセス４００を実行するリースエージェント１０２は、現状メタデータの一部は異なるリースエージェント１０２に割り当てられたプロデューサシステム１０６のものであると判定し得る。そのような場合、リースエージェント１０２は、現状情報をプロデューサシステム１０６に割り当てられているリースエージェント１０２に提供し得る。他の場合において、リースエージェント１０２は、現状メタデータをリースエージェント１０２が通信する全てのリースエージェント１０２に提供し得、該全てのリースエージェントは、ネットワーク環境１００のリースエージェント１０２の一部又は全部であり得る。任意の形式のデータ送信、再現及び／又は同期プロセスは、現状メタデータをリースエージェント１０２間で共有するためにネットワーク環境１００において実施され得る。例えば、フラッドフィルアルゴリズム、又は、Ｐｒｉｍアルゴリズムが、データをリースエージェント１０２間で共有するために使用され得る。本明細書で使用され得る、データをリースエージェント１０２間で共有する更なるシステム及び方法が、２０１０年１２月２８日出願の、「ＤＡＴＡ  ＲＥＰＬＩＣＡＴＩＯＮ  ＦＲＡＭＥＷＯＲＫ」という名称の米国特許出願第１２／９８０，１３３号と、２０１０年１２月２８日出願の、「ＤＡＴＡ  ＲＥＰＬＩＣＡＴＩＯＮ  ＦＲＡＭＥＷＯＲＫ」という名称の米国特許出願第１２／９８０，１５３号と、２０１０年１２月２８日出願の、「ＤＡＴＡ  ＲＥＰＬＩＣＡＴＩＯＮ  ＦＲＡＭＥＷＯＲＫ」という名称の米国特許出願第１２／９８０，１９３号と、２０１０年１２月２８日出願の、「ＤＡＴＡ  ＲＥＰＬＩＣＡＴＩＯＮ  ＦＲＡＭＥＷＯＲＫ」という名称の米国特許出願第１２／９８０，２５８号とで説明されている。これらの上述の出願の各々は、本明細書よりそれらの全体が組み入れられる。
【００５６】
いくつかの実施形態において、ブロック４０８は、随意的である。例えば、いくつかの実施形態において、コンシューマシステム１０４のみが、ブロック４０２にて要求を受信したリースエージェント１０２に割り当てられるプロデューサシステム１０６の現状メタデータをリースエージェント１０２に提供する。
【００５７】
ブロック４１０にて、リースシステム２２４は、リースエージェント１０２に配分されたか又は割り当てられた各プロデューサシステム１０６に関連したプロデューサ現状情報に基づいてプロデューサシステムを選択する。場合によっては、プロデューサ現状情報は、コンシューマシステム１０４によって提供された情報（例えば、ブロック４０４にて受信された現状メタデータ）に基づく。他の場合において、プロデューサ現状情報は、プロデューサシステム１０６と通信するリースエージェント１０２によって取得された情報に基づき得る。例えば、リースエージェント１０２は、リースエージェント１０２に割り当てられた各プロデューサシステム１０６の健康又は現状チェックを実行し得る。これらの健康チェックとしては、プロデューサシステム１０６の疎通を確認すること、リソース利用可能性の更新をプロデューサシステム１０６に要求すること、又は、プロデューサシステム１０６の現状に関係する情報を取得する任意の他のプロセスを挙げることができる。更に、プロデューサ現状情報は、他のリースエージェント１０２から受信された情報に基づき得る。
【００５８】
ある特定の実施形態において、プロデューサシステム１０６を選択することは、少なくとも部分的に、異なるプロデューサシステム１０６に関連した重みに基づき得る。これらの重みは、プロデューサ現状情報に基づいて生成され得る。例えば、プロデューサシステム１０６がコンシューマシステム１０４と通信するときに低い待ち時間及び低いエラー率を有することを示すプロデューサ現状情報は、プロデューサシステム１０６は、より高く重み付けされ、結果的にブロック４１０にて選択される可能性がより高いことになり得る。逆に、コンシューマシステム１０４との接続を中断することが多いプロデューサシステム１０６は、より低く重み付けされ、結果的にブロック４１０にて選択される可能性がより少なくあり得る。
【００５９】
場合によっては、プロデューサシステム１０６の選択は、コンシューマシステム１０４に関してプロデューサシステム１０６の場所など、任意の数の更なる要素に基づき得る。場所情報としては、例えば、プロデューサシステム１０６がコンシューマシステム１０４と同じデータセンタ、又は、同じサーバラック内に位置するかどうかを挙げることができる。プロデューサシステム１０６を選択することは、場合によっては、コンシューマシステム１０４によって要求されたサービスに基づき得る。更に他の場合において、プロデューサシステム１０６の選択は、コンシューマシステム１０４によって要求された及び／又は以前に割り当てられたリース時間の量に部分的に基づき得る。場合によっては、リースシステム２２４は、最少負荷のプロデューサシステム１０６を選択し得る。他の場合において、リースシステム２２４は、プロデューサシステム１０６を閾値未満の負荷を有する１組のプロデューサシステム１０６から選択し得る。いくつかの実施形態において、選択したプロデューサシステム１０６の負荷は、コンシューマシステム１０４が選択されたプロデューサシステム１０６との接続を確立したか否かを問わず、選択時において増加したと判定される。有利なことに、ある特定の実施形態において、プロデューサシステムとの確立したコンシューマ接続に関係なく、選択されたプロデューサシステム１０６について増大した負荷を記録することによって、同じプロデューサシステム１０６が期間内の閾値回数よりも多く選択される確率は低減されるが、それは、プロデューサシステム１０６の実際の負荷は低くあり得るが、コンシューマシステム１０４との今後の接続の予測された負荷が、プロデューサシステムを選択する際に考慮されるからである。
【００６０】
場合によっては、ブロック４１０にて、プロデューサシステム１０６を選択することは、１つ以上の負荷メトリック（例えば、接続、プロセッサ利用など）に関して最も低い負荷を有するプロデューサシステム１０６を選択することを含み得る。あるいは、プロデューサシステム１０６を選択することは、閾値負荷を下回る負荷を有する１組のプロデューサシステム１０６の１つであるプロデューサシステム１０６を選択することを含み得る。負荷閾値を下回る負荷を有する１組のプロデューサシステム１０６間からのプロデューサシステム１０６の選択は、ランダム、疑似ランダム、又は、選択アルゴリズム（例えば、最小時間未参照、中央値負荷など）に基づき得る。有利なことに、いくつかの実施形態において、最低負荷を有するプロデューサシステム１０６を常に選択する代わりに、プロデューサシステム１０６を１組のプロデューサシステム１０６から選択することによって、負荷のゆらぎの確率及び／又は発生は低減される。更に、ネットワーク環境１００を通過する、ネットワーク環境１００の残りの部分と比較して高い負荷に関連するシステムのサブセットの発生など、負荷バブル（ｌｏａｄ  ｂｕｂｂｌｅ）、又は、負荷ホットスポット（ｌｏａｄ  ｈｏｔｓｐｏｔ）の発生が低減される。
【００６１】
ブロック４１２にて、リースシステム２２４は、ブロック４１０にて選択されたプロデューサシステム１０６についてリース情報をコンシューマシステム１０４に提供する。このリース情報としては、プロデューサシステム１０６の識別情報、及び、場合によっては、コンシューマシステム１０４がプロデューサシステム１０６にアクセスするように許可されるリース時間の量を挙げることができる。先述のように、プロデューサシステム１０６の識別情報は、ネットワークアドレスなど、プロデューサシステム１０６の場所を特定してアクセスするのを容易にすることができる任意の情報を含むことができる。いくつかの実施形態において、プロデューサシステム１０６の識別情報を提供することは、プロデューサシステム１０６と通信するのを容易にするために証明書又は公開鍵を提供することを含むことができる。
【００６２】
先に示したように、場合によっては、プロセス４００は、リース更新要求に使用することができる。そのような場合、ブロック４１０は、コンシューマシステム１０４がリース更新を要求したプロデューサシステム１０６がリースにまだ利用可能かどうか判定することを含むことができる。プロデューサシステム１０６がリースにまだ利用可能であるかどうか判定することは、プロデューサシステム１０６がコンシューマシステム１０４に対応し続けるリソース容量を有するかどうか判定することを含むことができる。更に、プロデューサシステム１０６がリースにまだ利用可能であるかどうか判定することは、プロデューサシステム１０６に関連したプロデューサ現状情報の１つ以上のメトリックが利用可能性閾値を満たすかどうか判定することを含むことができる。例えば、判定はプロデューサシステム１０６に関連した誤り率が閾値誤り率を下回るかどうかチェックすることを含むことができる。プロデューサシステム１０６がリース更新に利用可能である場合、リースエージェント１０２は、プロデューサシステム１０６の更新されたリースをコンシューマシステム１０４に送ることができる。リースエージェント１０２がプロデューサシステム１０６がリース更新に利用可能ではないと判定した場合、リースエージェント１０２は、その旨を報告し、及び／又は、代替プロデューサシステム１０６のリース情報を提供することができる。
【００６３】
例示的なプロデューサシステム更新処理
図５は、プロデューサシステム更新プロセス５００の実施形態を例示する。プロセス５００は、プロデューサシステム１０６の利用可能性を更新することができ、かつ、プロデューサシステム１０６をリースエージェント１０２間で再分割することができる任意のシステムによって実施することができる。例えば、プロセス５００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、分割システム２２２、分割システム２０４、登録モジュール２２６、及び現状モジュール２２８によって実施することができる。任意の数のシステムが、全体的に又は部分的に、プロセス５００を実行することができるが、論じる内容を簡素化するために、プロセス５００の部分を特定のシステムを特定のシステムを参照して説明する。
【００６４】
プロセス５００は、決定ブロック５０２にて始まり、例えば、リースエージェント１０２の現状モジュール２２８は、現状更新がプロデューサシステム１０６から受信されたかどうか判定する。現状更新は、プロデューサシステム１０６にリースエージェント１０２によって送られた要求に応答してリースエージェント１０２により予期され得る。あるいは、現状モジュール２２８は、各プロデューサシステム１０６に関連した更新スケジュールのために現状更新を予期し得る。例えば、場合によっては、各プロデューサシステム１０６は、現状更新を自動的に疎通確認するか、又は、１時間毎に又は日別に現状更新を割り当てられたリースエージェント１０２に提供するように構成され得る。現状更新が受信された場合、プロセス５００は、決定ブロック５０２に戻って、次の現状更新を待つ。更に、現状モジュール２２８は、プロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６にてプロデューサシステム１０６に関連したプロデューサ現状情報を更新し得る。
【００６５】
それに反して、現状更新が決定事項ブロック５０２にて受信されない場合、現状モジュール２２８は、ブロック５０４にてプロデューサシステム１０６の利用不可能を示すためにプロデューサシステム１０６の現状を更新する。プロデューサシステム１０６の現状を更新することは、プロデューサシステム１０６が、コンシューマシステム１０４にリースされる上で利用可能ではないという表示をプロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６に記憶することを含むことができる。場合によっては、現状更新が決定ブロック５０２にて受信されるときにさえ、現状モジュール２２８は、プロデューサシステム１０６が利用可能ではないことを示すためにブロック５０４にてプロデューサシステムの現状を更新し得る。例えば、受信された現状情報がプロデューサシステム１０６は誤動作しているか、閾値速度にて要求に対応しているか、又は、閾値誤り率を超えたエラーを生成していることを示す場合、現状モジュール２２８は、プロデューサシステム１０６がもはや利用可能ではないことを示すためにプロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６を更新し得る。いくつかの実施形態において、プロデューサシステム１０６のプロデューサ状態情報をその利用可能性の喪失を示すために更新することは、プロデューサシステム１０６がもはや利用可能ではないと管理者に警告ことを含み得る。プロデューサシステム１０６現状情報の更新を図１０に関して更に詳細に説明する。
【００６６】
決定ブロック５０６にて、分割システム２２２は、プロデューサシステム１０６の閾値量が利用不可能になったかどうかを判定する。否定の場合、プロセス５００は、決定ブロック５０２に戻って、次の現状更新を待つ。分割システム２２２が決定ブロック５０６にてプロデューサシステム１０６の閾値量が利用不可能になったと判定した場合、分割システム２２２は、ブロック５０８にてプロデューサ再分割プロセスを実行する。このプロデューサシステム再分割プロセスを図６に関して以下で更に詳細に説明する。いくつかの実施形態において、決定事項ブロック５０６及びブロック５０８の一方又は両方は、分割システム２０４によって実行される。
【００６７】
例示的な分割プロセス
図６は、１組のプロデューサシステム１０６を分割する分割プロセス６００の実施形態を例示する。プロセス６００は、利用可能なプロデューサシステム１０６の数の変化を追跡することができ、かつ、プロデューサシステム１０６をリースエージェント１０２間で再分割することができる任意のシステムによって実施することができる。例えば、プロセス６００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、分割システム２２２、分割システム２０４、登録モジュール２２６、及び現状モジュール２２８によって実施することができる。任意の数のシステムが、全体的に又は部分的に、プロセス６００を実施することができるが、論じる内容を簡素化するために、プロセス６００の部分を特定のシステムを特定のシステムを参照して説明する。
【００６８】
プロセス６００は、ブロック６０２にて始まり、例えば、現状モジュール２２８は利用可能なプロデューサシステム１０６の差分を追跡する。場合によっては、現状モジュール２２８は、利用可能なプロデューサシステム１０６の数の絶対変化を追跡する。あるいは又は更に、現状モジュール２２８は、利用可能なプロデューサシステム１０６の数の変化率を追跡する。利用可能なプロデューサシステム１０６の差分又は変化は、新しいプロデューサシステム１０６の追加、又は、プロデューサシステム１０６の利用可能性の損失に基づくことができる。いくつかの実施形態において、プロセス５００はプロデューサシステム１０６の利用可能性の喪失を識別するために使用され得る。更に、利用可能なプロデューサシステム１０６の判定は、プロデューサシステム１０６の喪失又は追加を示すユーザ更新に基づき得る。更に、プロデューサシステム１０６の追加は、プロデューサシステム１０６による登録試行に基づいて追跡され得る。場合によっては、プロデューサシステム１０６の利用可能性は、コンシューマシステム１０４によって提供された情報に基づいて判定され得る。更に、利用可能なプロデューサの差分又は変化は、実際の数の観点から、又は、プロデューサシステム１０６の利用可能性の百分率変化の観点から追跡され得る。
【００６９】
いくつかの実施形態において、プロデューサシステム１０６及び／又は利用可能なプロデューサシステム１０６の差分は、各リースエージェント１０２によって追跡される。あるいは、各リースエージェント１０２は、リースエージェント１０２に割り当てられる利用可能なプロデューサシステムを追跡する。更に又はあるいは、利用可能なプロデューサシステム１０６のカウント及び／又は差分は、分割システム２０４など、独立したシステムによって追跡される。
【００７０】
決定ブロック６０４にて、分割システム２２２は、利用可能なプロデューサシステム１０６の差分が閾値を満たすかどうか判定する。この差分は、絶対値とすることができる。換言すると、プロデューサシステム１０６の追加又は差し引きが追跡され得る。ある特定の実施形態において、プロデューサシステム１０６の追加及差し引きは、各々に関連した別個の閾値で独立して追跡され得る。したがって、場合によっては、たとえ利用可能なプロデューサシステムの全変化がゼロであるか、又は、組み合わせ閾値を満たさないとしても、一方又は両方閾値が満たされ得る。場合によっては、差分は、百分率変化及び／又は変化率を表すことができる。そのような場合、閾値は、百分率閾値及び／又は変化率閾値であり得る。
【００７１】
差分が閾値を満たさない場合、又は、差分ののうちのどれも対応する閾値を満たさない場合、現状モジュール２２８は、ブロック６０２にて、利用可能なプロデューサシステム１０６又は利用可能なプロデューサシステム１０６の変化を追跡し続ける。それに反して、差分が閾値を満たすか、又は、差分が対応する閾値を満たす場合、分割システム２２２は、プロセス６００を実行するリースエージェント１０２がブロック６０６にてプロデューサシステム１０６の分割又は再分割プロセスを開始していると他のリースエージェント１０２に通知する。有利なことに、ある特定の実施形態において、プロセス６００を実行するリースエージェント１０２が分割プロセスを開始していると他のリースエージェント１０２に通知することによって、プロセス６００が、複数のリースエージェント１０２に同時に分割プロセスを実行させることを回避するが、該実行されることは、例えば、プロデューサシステム１０６のカウンティング及び分割における競合条件のために非最適結果を引き起こし得る。いくつかの実施形態において、ブロック６０６は、随意的であり得る。例えば、いくつかの実施形態において、リースエージェント１０２とは別個である分割システム２０４は、分割又は再分割プロセスを実行し得る。
【００７２】
ブロック６０８にて、分割システム２２２は、利用可能なプロデューサシステム１０６の識別情報を取得する。分割システム２２２は、プロデューサリポジトリ２２０にアクセスすることによって及び／又はエージェントリポジトリ２０６にアクセスすることによって利用可能なプロデューサシステム１０６の識別情報を取得し得る。場合によっては、分割システム２２２は、他のリースエージェント１０２に連絡することによって、利用可能なプロデューサシステム１０６の識別情報を取得し得る。
【００７３】
ブロック６１０にて、分割システム２２２は、利用可能なプロデューサシステム１０６をリースエージェント１０２間で分割する。分割システム２２２は、任意の種類の分割アルゴリズムを使用してプロデューサシステム１０６を分割することができる。一般的に、リースエージェント１０２間のプロデューサシステム１０６のパーティションは、リースエージェント１０２に割り当てることができる、重なり合わないか又は非等価な組のプロデューサシステム１０６を生成する。しかしながら、場合によっては、分割は重なり合い得る。更に、場合によっては、サブセットは、不均衡であり得る。換言すれば、いくつかのリースエージェント１０２は、他のリースエージェント１０２より多いプロデューサシステム１０６を割り当てられ得る。サブセットが不均衡である場合において、特定のリースエージェント１０２に割り当てられるプロデューサシステム１０６の数又は百分率は、少なくとも部分的に、リースエージェント１０２に割り当てられるリースエージェント１０２及び／又はプロデューサシステム１０６が処理することができる要求の数に基づき得る。例えば、第１のリースエージェント１０２が、第１のリースエージェントは他のプロデューサシステム１０６よりも多くのコンシューマシステム１０４要求を取り扱うことができるプロデューサシステム１０６を割り当てられた場合には、別のリースエージェント１０２よりも少ないプロデューサシステムを割り当てられ得る。
【００７４】
更に、いくつかのプロデューサシステム１０６が他のプロデューサシステムと異なるサービスを提供することができる実施形態において、プロデューサシステム１０６は、各リースエージェントが特定のサービスを提供することができるプロデューサシステムを割り当てられるように分割され得る。あるいは、特定のサービスを提供することができるプロデューサシステム１０６は、リースエージェント１０２の選択サブセット間で分割され得る。
【００７５】
ブロック６１２にて、プロセス６００を実行しているリースエージェント１０２の分割システム２２２は、ネットワーク環境１００内の他のリースエージェント１０２の各々を更新し、プロデューサシステム１０６の識別情報は、ブロック６１０の完了時にリースエージェント１０２の各々に割り当てられる。いくつかの実施形態において、ブロック６１２は、プロセス６００を実行するリースエージェント１０２を、リースエージェント１０２自体に割り当てられるプロデューサシステム１０６の識別情報で更新することを含むことができる。プロデューサシステム１０６の識別情報でリースエージェント１０２を更新することは、プロデューサリポジトリ２２０でのテーブル又はデータベースを更新することを含み得る。場合によっては、リースエージェント１０２がプロセス６００を実行しているので、ブロック６１２は、リースエージェント１０２に対して随意的であり、ネットワーク環境１００内に含まれる他のリースエージェント１０２に対してのみ実行される。
【００７６】
いくつかの実施形態において、プロセス６００を使用して、プロデューサシステム１０６の初期分割をリースエージェント１０２間で行うことができる。例えば、ネットワーク環境１００が最初に構成されるとき、利用可能なプロデューサシステム１０６の差分は、利用可能なプロデューサシステム１０６が起動されるときに決定ブロック６０４の閾値を満たす可能性が高い。あるいは又は更に、ユーザが、ネットワーク環境１００が最初に構成されるあるときか、又は、任意の他の時間にて分割プロセスを手作業で起動し得る。
【００７７】
プロセス６００は、プロデューサシステム１０６をリースエージェント１０２間で分割すると説明した。しかしながら、プロセス６００は、そのようなものとして制限されるものではない。場合によっては、プロセス６００を使用して、リースエージェント１０２間でプロデューサシステム１０６にアクセスするための、コンシューマシステム１０４に提供することができるリースを分割することができる。例えば、リースエージェント１０２又は分割システム２２２は、１組の利用可能なプロデューサシステムを識別して、その組の利用可能なプロデューサシステムの各プロデューサシステムに利用可能ないくつかのリースを判定することができる。プロセス６００を実行しているリースエージェント１０２は、利用可能なリースにおいて変更された閾値を検出する最初のリースエージェント１０２であり得るか、又は、リース分割を実行するように指定されたリースエージェント１０２であり得る。リースエージェント１０２は、（例えば、プロデューサシステム１０６の登録中に）各プロデューサシステム１０６から受信された現状情報に基づいて利用可能なリースの数を識別し得る。あるいは又は更に、利用可能なリースの数は、形式のプロデューサシステム１０６、又は、プロデューサシステム１０６又はユーザ（例えば、管理者）から受信された構成情報に基づいて判定され得る。
【００７８】
リースエージェント１０２は、複数のリースエージェント１０２の各リースエージェント１０２に各プロデューサシステム１０６に利用可能な数のリースに属するリースのサブセットを割り当てることによって、各プロデューサシステム１０６に利用可能な数のリースを複数のリースエージェント１０２間で分割し得る。リースの数は、リースエージェント１０２間で等しく又は実質的に等しく分割され得る。場合によっては、リースエージェント１０２の少なくともいくつかは、リースの数がリースエージェント１０２の数の倍数ではないことによって１つ多いか又は１つ少ないリースを割り当てられ得る。更に、場合によっては、リースは、例えば、いくつかのリースエージェント１０２及び／又はいくつかのプロデューサシステム１０６間の構成上の違いため等しく分割されない場合がある。場合によっては、各リースエージェント１０２は、重なり合わない組のリースを割り当てられる。あるいは、リースの少なくともいくつかは、複数のリースエージェント１０２に割り当てられ得る。いくつかの実施形態において、プロデューサシステム１０６に対するリースが分割されることになる複数のリースエージェント１０２は、リースエージェント１０２のサブセットであり得る。例えば、場合によっては、リースエージェント１０２のサブセットは、プロデューサシステム１０６のサブセットに割り当てられ得る。
【００７９】
いくつかリースを分割した後に、又は、分割している間に、プロセス６００を実行しているリースエージェント１０２は、複数のリースエージェント１０２の各リースエージェント１０２について、リースエージェント１０２にリースエージェント１０２に割り当てられるリースのサブセットを提供し得る。リースをリースエージェント１０２の各々に提供することは、各リースエージェント１０２に割り当てられた各プロデューサシステム１０６のリースの数をリースエージェント１０２の各々に提供することを含み得る。あるいは又は更に、リースをリースエージェント１０２の各々に提供することは、各々の割り当てられたリースの識別情報をリースエージェント１０２に提供することを含み得る。更に、リースを提供することは、プロデューサシステム１０６と通信し及び／又はプロデューサシステム１０６のリースを利用する接続情報を提供することを含み得る。
【００８０】
有利なことに、いくつかの実施形態において、各プロデューサシステム１０６に利用可能ないくつかのリースを複数のリースエージェント１０２間で分割することは、複数のリースエージェント１０２間での作業負荷の分散を可能にする。場合によっては、プロセス６００を実行しているリースエージェント１０２が、該リースエージェントがプロセス６００を実行しているときにそれ自身にそれ自体に割り当てられるリースのサブセットを提供することは不必要である。しかしながら、場合によっては、リースエージェント１０２は、リースをそれ自体に提供し得る。例えば、分割を実行するリースエージェント１０２のサブシステム（例えば、分割システム２２２）とリースエージェント１０２に割り当てられるリースを受信し及び／又は追跡するサブシステムが異なる場合において、プロセス６００を実行するリースエージェント１０２は、割り当てられたリースの識別情報をそれ自体に提供し得る。
【００８１】
場合によっては、プロセス６００を使用して、プロデューサシステム１０６及びプロデューサシステム１０６の各々に関連したリースの両方をリースエージェント１０２間で分割することができる。
【００８２】
例示的なプロデューサシステム登録プロセス
図７は、プロデューサシステム１０６の観点からのプロデューサシステム登録プロセス７００の実施形態を例示する。プロセス７００は、プロデューサシステム１０６をリースエージェント１０２に登録することができる任意のシステムによって実施することができる。例えば、プロセス７００は、全体的に又は部分的に、少し例を挙げれば、プロデューサシステム１０６、登録モジュール２６０、及び現状モジュール２６２によって実施することができる。任意の数のシステムが、全体的に又は部分的に、プロセス７００を実施することができるが、論じる内容を簡素化するために、プロセス７００の部分を特定のシステムを特定のシステムを参照して説明する。
【００８３】
プロセス７００は、プロデューサシステム１０６が最初に起動又は初期化されるか、又は、例えば、非アクティブ状態、又はシステム再開の期間の後に再起動又は再初期化されるたびに発生し得る。場合によっては、プロセス７００は、プロデューサシステム１０６が割り当てられたリースエージェント１０２がもはや利用可能ではないと判定するたびに発生又は再発生し得る。割り当てられたリースエージェント１０２がもはや利用可能ではないという判定は、例えば、エージェントリポジトリ２０６から取得されたか、ユーザから受信された情報、又は、図５に関して説明した現状更新など、現状更新を提供する後にプロデューサシステム１０６がＡＣＫが割り当てられたリースエージェント１０２から受信されていない場合に基づき得る。
【００８４】
プロセス７００は、ブロック７０２にて始まり、例えば、登録モジュール２６０は、１組のリースエージェント１０２の識別情報に、例えば、エージェントリポジトリ２０６からアクセスする。場合によっては、プロデューサシステム１０６は、１組のリースエージェント１０２の識別情報に内部記憶装置からアクセスし得る。例えば、プロデューサシステム１０６は、１組のリースエージェント１０２の識別情報で予め構成され得る。他の場合において、ユーザが、アクセスするべきリースエージェント１０２を指定し得る。
【００８５】
ブロック７０４にて、登録モジュール２６０は、リースエージェント１０２をブロック７０２にて識別された１組のリースエージェント１０２から選択する。登録モジュール２６０は、ランダムに、又は、ラウンドロビン又は最長時間未使用方法など、任意の他の選択方法を使用することによってリースエージェント１０２を選択し得る。１組のリースエージェント１０２がソートされる場合において、登録モジュール２６０は、ソートされた組における第１のリースエージェント１０２を選択し得る。ある特定の実施形態において、ブロック７０４は、随意的であり得る。例えば、ブロック７０４は、ユーザがリースエージェント１０２を指定する場合には不必要である。
【００８６】
ブロック７０６にて、登録モジュール２６０は、ブロック７０４にて選択されたリースエージェント１０２との接続を開始するか又は開始しようとする。場合によっては、リースエージェント１０２との接続を開始しようとすることは、リースエージェント１０２に登録する試行を含む。
【００８７】
ブロック７０８にて、登録モジュール２６０は、接続応答をリースエージェント１０２から受信する。登録モジュール２６０は、決定ブロック７１０にて、接続応答がプロデューサシステム１０６の登録を確認するか、又は、第２のリースエージェント１０２の識別情報を示すかどうか判定する。登録モジュール２６０が決定ブロック７１０にて接続応答はプロデューサシステム１０６の登録を確認すると判定した場合、現状モジュール２６２は、ブロック７１２にて、プロデューサシステム１０６に関係する状態情報をリースエージェント１０２に提供する。この状態情報は、プロデューサシステム１０６に関連した１つ以上のメトリックの状態又は現状に関連した任意の情報を含むことができる。例えば、状態情報は、１つ以上の計算リソース（例えば、メモリ、プロセッサ、ネットワーク帯域幅、アプリケーションなど）の利用可能性、サービス要求がプロデューサシステムにより処理されることになるコンシューマシステム１０４の数、及びプロデューサシステム１０６の状態に関連した任意の他の情報を含むことができる。
【００８８】
ブロック７１２に関連したプロセスは、登録モジュール２６０が、接続応答がプロデューサシステム１０６の登録を確認すると判定すると発生し得る。あるいは又は更に、ブロック７１２に関連したプロセスは、何らかのその後の時間にて発生し得る。更に、いくつかの実施形態において、ブロック７１２に関連したプロセスは、連続的に、間欠的に発生し得るか、又は、プロデューサシステムの１０６の現状の更新に対するリースエージェント１０２からの要求に応答して発生し得る。他の実施形態において、ブロック７１２に関連したプロセスは、プロデューサシステム１０６の状態又は現状の閾値変化があるたびに発生し得る。例えば、ブロック７１２に関連したプロセスは、プロデューサシステム１０６の処理リソースの利用可能性が閾値レベルに落ちたときに発生し得る。
【００８９】
登録モジュール２６０が決定ブロック７１０にてブロック７０８にて受信された接続応答が第２のリースエージェントの識別表示を含むと判定した場合、登録モジュール２６０はブロック７１４にて第２のリースエージェントとの接続を開始する。プロセス８００に関して説明するように、第２のリースエージェントは、プロデューサシステム１０６に関連していると判定された第１のリースエージェント（例えば、ブロック７０４にて識別されるリースエージェント）を含み得る。
【００９０】
ブロック７１６にて、現状モジュール２６２は、状態情報を第２のリースエージェントに提供する。ある特定の実施形態において、ブロック７１６は、ブロック７１２に関して先述の実施形態のうちの１つ以上を含み得る。ある特定の実施形態において、ブロック７０８にて受信された接続応答は、プロデューサシステム１０６による登録が更なるリースエージェントを識別することなく成功したか否かを示す。そのような場合、プロデューサシステム１０６の登録が成功しなかった場合、プロデューサシステム１０６は、ブロック７０２にて識別された１組のリースエージェントの別のリースエージェントを登録するか又は該別のリースエージェントとの接続を開始しようとし得、かつ、その代わりに、リースエージェント１０２がプロデューサシステム１０６の登録を確認するまでブロック７０４、７０６、７０８及び７１０を繰り返し得る。
【００９１】
いくつかの実施形態において、決定ブロック７１０にて識別された第２のリースエージェントは、ランダムに選択され、及び／又は、プロデューサシステム１０６に必ずしも関連づけられるわけではない。そのような場合、ブロック７１４は、ブロック７０８及び７１０に関して、但し、第２のリースエージェントに関して１つ以上の実施形態を実行することを含むことができる。換言すると、ループをブロック７１４からブロック７０８まで形成することができる。そのような場合、決定ブロック７１０は、第２のリースエージェントから接続応答が第３のリースエージェントを識別した場合、プロデューサシステム１０６の登録を確認する代わりに第３のリースエージェントを識別し得る。このループは、プロデューサシステム１０６が失敗せずにリースエージェント１０２に登録されるまで連続的に繰り返され得る。あるいは、ループは、閾値回数で実行され得る。プロデューサシステム１０６が失敗せずに登録されことなく閾値が満たされる場合、警告が生成され得る。例えば、管理者は、プロデューサシステム１０６がリースエージェント１０２に登録することができなかったことを（例えば、電子メール又はポップアップアラートを介して）通知され得る。想定外のシステム故障など、場合によっては、プロデューサシステム１０６は、１組のリースエージェント１０２に登録するか、又は、該リースエージェントとの登録を更新することができない場合がある。そのような場合、コンシューマシステム１０４は、プロデューサシステム１０６にアクセスしようとするために接続情報又はリースのキャッシュにアクセスし得る。有利なことに、ある特定の実施形態において、期限切れであり得るキャッシュ情報を使用することによって、リソースアクセスのための休止時間が、場合によっては低減又は排除され得る。
【００９２】
例示的なプロデューサシステム登録プロセス
図８は、リースエージェント１０２の観点からのプロデューサシステム登録プロセス８００の実施形態を例示する。プロセス８００は、プロデューサシステム１０６をリースエージェント１０２に登録することができる任意のシステムによって実施することができる。例えば、プロセス８００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、登録モジュール２２６、及び現状モジュール２２８によって実施することができる。任意の数のシステムが、全部、一部を問わず、プロセス８００をすることができるが、論じる内容を簡素化するために、プロセス８００の部分を特定のシステムを特定のシステムを参照して説明する。
【００９３】
プロセス８００は、ブロック８０２にて始まり、例えば、登録モジュール２２６は、登録要求をプロデューサシステム１０６から受信する。いくつかの実施形態において、登録要求は、プロデューサシステム１０６に関連した証明書又は暗号化キーを含むことができる。登録モジュール２２６は、決定ブロック８０４にて、プロデューサシステム１０６がリースエージェント１０２に割り当てられているかどうか判定する。プロデューサシステム１０６がリースエージェント１０２に割り当てられているかどうか判定することは、プロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６にアクセスして、プロデューサシステム１０６がリースエージェント１０２に割り当てられているかどうか判定することを含むことができる。更に、場合によっては、プロデューサシステム１０６がリースエージェント１０２に割り当てられているかどうかについて判定することは、例えば、プロデューサシステム１０６に関連した受信された識別子、証明書、又は暗号化キーに基づいてプロデューサシステム１０６の識別情報を変えることを含むことができる。
【００９４】
登録モジュール２２６が、プロデューサシステム１０６がリースエージェント１０２に割り当てられていると判定した場合、登録モジュール２２６は、ブロック８０６にてプロデューサシステム１０６の登録を確認する。プロデューサシステム１０６の登録を確認することは、プロデューサシステム１０６がリースエージェント１０２に登録されていることをプロデューサシステム１０６に知らせることを含むことができる。更に、場合によっては、ブロック８０６はプロデューサシステム１０６が利用可能であり、かつ、リースエージェント１０２に登録したことを示すためにプロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６を更新することを含むことができる。更に、いくつかの実施形態において、ブロック８０６は、プロデューサシステム１０６に、リースエージェント１０２に関連し及び／又はプロデューサシステム１０６に割り当てられた証明書及び／又は暗号化キーへのアクセスを提供することを含むことができる。この証明書及び／又は暗号化キーは、プロデューサシステム１０６とリースエージェント１０２との間の更なる通信に使用することができる。更に、証明書及び／又は暗号化キーは、プロデューサシステム１０６の識別情報を確認するために、又は、２つのシステム間で通信されたデータをセキュア化するためになど、プロデューサシステム１０６とコンシューマシステム１０４との間の通信に使用することができる。
【００９５】
ブロック８０８にて、現状モジュール２２８は、状態情報をプロデューサシステム１０６から受信する。この状態情報は、ブロック７１２の状態情報に関して説明した実施形態の一部又は全部を含むことができる。現状モジュール２２８は、ブロック８１０にて、ブロック８０８にて受信された状態情報に少なくとも部分的に基づいてプロデューサシステム１０６のプロデューサ現状情報を更新することができる。プロデューサ現状情報を更新することは、プロデューサシステム１０６の現状を反映するためにプロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６にてエントリ又は１つ以上のメトリックを更新することを含むことができる。
【００９６】
登録モジュール２２６が決定ブロック８０４にてプロデューサシステム１０６がリースエージェント１０２に割り当てられていないと判定した場合、登録モジュール２２６は、ブロック８１２にて、プロデューサシステム１０６が割り当てられている別のリースエージェントを識別する。ブロック８１４にて、登録モジュール２２６はプロデューサシステム１０６に、プロデューサシステム１０６が割り当てられているリースエージェント１０２の識別情報を提供することができ、プロデューサシステム１０６が、ブロック８１２にて識別されたリースエージェント１０２に連絡することができるようにする。ある特定の実施形態において、ブロック８１２及びブロック８１４は、随意的であり得る。例えば、場合によっては、登録モジュール２２６は、プロデューサシステム１０６に、プロデューサシステム１０６がリースエージェント１０２に関連づけられておらず、したがって、ブロック８０２にて受信された登録要求は、プロデューサシステム１０６にプロデューサシステム１０６が割り当てられている代替リースエージェント１０２を知らせることなく不成功だったことを知らされ得る。
【００９７】
リースエージェント再分割プロセス
図９は、リースエージェント再分割プロセス９００の実施形態を例示する。プロセス９００は、リースエージェント１０２に割り当てられた１組のプロデューサシステム１０６を再割り当てることができる任意のシステムによって実施することができる。例えば、プロセス９００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、分割システム２２２、及び分割システム２０４によって実施することができる。任意の数のシステムが、全部、一部を問わず、プロセス９００を実施することができるが、論じる内容を簡素化するために、プロセス９００の部分を特定のシステムを特定のシステムを参照して説明する。
【００９８】
プロセス９００は、ブロック９０２にて始まり、例えば、第１のリースエージェント１０２に関連した分割システム２２２は、別の、つまり、第２のリースエージェント１０２がもはや利用可能ではないという表示を受信する。例えば、第２のリースエージェント１０２がもはや利用可能ではないという表示は、ピング又は現状チェックに基づいて判定され得る。他の場合において、分割システム２２２はメッセージが第２のリースエージェント１０２によって確認応答されてないときにリースエージェント１０２がもはや利用可能ではないと判定し得る。更に他の実施形態において、ユーザは、第２のリースエージェントがもはや利用可能ではないと指定し得る。いくつかの例において、プロセス９００は分割システム２０４によって実行され得る。
【００９９】
ブロック９０４にて、分割システム２２２は、もはや利用可能ではないリースエージェント１０２に割り当てられたプロデューサシステム１０６を識別する。プロデューサシステム１０６は、プロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６にアクセスすることによって識別され得る。ブロック９０６にて、分割システム２２２は、ブロック９０４にて識別されたプロデューサシステム１０６を残りのリースエージェント１０２間で分割する。場合によっては、ブロック９０６は、分割プロセスが発生していることを残りのリースエージェント１０２に知らせることを含み得、その結果、ブロック６１０に関して先述のように、複数のリースエージェントが識別されたプロデューサシステム１０６を同時に分割するのが防止される。
【０１００】
いくつかの実施形態において、ブロック９０６は、もはや利用可能ではないリースエージェント１０２に割り当てられたものだけではなく、全ての利用可能なプロデューサシステム１０６を再分割することを含み得る。そのような実施形態において、ブロック９０４は、全ての利用可能なプロデューサシステム１０６を識別することを含み得る。先述のように、プロデューサシステム１０６の分割は、重なり合う、重なり合いなし、等価、非等価であり得、及び／又は、プロデューサの種類に基づき得る。したがって、いくつかの実施形態において、ブロック９０６は、ブロック６１０に関して先述の実施形態の一部又は全てを含み得る。更に、場合によっては、第２のリースエージェント１０２に割り当てられたプロデューサシステム１０６の分割は、第２のリースエージェント１０２の形式に少なくとも部分的基づき得る。例えば、第２のリースエージェントが、１０２がもっぱらストレージサービスを提供するプロデューサシステム１０６を割り当てられた場合、第２のリースエージェント１０２に割り当てられたプロデューサシステム１０６は、また、もっぱら、やはりストレージサービス又はリソースを提供するプロデューサシステム１０６に割り当てられるリースエージェント１０２のサブセット間で再分割され得る。
【０１０１】
ブロック９０８にて、分割システム２２２は、まだ利用可能であるリースエージェント１０２の各々に新たに割り当てられたプロデューサシステム１０６の識別情報で残りのリースエージェント１０２を更新する。
【０１０２】
いくつかの実施形態において、プロセス９００は、リースエージェント１０２の追加又はリースエージェント１０２の置換えに使用され得る。そのような場合、ブロック９０４では、ブロック９０６での分割に向けてすべての利用可能なプロデューサシステム１０６を識別し得る。場合によっては、利用可能なプロデューサシステム１０６は、過去の期間にて利用可能であった同じプロデューサシステム１０６であり得る。他の場合において、一組のプロデューサシステム１０６は、プロデューサシステム１０６の喪失、又は、プロデューサシステム１０６の追加のために変った可能性がある。リースエージェント１０２の１対１の置き換えがある場合において、新しいリースエージェントは、その置換え対象であるリースエージェントのプロデューサシステム１０６を割り当てられ得る。そのような場合、ブロック９０６は、随意的であり得、ブロック９０８は、他のリースエージェントに、新しいリースエージェントがここでリースエージェントのプロデューサシステム１０６を割り当てられていることを知らせることを含み得る。
【０１０３】
例示的なヒステリシスベースに基づくプロデューサ選択プロセス
図１０は、ヒステリシスに基づくプロデューサ選択プロセス１０００の実施形態を例示する。プロセス１０００は、ブロック４１０の一部としてのプロデューサシステム１０６の選択など、プロデューサシステムの選択を修正するようにプロデューサシステム１０６に関連した選択重みを修正することができる任意のシステムによって実施することができる。例えば、プロセス１０００は、全体的に又は部分的に、少し例を挙げれば、リースエージェント１０２、現状モジュール２２８、及びリースシステム２２４によって実施することができる。任意の数のシステムが、全部、一部を問わず、プロセス１０００を実施することができるが、論じる内容を簡素化するために、プロセス１０００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１０４】
プロセス１０００は、ブロック１００２にて始まり、例えば、現状モジュール２２８は、プロデューサシステム１０６に関連した現状メタデータをコンシューマシステム１０４から受信する。この現状メタデータは、コンシューマシステム１０４にプロデューサシステム１０６によって提供された情報、並びに、コンシューマシステム１０４がプロデューサシステム１０６とのやりとりに基づいて判定した情報を含み得る。例えば、現状メタデータは、プロデューサシステム１０６の応答時間に関係する情報、プロデューサシステム１０６が所与の時間にて対応するコンシューマシステム１０４の量、プロデューサシステム１０６が期間にわたって平均で対応するコンシューマシステム１０４の量などを含み得る。いくつかの実施形態において、ブロック１００２は、ブロック４０４に関して先述した実施形態の一部又は全てを含むことができる。
【０１０５】
更に、場合によっては、現状モジュール２２８は、コンシューマシステム１０４がリースエージェント１０２と通信した最終時以降コンシューマシステム１０４が通信した１組のプロデューサシステム１０６に関連した現状メタデータを受信し得る。現状メタデータは、プロデューサシステム１０６への更新されたアクセスに対する更新要求の一部としてコンシューマシステム１０４から受信され得る。他の場合において、現状メタデータは、新しいリース要求の一部としてコンシューマシステム１０４から受信され得る。
【０１０６】
ブロック１００４にて、現状モジュール２２８は、ブロック１００２にて受信された対応する現状メタデータに基づいてプロデューサシステム１０６ １つ以上のプロデューサ現状情報を更新する。あるいは又は更に、現状モジュール２２８は、受信された現状メタデータの少なくともいくつかが別のリースシステム１０２に関連したプロデューサシステム１０６に関すると判定し得、したがって、現状情報を、プロデューサシステム１０６に割り当てられたリースエージェント１０２に提供し得る。場合によっては、ブロック１００２及び１００４に関連したプロセスは、コンシューマシステム１０４は、リースエージェント１０２に、リースエージェント１０２がいくつかのプロデューサシステム１０６の各々に割り当てられるか否かを問わず、いくつかのプロデューサシステム１０６の各々とのコンシューマシステムの１０４の相互作用に関する情報を提供するという点において一種の「ゴシップアルゴリズム」の役目をすることができる。換言すると、リースエージェント１０２は、別のリースエージェント１０２に割り当てられているプロデューサシステム１０６に関する「ゴシップ」を取得し得る。リースエージェント１０２は、その後、「ゴシップ」をプロデューサシステム１０６に割り当てられているリースエージェント１０２に広めることができる。有利なことに、ある特定の実施形態において、この「ゴシップアルゴリズム」を使用することによって、リースエージェント１０２は、現状メタデータをスケジュールされた現状更新と次の現状更新の間にプロデューサシステム１０６から取得することができる。現状メタデータをコンシューマシステム１０４並びにプロデューサシステム１０６から取得することによって、リースのためのプロデューサシステム１０６の選択は、「ゴシップアルゴリズム」を使用しないシステムと比較して更に最適化することができる。「ゴシップ」又はサービスを提供するコンピューティングシステムを選択するためのフィードバック情報を取得するシステム及び方法の更なる実施形態が、２００９年８月２０日出願の、「ＤＥＣＥＮＴＲＡＬＩＺＥＤ  ＲＥＱＵＥＳＴ  ＲＯＵＴＩＮＧ」という名称の、米国特許出願第１２／５４４，５１７号で説明されており、この特許は、その全体が参照によって本明細書に組み入れられる。いくつかの実施形態において、ブロック１００２は、ブロック４０６及び／又はブロック４０８に関して先述した実施形態の一部又は全てを含むことができる。
【０１０７】
決定ブロック１００６にて、現状モジュール２２８は、更新されたプロデューサ現状情報がプロデューサシステム１０６に関連した負荷メトリックの変化を示すかどうか判定する。負荷メトリックは、モニタリングに選択されたプロデューサシステム１０６の任意の特性を含むことができる。この負荷メトリックは、プロデューサシステム１０６によって処理することができる負荷に関することができる。場合によっては、負荷メトリックは、プロデューサシステムの健康に関係する任意のメトリックを含むことができる。負荷メトリックのいくつかの非限定的な実施例としては、エラー率、メモリ利用率、コンシューマシステムとの接続のカウントなどを挙げることができる。決定ブロック１００６にて、更新されたプロデューサ現状情報が負荷メトリックの変化を示さない場合、プロセス１０００は、ブロック１００２に戻って、コンシューマシステム１０４からの新しい現状メタデータを待つ。
【０１０８】
いくつかの実施形態において、決定ブロック１００６は、あるいは又は更にプロデューサシステム１０６に関連した１つ以上の他のメトリックに関連した値の変化があるかどうか判定することを伴い得る。例えば、現状モジュール２２８は更新されたプロデューサ現状情報がプロデューサシステム１０６による応答時間の変更、又は、プロデューサシステム１０６による利用可能なリソースの変更を示すかどうか判定し得る。場合によっては、決定ブロック１００６は、プロデューサシステム１０６の更新された負荷メトリック測定結果をネットワーク環境１００内のプロデューサシステム１０６の、又は、リースエージェント１０２に割り当てられたプロデューサシステムの平均負荷メトリック測定結果と比較することを含み得る。
【０１０９】
更新されたプロデューサ現状情報がプロデューサシステム１０６の負荷メトリックの変化があることを示す場合、現状モジュール２２８は、ブロック１００８にて、変化のある負荷メトリック測定に少なくとも部分的に基づいてプロデューサシステム１０６に関連した選択重みを修正する。選択重みを修正することは、誤り率の変化が誤り率増大、又は、誤り率減少を示すかどうかに基づいて選択重みを増減することを含むことができる。いくつかの実施形態において、プロデューサシステム１０６は、選択重みに関連づけられない。そのような実施形態において、決定ブロック１００６にて検出された負荷メトリック又は他の追跡されたメトリックの変化が対応する閾値を満たすか又は超える場合、現状モジュール２２８は、プロデューサシステムを誤動作中又は利用不可能と識別し得る。そのような場合、管理者などのユーザが、負荷メトリックがもはや利用不可能又は誤動作中とのプロデューサシステム１０６の識別に関連した閾値に到達した場合に警告され得る。更に、場合によっては、ユーザは、負荷メトリック又は選択重みがプロデューサシステム１０６の利用可能性に関係なく閾値を変える場合に警告され得る。
【０１１０】
ある特定の実施形態において、プロデューサシステム１０６に関連した選択重みは、先述したプロセス４００に関連したブロック４１０の一部として利用可能なプロデューサシステム１０６をコンシューマシステムへのリースに選択するのを容易にするために使用され得る。選択重み及び／又はプロデューサシステム１０６の利用可能性の現状は、プロデューサリポジトリ２２０及び／又はエージェントリポジトリ２０６にて記憶され得る。
【０１１１】
オーバーレイネットワーク環境概要
図１１は、プロデューサシステムによってホスティングされたサービスへのアクセスをコンシューマシステムに提供するオーバレイネットワーク環境１１００の実施形態を例示する。オーバーレイネットワーク環境１１００は、１つ以上のオーバーレイネットワーク又は仮想ネットワークを１つ以上の組織又は事業体に提供することができる任意の種類のシステムを含むことができる。これらのオーバーレイネットワークは、物理又は非仮想ネットワークを形成し得るコンピューティングハードウェアによって実施され得る。本開示と共に使用され得るオーバレイ又は仮想ネットワークのいくつかの実施例が、２０１０年６月３０日出願の米国特許出願第１２／８２７，２６８号（現在米国特許第８，２９６，４５９号）で説明されており、この特許の全体が引用により本明細書に組み入れられる。
【０１１２】
オーバーレイネットワーク環境１１００は、リースエージェント１０２、コンシューマホスト１１０４、及びプロデューサホスト１１０６を含み、それらの各々はネットワーク２０２を介して互いと通信し得る。リースエージェント１０２の各々は、図２に関して例示及び説明したサブシステムの一部又は全部を含み得る。したがって、例えば、リースエージェント１０２は、プロデューサリポジトリ２２０と、分割システム２２２と、リースシステム２２４と、登録モジュール２２６と、現状モジュール２２８とを含み得る。リースエージェント１０２のこれらのサブシステムの各々は、図２に関して先述したのと同じ機能性を含むことができるが、場合によっては、これらのサブシステムは、修正されたか、又は更なる能力を含み得る。例えば、コンシューマシステム１０４及びプロデューサシステム１０６に関係する現状情報を受信することに加えて又はその代わりに、現状モジュール２２８は、コンシューマホスト１１０４、プロデューサホスト１１０６、コンシューマ仮想マシン１１４２、及びプロデューサ仮想マシン１１６２のうちの１つ以上に関係する現状情報を受信することができる。同様に、プロデューサリポジトリ２２０は、コンシューマホスト１１０４、プロデューサホスト１１０６、コンシューマ仮想マシン１１４２、及びプロデューサ仮想マシン１１６２のうちの１つ以上に関係する情報を含むことができる。
【０１１３】
場合によっては、分割システム２２２は、プロデューサ仮想マシン１１６２をオーバーレイネットワーク環境１１００のリースエージェント１０２間で分割するために使用することができる。更に、特定のオーバーレイネットワークに関連したプロデューサ仮想マシン１１６２は、他のオーバーレイネットワークに関連したプロデューサ仮想マシン１１６２から独立して分割することができる。したがって、例えば、プロデューサ仮想マシンＢ’は、プロデューサ仮想マシンＢ’’から独立してリースエージェント１０２に対して分割され得る。場合によっては、利用可能なリースエージェント１０２のサブセットが、特定のオーバーレイネットワークに関連づけられ得る。そのような場合、特定のオーバーレイネットワークに関連したプロデューサ仮想マシン１１６２及びコンシューマ仮想マシン１１４２は、利用可能なリースエージェント１０２のサブセットに通信を限定し得る。
【０１１４】
更に、リースシステム２２４は、プロデューサ仮想マシン１１６２及びコンシューマ仮想マシン１１４２が関連するオーバーレイネットワークに基づいてコンシューマ仮想マシン１１４２にリースするべきプロデューサ仮想マシン１１６２を選択し得る。場合によっては、オーバーレイネットワークに基づいてプロデューサ仮想マシン１１６２を選択することは、コンシューマシステム１０４に最小するべきプロデューサシステム１０６を選択することに関して先述の要素に追加され得る。更に、登録モジュール２２６は、プロデューサ仮想マシン１１６２をリースエージェント１０２に登録するために使用することができる。
【０１１５】
単一のコンシューマホスト１１０４のみを図１１に例示するが、オーバーレイネットワーク環境は、複数のコンシューマホスト１１０４を含むことができる。コンシューマホスト１１０４の各々は、いくつかのコンシューマ仮想マシン１１４２を含み得る。コンシューマ仮想マシン１１４２のいくつかは、コンシューマホスト１１０４によってホスティングされた他のコンシューマ仮想マシン１１４２と異なるオーバーレイネットワークに関連し得る。例えば、コンシューマホスト１１０４は、異なるオーバーレイネットワークに各々関連した２つのコンシューマ仮想マシン１１４２を含む。コンシューマ仮想マシンＡ’は、プロデューサ仮想マシンＢ’も含み得る第１のオーバーレイネットワークに関連し得、コンシューマ仮想マシンＡ’’は、プロデューサ仮想マシンＢ’’も含み得る第２のオーバーレイネットワークに関連し得る。
【０１１６】
コンシューマ仮想マシン１１４２に加えて、コンシューマホスト１１０４は、オーバーレイネットワークプロキシ１１１４と、リースリクエスタ１１３０と、仮想マシンマッピングリポジトリ１１５０と、現状モジュール１１３２とを含み得る。オーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２からのサービス要求を処理することができ、かつ、プロデューサ仮想マシン１１６２をホスティングしているプロデューサホスト１１０６に処理のサービス要求を提供することができる任意のシステムを含むことができる。いくつかの実施形態において、コンシューマ仮想マシン１１４２から受信されたサービス要求は、コンシューマ仮想マシン１１４２がそれサービス要求を処理することができると信じるプロデューサ仮想マシン１１６２又は存在しないシステムに関連した仮想アドレスを含み得る。仮想アドレスと共にサービス要求を受信すると、オーバーレイネットワークプロキシ１１１４は、サービス要求を提供したコンシューマ仮想マシン１１４２と同じオーバーレイネットワークにおいてサービス要求を処理するプロデューサ仮想マシン１１６２を識別することができる。オーバーレイネットワークプロキシ１１１４は、その後、仮想アドレスを識別されたプロデューサ仮想マシン１１６２のアドレスと入れ替えることができる。以下で更に詳細に説明するように、プロデューサ仮想マシン１１６２は、サービス要求を提供したコンシューマ仮想マシン１１４２に関連したリースされたプロデューサ仮想マシン１１６２のプールから識別され得る。更に、オーバーレイネットワークプロキシ１１１４は、識別されたプロデューサ仮想マシン１１６２をホスティングするプロデューサホスト１１０６を識別し、かつ、コンシューマホスト１１０４を識別するヘッダ又は外側ヘッダでサービス要求をラッピング又はカプセル化することができる。
【０１１７】
仮想マシンマッピングリポジトリ１１５０は、コンシューマ仮想マシン１１４２のためにリースされるプロデューサ仮想マシン１１６２のプールを記憶することができる。更に、仮想マシンマッピングリポジトリ１１５０は、プロデューサ仮想マシン１１６２をホスティングする対応するプロデューサホスト１１０６の識別情報を記憶することができる。プロデューサ仮想マシン１１６２及びプロデューサホスト１１０６の識別情報を記憶することは、プロデューサ仮想マシン１１６２及びプロデューサホスト１１０６にアクセスするアドレス指定情報を記憶することを含むことができる。
【０１１８】
コンシューマ仮想マシン１１４２のためにリースを取得するために、コンシューマホスト１１０４は、コンシューマホスト１１０４によってホスティングされたコンシューマ仮想マシン１１４２のためにリース要求を生成することができるリースリクエスタ１１１８を含むことができる。リースリクエスタ１１１８は、プロデューサ仮想マシン１１６２のリースが要求されている特定のオーバーレイネットワーク及び／又は特定のコンシューマ仮想マシン１１４２を識別することができる。
【０１１９】
現状モジュール１１３２は、現状モジュール２４２に関して上述の実施形態の一部又は全てを含むことができる。更に、現状モジュール１１３２はプロデューサ仮想マシン１１６２及びプロデューサホスト１１０６との通信に基づいてプロデューサ仮想マシン１１６２及び／又はプロデューサホスト１１０６の現状情報を提供することができる。
【０１２０】
コンシューマホスト１１０４の場合と同様に、オーバーレイネットワーク環境１１００は、各々が１つ以上のオーバーレイネットワークに関連した１つ以上のプロデューサ仮想マシン１１６２を含むことができる任意の数のプロデューサホスト１１０６を含むことができる。更に、プロデューサホスト１１０６の各々は、オーバーレイネットワークプロキシ１１１６と、仮想マシンマッピングリポジトリ１１５２と、現状モジュール１１３４とを含むことができる。
【０１２１】
オーバーレイネットワークプロキシ１１１４と同様に、オーバーレイネットワークプロキシ１１１６は、コンシューマホスト１１０４から受信されたサービス要求を処理し、かつ、受信されたサービス要求に対する応答を処理する任意のシステムを含むことができる。サービス要求を受信すると、オーバーレイネットワークプロキシ１１１６は、サービス要求のヘッダ内に含まれる情報に基づいてサービス要求を処理するプロデューサ仮想マシン１１６２を判定することができる。更に、場合によっては、サービス要求はサービス要求を処理するためにプロデューサ仮想マシン１１６２を識別するのを容易にするために使用され得る特定のオーバーレイネットワークを識別し得る。
【０１２２】
仮想マシンマッピングリポジトリ１１５２は、どのプロデューサ仮想マシン１１６２がどのオーバーレイネットワークに関連しているかを識別する情報を記憶することができる。更に、仮想マシンマッピングリポジトリ１１５２は、どのコンシューマホスト１１０４が特定のコンシューマ仮想マシン１１４２をホスティングするか識別するのを容易にする情報を記憶することができる。この情報は、サービス要求に対する応答を提供するコンシューマホスト１１０４を判定するために使用することができる。
【０１２３】
現状モジュール１１３２の場合と同様に、現状モジュール１１３４は現状モジュール２６２に関して先述の実施形態の１つ以上を含むことができる。更に、現状モジュール１１３４はプロデューサ仮想マシン１１６２に関係する現状情報をリースエージェント１０２に提供することができる。
【０１２４】
コンシューマホスト１１０４及びプロデューサホスト１１０６の破線によって示すように、本明細書で開示するプロセスを可能にする下層システムは、コンシューマ（例えば、クライアント）及びプロデューサ（例えば、サーバ又はサービスプロバイダ）のうちの１つ以上のオーバーレイネットワークを形成する仮想マシンから分離することができる。場合によっては、下層システム（例えば、オーバーレイネットワークプロキシ１１１４及び１１１６）は、コンシューマホスト１１０４及びプロデューサホスト１１０６のネットワーキングインフラストラクチャの一部として実施することができる。有利なことに、ある特定の実施形態において、下層システムを仮想マシンから分離することによって、リース構造は、オーバーレイネットワークに影響を与えることなく実施、維持、及び修正することができる。
【０１２５】
いくつかの実施形態において、コンシューマホスト１０４は、コンシューマ仮想マシン１１４２及びプロデューサ仮想マシン１１６２の両方をホスティングすることができる。更に、場合によっては、プロデューサホスト１１０６は、コンシューマ仮想マシン１１４２及びプロデューサ仮想マシン１１６２の両方をホスティングすることができる。更に、コンシューマ仮想マシン１１４２及びプロデューサ仮想マシン１１６２は、仮想マシンとして説明したが、そのようなものとして限定されるものではない。いくつかの実施形態において、オーバーレイネットワークは、コンシューマホスト１１０４及びプロデューサホスト１１０６の一部であるか、又は、コンシューマホスト１１０４及びプロデューサホスト１１０６によって実行されるハードウェアリソース及び／又はソフトウェアリソースを割り当てられ得る。これらのリソースは、オーバーレイネットワークの一部としてプロデューサシステム及びコンシューマシステムを実行するために仮想マシンの内に配置された使用され得る。
【０１２６】
場合によっては、ネットワーク環境１００に関して先述のプロセスのうちの１つ以上は、オーバーレイネットワーク環境１１００に関して実行され得るか、又は、実行されるために修正され得る。したがって、例えば、プロセス９００は、オーバーレイネットワーク環境１１００においてリースエージェントを再分割するために実行され得る。第２の実施例として、プロセス７００及び８００は、オーバーレイネットワーク環境１１００においてプロデューサ仮想マシン１１６２をリースエージェント１０２に登録するために実行することができる。
【０１２７】
プロデューサ仮想マシンのサービスにアクセスする例示的なプロセス
図１２は、プロデューサ仮想マシンでのサービスにアクセスするプロセス１２００の実施形態を例示する。プロセス１２００は、プロデューサ仮想マシンによって提供されるサービスにアクセスするコンシューマ仮想マシンからの要求を処理することができる任意のシステムによって実行することができる。例えば、プロセス１２００は、全体的に又は部分的に、少し例を挙げれば、コンシューマホスト１１０４、リースエージェント１０２、オーバーレイネットワークプロキシ１１１４、及びリースリクエスタ１１１８によって実施することができる。任意の数のシステムが、全部、一部を問わず、プロセス１２００を実施することができるが、論じる内容を簡素化するために、プロセス１２００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１２８】
場合によっては、プロセス１２００はコンシューマ仮想マシンがプロデューサシステムによって提供されるサービスにアクセスすることを可能にするために使用され得る。同様に、いくつかの実施形態において、プロセス１２００は、コンシューマシステムがプロデューサ仮想マシンによって提供されるサービスにアクセスすることを可能にするために使用され得る。しかしながら、論じる内容を簡素化するために、プロセス１２００を、プロデューサ仮想マシンのサービスにアクセスしようとするコンシューマ仮想マシンに関して説明する。
【０１２９】
プロセス１２００は、ブロック１２０２にて始まり、例えば、コンシューマホスト１１０４（例えば、コンシューマホストＡ）のオーバーレイネットワークプロキシ１１１４は、プロデューサでのサービスにアクセスする要求をコンシューマ仮想マシン１１４２（例えば、コンシューマ仮想マシンＡ’）から受信する。あるいは又は更に、ブロック１２０２にて受信された要求は、プロデューサに提供されるデータパケットであり得る。例えば、データパケットは、サービスに関連して使用されるか、又は、コンシューマ仮想マシンが既にアクセスを確立されているプロデューサでのサービスの使用を容易にするデータであり得る。いくつかの実施形態において、要求は、要求又はパケットがコンシューマ仮想マシン１１４２に関連したアドレスＡから仮想アドレスＸにアドレス指定されることを示すヘッダを有するパケットを含み得る。例えば、受信されたパケットは、以下の通り、即ち、データがΑ'からＸに送られていることを示す｛Ａ’，Ｘ，データ｝であり得る。パケットのデータフィールドは、要求、及び／又は、プロデューサ仮想マシン１１６２にて要求又は動作を実行するのを容易にするデータを含み得る。ある特定の実施形態において、コンシューマ仮想マシン１１４２は、アドレスＸが仮想アドレスであることを認識しておらず、その代わりに、アドレスＸは物理プロデューサシステムを指すと考える場合がある。更に、先述のように、いくつかの実施形態において、オーバーレイネットワークは、コンシューマ仮想マシン以外の、又は、コンシューマ仮想マシンに加えてコンシューマシステムを含み得る。そのような実施形態において、ブロック１２０２は、コンシューマホスト１１０４の上で実施されるか、又は、コンシューマホスト１１０４によってホスティングされた、プロデューサでのサービスにアクセスする要求をコンシューマシステムから受信することを含み得る。同様に、プロデューサホストは、コンシューマシステムにサービスを提供するように構成され得るプロデューサ仮想マシン以外の、又は、該プロデューサ仮想マシンに加えてプロデューサシステムを含み得る。
【０１３０】
決定ブロック１２０４にて、オーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２に関連した未使用プロデューサ仮想マシンリースがあるかどうか判定する。コンシューマ仮想マシン１１４２に関連した未使用プロデューサ仮想マシンリースがあるかどうか判定することは、仮想マシンマッピングリポジトリ１１５０にアクセスして、コンシューマ仮想マシン１１４２に関連したリースプールがあるかどうか判定することを含み得る。更に、場合によっては、決定ブロック１２０４は、リースプールがコンシューマ仮想マシン１１４２に関連したプロデューサ仮想マシンについて未使用リースを含むかどうか判定することを含み得る。
【０１３１】
オーバーレイネットワークプロキシ１１１４が決定ブロック１２０４にてコンシューマ仮想マシン１１４２に関連した未使用プロデューサ仮想マシンリリース（ｍａｃｈｉｎｅ  ｒｅｌｅａｓｅ）がないと判定した場合、リースリクエスタ１１３０は、ブロック１２０６にてプロデューサ仮想マシンにアクセスするために複数のリースを取得する。１つ以上のプロデューサ仮想マシンにアクセスするために１つ以上のリースを取得するプロセスの実施例を以下で図１４に関して更に詳細に説明する。
【０１３２】
ブロック１２０８にて、オーバーレイネットワークプロキシ１１１４は、ブロック１２０６にて取得されたリースされたプロデューサ仮想マシン１１６２との接続を確立しようとする。場合によっては、ブロック１２０８は、オーバーレイネットワークプロキシ１１１４が失敗せずに接続を確立する各々のリースされたプロデューサ仮想マシンに関連したリース情報を記憶することを含むことができる。
【０１３３】
オーバーレイネットワークプロキシ１１１４が、ブロック１２０８にて、リースされたプロデューサ仮想マシンとの接続を確立した後、又は、オーバーレイネットワークプロキシ１１１４が決定ブロック１２０４にてコンシューマ仮想マシン１１４２に関連した未使用プロデューサ仮想マシンリリースがあると判定した場合、プロセス１２００は、ブロック１２１０に進む。ブロック１２１０にて、オーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２によって要求されたサービスにアクセスするリースされたプロデューサ仮想マシン１１６２を選択する。プロデューサ仮想マシン１１６２は、ラウンドロビン又は最小時間未参照など任意の種類の選択アルゴリズムを使用して選択され得る。他の場合において、プロデューサ仮想マシン１１６２は、接続がプロデューサ仮想マシン１１６２と確立された順番に基づいて選択され得る。更に他の場合において、プロデューサ仮想マシン１１６２は、ランダムに選択され、及び／又は、あのブロック１２０２受信されたサービス要求に基づいて選択され得る。あるいは、場合によっては、オーバーレイネットワークプロキシ１１１４は、仮想マシンマッピングリポジトリ１１５０にアクセスして、プロデューサ仮想マシン１１４２を選択するのを容易にし得る。例えば、オーバーレイネットワークプロキシ１１１４は、リースプールにアクセスし得、リースプールは、仮想マシンマッピングリポジトリ１１５０にて記憶された、利用可能なプロデューサ仮想マシン１１６２を識別するテーブルとして記憶され得る。
【０１３４】
場合によっては、オーバーレイネットワークプロキシ１１１４は、閾値を下回る負荷を有するリースされたプロデューサ仮想マシン１１６２を選択し得る。そのような場合、オーバーレイネットワークプロキシ１１１４は、プロデューサからランダムに閾値を下回る負荷を有する仮想マシン１１６２を選択し得る。この負荷は、プロデューサ仮想マシン１１６２の利用に関係する任意の測定可能なメトリックを指し得る。例えば、負荷は、プロセッサ負荷、ネットワーク接続負荷、プロデューサ仮想マシン１１６２とのいくつかコンシューマ接続、接続における最低待ち時間、プロデューサ仮想マシン１１６２のパフォーマンスの目安などを指し得る。
【０１３５】
更に、場合によっては、各リースは、経費に関連し得る。例えば、コンシューマ又はコンシューマに関連した事業体は、秒単位の使用について、メガ単位の通信又は処理されたデータのバイトについて、又は、計算サイクル時間単位のプロデューサ仮想マシン１１６２について課金され得る。そのような場合、オーバーレイネットワークプロキシ１１１４は、利用可能なリースされたプロデューサ仮想マシン１１６２の経費に基づいてリースされたプロデューサ仮想マシン１１６２を選択し得る。
【０１３６】
ブロック１２１２にて、オーバーレイネットワークプロキシ１１１４は、要求ヘッダ（例えば、内側ヘッダ）内に含まれるプロデューサのアドレス（例えば、仮想アドレスＸ）をブロック１２１０にて選択されたリースされたプロデューサ仮想マシン１１６２のアドレスと入れ替える。したがって、例えば、ブロック１２０２にて受信されたパケットは、この時点で、以下の通り、即ち、｛Ａ’，Ｂ’，データ｝であり得る。いくつかの実施形態において、ブロック１２１２は、随意的であり得る。例えば、いくつかの実施形態において、各々のリースされたプロデューサ仮想マシン１１６２は、ポートに関連し得る。したがって、仮想アドレスＸをリースされたプロデューサ仮想マシン１１６２のアドレスと入れ替える代わりに、パケットは、リースされたプロデューサ仮想マシン１１６２に関連したポートを介してホスティングプロデューサに通信され得る。第２の実施例として、パケットは、プロデューサホストに通信され得、プロデューサホストは、例えば、仮想アドレスＸに基づいてパケットを受信するリースされたプロデューサ仮想マシン１１６２を判定し得る。
【０１３７】
ブロック１２１４にて、オーバーレイネットワークプロキシ１１１４は、リースされたプロデューサ仮想マシンに関連したプロデューサホスト１１０６を識別する。プロデューサホスト１１０６は、仮想マシンマッピングリポジトリ１１５０にて記憶された状態テーブルにアクセスすることによって識別され得る。
【０１３８】
オーバーレイネットワークプロキシ１１１４は、ブロック１２１６にて、ブロック１２１４にて識別されたプロデューサホスト１１０６及びコンシューマ仮想マシン１１４２に関連したコンシューマホスト１１０４を識別する外側ヘッダで要求をカプセル化する。したがって、例えば、パケットは、この時点で以下の通り、即ち、｛Ａ，Ｂ｛Ａ’，Ｂ’，データ｝｝であり、これは、パケットがコンシューマホストＡからプロデューサホストＢに送られていることを示す。あるいは、場合によっては、プロデューサホスト１１０６及びコンシューマホスト１１０４の識別情報が、ブロック１２０２にて受信された要求と共に含まれ得るか、又は、該要求の要求ヘッダに追加され得、パケットは、以下の通り、即ち｛Ａ，Ｂ，Ａ’，Ｂ’，データ｝であり得、これは、パケットがコンシューマホストＡからプロデューサホストＢに送られていることを示す。そのような場合、ブロック１２１６に関連したプロセスが完了した後、要求は、内側ヘッダ及び外側ヘッダを含む２つのヘッダの代わりに単一のヘッダを含む。いくつかの実施形態において、ブロック１２１６は、ブロック１２０２にて要求を提供したコンシューマ仮想マシン１１４２及びブロック１２１０にて識別されたプロデューサ仮想マシン１１６２に関連したオーバーレイネットワークの識別情報を含み得る。したがって、例えば、パケットは、要求は、’’、つまり、第２のオーバーレイネットワークではなくて、‘、つまり、第１のオーバーレイネットワークに関連することを示し、以下の通り、即ち、｛Ａ，Ｂ，‘，Ａ’，Ｂ’，データ｝であり得、これは、パケットがコンシューマホストＡからプロデューサホストＢに送られており、かつ、サービス要求は、コンシューマ仮想マシンから‘オーバーレイネットワーク内に含まれたプロデューサ仮想マシンへであることを示す。有利なことに、いくつかの実施形態において、サービス要求及びサービス要求に対する応答とともにオーバーレイネットワークの識別情報を含むことによって、アドレスは、異なるオーバーレイネットワーク間で再利用され得る。しかしながら、各仮想マシン及び各システムが固有のアドレスに関連している場合において、オーバーレイネットワークの識別情報を提供することは、随意的であり得る。
【０１３９】
いくつかの実施形態において、オーバーレイネットワークプロキシ１１１４は、仮想マシンマッピングリポジトリ１１５０にて記憶された状態管理テーブルからプロデューサ仮想マシンにアクセスすることにアドレス情報を判定することができる。この状態管理テーブルは、ブロック１２１０にて選択されたリースされたプロデューサ仮想マシン１１６２にアクセスする接続情報を含むことができる。更に、状態管理テーブルは、プロデューサ仮想マシンアドレスへの仮想アドレスのマッピングを含むことができる。更に、状態管理テーブルは、それぞれのプロデューサホストへのプロデューサ仮想マシン１１６２のマッピングを含むことができる。仮想アドレスをプロデューサ仮想マシンにマッピングするそのような状態管理テーブルの実施例を図１５に例示する。
【０１４０】
ブロック１２１８にて、オーバーレイネットワークプロキシ１１１４は、要求をブロック１２１４にて識別されたプロデューサホストに提供する。この要求は、ネットワーク２０２を介してプロデューサホスト１１０６に提供され得る。
【０１４１】
プロデューサ仮想マシンでのサービスにアクセスする要求を処理する例示的なプロセス
図１３は、プロデューサ仮想マシンでのサービスにアクセスする要求を処理するプロセス１３００の実施形態を例示する。プロセス１３００は、コンシューマホストから受信された、プロデューサ仮想マシンでのサービスにアクセスする要求を処理することができる任意のシステムによって実施することができる。例えば、プロセス１３００は、全体的に又は部分的に、少し例を挙げれば、プロデューサホスト１１０６、オーバーレイネットワークプロキシ１１１６、及びプロデューサ仮想マシン１１６２によって実施することができる。任意の数のシステムが、全部、一部を問わず、プロセス１３００を実施することができるが、論じる内容を簡素化するために、プロセス１３００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１４２】
場合によっては、プロセス１３００は、プロデューサ仮想マシンがコンシューマシステムによって要求されたサービスを提供することを可能にするために使用され得る。同様に、いくつかの実施形態において、プロセス１３００は、プロデューサシステムがコンシューマ仮想マシンによって要求されたサービスを提供することを可能にするために使用され得る。しかしながら、論じる内容を簡素化するために、プロセス１３００を、コンシューマ仮想マシンによって要求されたサービスへのアクセスを提供するプロデューサ仮想マシンに関して説明する。
【０１４３】
プロセス１３００は、ブロック１３０２にて始まり、例えば、プロデューサホスト１１０６（例えば、プロデューサホストＢ）のオーバーレイネットワークプロキシ１１１６は、要求をコンシューマホスト１１０４から受信する。要求は、形式化され得、例えば、以下の通り、即ち、｛Ａ，Ｂ，‘，Ａ’，Ｂ’，データ｝であり得、これは、パケットがコンシューマホストＡから受信されて、プロデューサホストＢを対象としており、かつ、サービス要求は、コンシューマ仮想マシンから’オーバーレイネットワーク内に含まれたプロデューサ仮想マシンへであることを示す。多くの場合、受信された要求は、プロデューサホスト１１０６によって郵送されたプロデューサ仮想マシン１１６２によってホスティングされたサービスにアクセスする要求である。しかしながら、場合によっては、受信された要求は、その代わりに、アクセスがコンシューマホスト１１０４によってホスティングされたコンシューマ仮想マシン１１４２によって既に確立されたサービスを実行するのを容易にするデータをプロデューサ仮想マシン１１６２に提供するように構成されたデータパケットであり得る。
【０１４４】
ブロック１３０４にて、オーバーレイネットワークプロキシ１１１６は、要求を受信するプロデューサ仮想マシン１１６２（例えば、プロデューサ仮想マシンＢ’）を判定する。いくつかの実施形態において、ブロック１３０４は、外側ヘッダをブロック１３０２にて受信された要求からカプセル化解除することを含み得る。そのような場合、パケットは、以下の通り、即ち、｛Ａ’，Ｂ’，データ｝であり得、これは、パケットがコンシューマ仮想マシンＡ’から受信されており、かつ、プロデューサ仮想マシンＢ’を対象としていることを示す。そのような場合、オーバーレイネットワークプロキシ１１１６は、内側ヘッダにアクセスしてプロデューサ仮想マシン１１６２を識別し得る。あるいは又は更に、オーバーレイネットワークプロキシ１１１６は、外側ヘッダにアクセスすることによって要求を受信するプロデューサ仮想マシン１１６２を識別し得る。
【０１４５】
場合によっては、オーバーレイネットワークプロキシ１１１６は、外側ヘッダがない要求をブロック１３０４にて識別されたプロデューサ仮想マシン１１６２に提供する。したがって、パケットは、以下の通り、即ち、｛Ａ’，Ｂ’，データ｝であり得る。しかしながら、他の場合において、要求は、受信された要求と共に含まれる場合には外側ヘッダ付きであることを含め、コンシューマホスト１１０４から受信されたように提供され得る。したがって、パケットは、ブロック１３０２にて受信されたよう（例えば、｛Ａ，Ｂ，‘，Ａ’，Ｂ’，データ｝）であり得る。
【０１４６】
ブロック１３０８にて、オーバーレイネットワークプロキシ１１１６は、ブロック１３０２にて受信された要求を生成させたコンシューマ仮想マシン１１４２にアドレス指定された応答をプロデューサ仮想マシン１１６２から受信する。いくつかの実施形態において、応答は、異なるコンシューマ仮想マシンにアドレス指定され得る。例えば、コンシューマ仮想マシンからの要求は、ファイルをプロデューサ仮想マシンから別のコンシューマ仮想マシンに転送する要求であり得る。このパケットは、ブロック１２０２にて受信されたパケットと類似のものであり得、以下の通り、即ち、｛Ｂ’，Ａ’，データ｝であり得、これは、プロデューサ仮想マシンＢ’がデータ（例えば、サービス要求に対する応答）をコンシューマ仮想マシンＡ’に送っていることを示す。ブロック１３１０において、オーバーレイネットワークプロキシ１１１６は、コンシューマ仮想マシン１１４２に関連したコンシューマホスト１１０４を識別する。コンシューマホスト１１０４は、仮想マシンマッピングリポジトリ１１５２にてマッピングテーブルにアクセスすることによって識別され得る。このマッピングテーブルは、コンシューマ仮想マシン１１４２をホスティングするコンシューマホスト１１０４にコンシューマ仮想マシン１１４２をマッピングし得る。典型的には、各コンシューマホスト１１０４は、複数のコンシューマ仮想マシン１１４２をホスティングし得る。しかしながら、いくつかの場合１つ以上のコンシューマホスト１１０４は、単一のコンシューマ仮想マシン１１４２をホスティングし得る。
【０１４７】
オーバーレイネットワークプロキシ１１１６は、ブロック１３１２にて、コンシューマホスト１１０４及びプロデューサ仮想マシン１１６２に関連したプロデューサホスト１１０６を識別する外側ヘッダで応答をカプセル化する。したがって、パケットは、以下の通り、即ち、｛Ｂ，Ａ｛Β’，Ａ’，データ｝｝であり得る。ブロック１２１６に関して説明したように、場合によっては、コンシューマホスト１１０４及びプロデューサホスト１１０６の識別情報は、ブロック１３０８にて受信された応答の既存のヘッダと共に含まれるか、又は、該ヘッダに追加され得る。したがって、パケットは、以下の通り、即ち、｛Ｂ，Ａ，Ｂ’，Ａ’，データ｝であり得る。同様に、ブロック１２１６に関して説明したように、外側ヘッダ、又は、１つのヘッダのみが存在する場合には応答のヘッダは、プロデューサ仮想マシン１１６２及びコンシューマ仮想マシン１１４２に関連したオーバーレイネットワークの識別情報を含み得る。したがって、パケットは、以下の通り、即ち、｛Ｂ，Ａ，‘，Ｂ’，Ａ’，データ｝であり得る。
【０１４８】
プロデューサホスト１１０６は、ブロック１３１４にてコンシューマホスト１１０４に対する応答を提供する。いくつかの実施形態において、プロデューサホスト１１０６は、ネットワーク２０２を介して応答を提供し得る。
【０１４９】
いくつかの実施形態において、コンシューマホスト１１０４は、プロセス１３００又は類似のプロセスを実行して、ブロック１３０８にて受信された応答を対応するコンシューマ仮想マシン１１４２に提供し得る。更に、場合によっては、コンシューマホスト１１０４のオーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２によって提供された初期要求を作成するために使用された仮想アドレス（例えば、仮想アドレスＸ）を識別し得る。この識別された仮想アドレスを使用して、オーバーレイネットワークプロキシ１１１４は、プロデューサ仮想マシン１１６２を識別する受信された応答内のアドレスをコンシューマ仮想マシン１１４２によって提供された初期要求を作成するために使用された仮想アドレスと入れ替え得る。したがって、例えば、パケットがコンシューマ仮想マシンＡ’に提供される前に、パケットは、以下の通り、即ち、｛Ｘ，Ａ’，データ｝に再構築され得、これは、応答は、パケット内に含まれたデータを実際に生成した可能性があるプロデューサ仮想マシンＢ’からではなくシステムＸから受信されたことを示す。
【０１５０】
プロデューサ仮想マシンへのアクセスをリースする例示的なプロセス
図１４は、プロデューサ仮想マシンへのアクセスをリースするプロセス１４００の実施形態を例示する。プロセス１４００は、プロデューサ仮想マシン１１６２（例えば、プロデューサ仮想マシンＢ’）にアクセスするリースを取得することができる任意のシステムによって実施することができる。例えば、プロセス１４００は、全体的に又は部分的に、少し例を挙げれば、コンシューマホスト１１０４リースリクエスタ１１３０、リースエージェント１０２、オーバーレイネットワークプロキシ１１１４、及びリースシステム２２４によって実行することができる。任意の数のシステムが、全部、一部を問わず、プロセス１４００を実施することができるが、論じる内容を簡素化するために、プロセス１４００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１５１】
プロセス１４００は、ブロック１４０２にて始まり、例えば、リースリクエスタ１１３０は、オーバーレイネットワークに関連したコンシューマ仮想マシン１１４２のためにプロデューサ仮想マシン１１６２へのリースを取得する要求を生成する。ブロック１４０２に関連したプロセスは、コンシューマ仮想マシン１１４２の初期化時に発生し得る。あるいは又は更に、ブロック１４０２は、（例えば、プロセス１２００に関連した決定ブロック１２０４にて判定され得るように）コンシューマ仮想マシン１１４２に関連した未使用プロデューサ仮想マシンリースがないという判定に応答して発生し得る。
【０１５２】
ブロック１４０４にて、リースリクエスタ１１３０は、要求を複数のリースエージェント１０２に提供する。いくつかの実施形態において、複数のリースエージェント１０２は、オーバーレイネットワーク環境１１００内に含まれるリースエージェント１０２のサブセットを含み得る。更に、場合によっては、要求は、単一のリースエージェント１０２に提供され得る。
【０１５３】
ブロック１４０６にて、リースリクエスタ１１３０は、複数のリースエージェント１０２の各々から、要求がブロック１４０２にて生成されたコンシューマ仮想マシン１１４２と同じオーバーレイネットワークに関連したプロデューサ仮想マシン１１６２の識別情報を受信する。典型的には、複数のリースエージェント１０２の各々は、単一のプロデューサ仮想マシン１１６２の識別情報を提供する。しかしながら、場合によっては、リースエージェント１０２のうちの１つ以上は、複数のプロデューサ仮想マシン１１６２の識別情報を提供し得る。更に、リースエージェント１０２がゼロプロデューサ仮想マシン１１６２の識別情報を提供することが可能である。例えば、特定のリースエージェント１０２に関連した各プロデューサ仮想マシン１１６２が閾値利用率を超えて利用される場合、リースエージェント１０２は、プロデューサ仮想マシン１１６２の識別情報を提供しない場合がある。そのような場合、リースエージェント１０２は、リースエージェント１０２に関連した各プロデューサ仮想マシン１１６２が閾値利用率を超えて利用されることを管理者などユーザに警告し得る。
【０１５４】
いくつかの実施形態において、プロデューサ仮想マシン１１６２の識別情報を受信することに加えて、プロデューサ仮想マシン１１６２をリースすることに関連したリース情報は、ブロック１４０６にて受信され得る。このリース情報は、プロデューサ仮想マシン１１６２にアクセスするアドレス、プロデューサ仮想マシン１１６２をホスティングするプロデューサホスト１１０６の識別情報及び／又はアドレス、及び／又は、プロデューサ仮想マシン１１６２のリースのためにコンシューマ仮想マシン１１４２に割り当てられた消耗可能なリソースの量に関する消耗可能なリソースの識別情報を含み得る。この消耗可能なリソースは、プロデューサ仮想マシン１１６２のリース期間を測定する任意の種類のリソースを含み得る。例えば、消耗可能なリソースは、期間、いくつかの動作、プロデューサ仮想マシン１１６２によって処理され及び／又はプロデューサ仮想マシン１１６２から受信されるデータの量、又は、コンシューマ仮想マシン１１４２によるプロデューサ仮想マシン１１６２の利用を測定する任意の他のメトリックを含み得る。
【０１５５】
ブロック１４０８にて、オーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２のために、ブロック１４０６にて識別されたプロデューサ仮想マシン１１６２の各々にアクセスしようとする。いくつかの実施形態において、ブロック１４０８は、プロデューサ仮想マシン１１６２の各々との接続を確立しようとすることを含むことができる。他の実施形態において、ブロック１４０８はプロデューサ仮想マシン１１６２との確立された接続で通信しようとすることを含むことができる。ブロック１４１０にて、オーバーレイネットワークプロキシ１１１４は、リースプールに、各確立した接続に関係する接続情報を記憶する。この接続情報は、接続を識別する情報及びサービスにアクセスするために接続を使用する方法を含み得る。例えば、接続情報は、プロデューサ仮想マシン１１６２をホスティングするプロデューサホスト１１０６の識別情報のための消耗可能なリソースの識別情報など、ブロック１４０６の一部として受信された情報のいずれも含み得る。いくつかの実施形態において、リースプール及び／又は接続情報は、仮想マシンマッピングリポジトリ１１５０にて記憶され得る。
【０１５６】
プロセス３００と同様に、いくつかの実施形態において、プロセス１４００は、プロデューサ仮想マシン１１６２のリースを更新するために使用され得る。そのような実施形態において、ブロック１４０２は、プロデューサ仮想マシンの既存の又は以前に既存のリースを更新する要求を生成することを含み得る。更新要求は、既存のプロデューサ仮想マシンリースの識別情報を含み得る。更に、ブロック１４０６は、更新要求が許可されたかどうかの表示、及び、場合によっては、消耗可能なリソースの更なる付与に関係するリース情報（例えば、リース時間又はプロセッサ使用）を受信することを含み得る。
【０１５７】
状態管理テーブルの実施例
図１５は、オーバーレイネットワーク環境１１００における通信を促進するために使用することができる状態管理テーブル１５００の１つの非限定的な実施例を例示する。状態管理テーブル１５００は、コンシューマ仮想マシン１１４２とプロデューサ仮想マシン１１６２の間の通信を容易にするいくつかの情報を含むことができる。例えば、状態管理テーブル１５００はソースオーバーレイアドレス１５０２、ソースオーバーレイポート１５０４、仮想アドレス１５０６、及び宛先オーバーレイアドレス１５０８の列を含み得る。状態管理テーブル１５００中のテーブル見出し（例えば、ソースオーバーレイアドレス１５０２）のいくつかによって示すように、アドレスは、インターネットプロトコル（ＩＰ）アドレスであり得る。しかしながら、アドレスは、そのようなものとして制限されず、かつ、他の形を取るか、又は、他のプロトコルに従い得る。
【０１５８】
図１５の実施例において、状態管理テーブル１５００の例示する部分は、コンシューマ仮想マシンＡ’に関連する。仮想アドレス１５０６列に示すように、コンシューマ仮想マシンＡ’は、複数の仮想アドレスＸ及びＹを使用し得る。更に、各仮想アドレスは、複数のプロデューサ仮想マシンに関連した複数の宛先オーバーレイアドレスに関連し得る。例えば、仮想アドレスＹは、アドレスＫ’を有するプロデューサ仮想マシン及びアドレスＭ’を有するプロデューサ仮想マシンに関連し得る。複数の宛先アドレスが仮想アドレスにマッピングされ得るので、オーバーレイネットワークプロキシ１１１４は、また、ソースオーバーレイポート１５０４列に示すように、データパケットを正しい宛先に導くポートを識別し得る。したがって、サービス要求をプロデューサ仮想マシンＫ’に送るために、オーバーレイネットワークプロキシ１１１４は、仮想アドレスＹをＫ’のアドレスと置換してポートＰ１を使用することになる。同様に、サービス要求をプロデューサ仮想マシンＭ’に送るために、オーバーレイネットワークプロキシ１１１４は、仮想アドレスＹをＭ’のアドレスと置換して、ポートＰ２を使用することになる。
【０１５９】
多くの場合、オーバーレイネットワークは、解放型システム相互接続（ＯＳＩ）モデルのレイヤ３及び／又はレイヤ４を使用して実施され得る。典型的には、レイヤ３及び／又はレイヤ４を使用して実施されるオーバーレイネットワークについては、ネットワーキングインフラストラクチャは、ネットワーク全体にわたって通信しているアプリケーションに気付かない。これは、負荷バランシングをより難しくする可能性があり、それは、どれくらいのデータがコンシューマ仮想マシンとプロデューサ仮想マシンとの間で送信されることになるか推測的に予測することがより難しいからである。
【０１６０】
１つの解決法は、少なくとも部分的に、ＯＳＩモデルのレイヤ７を使用して実施されるプロトコルを認識する負荷分散システムを作成することである。そのようなシステムにおいて、オーバーレイネットワークプロキシ１１１４は、いくつかの実施形態において、コンシューマ仮想マシン１１４２により送信されているパケットを調べて、コンシューマ仮想マシン１１４２がアクセスしようとしているサービスの種類、又は、サービス要求に関連したプロトコルの種類、及び、サービス要求が同じ又は異なる種類の単一のサービス又は複数のサービス向けであるかどうかを判定することができる。したがって、例えば、オーバーレイネットワークプロキシ１１１４がコンシューマ仮想マシンはＨＴＴＰ要求を使用してウェブサイトへのアクセスを要求していると判定し、各ＨＴＴＰ要求が異なるウェブページ又はウェブページの異なる特徴に対するものである場合、オーバーレイネットワークプロキシ１１１４は、コンシューマ仮想マシン１１４２が、要求が異なるシステムにより処理されていることに認識せずに、処理に向けて異なる要求を異なるプロデューサ仮想マシン１１６２に送信することができる。したがって、場合によっては、単一の接続が、１組の接続で逆多重化され得る。オーバーレイネットワークプロキシ１１１４は、一連の要求を複数のプロデューサ仮想マシン１１６２に分割して、要求が処理される効率又は速度を増大させ得る。更に、オーバーレイネットワークプロキシ１１１４が、コンシューマ仮想マシン１１４２が多くの負荷をプロデューサ仮想マシン１１６２に発生させていると判定した場合、オーバーレイネットワークプロキシ１１１４は、要求及び／又は分割要求を処理しているプロデューサ仮想マシン１１６２を複数のプロデューサ仮想マシン１１６２間で交換することができる。プロデューサ仮想マシン１１６２を交換することは、場合によっては、要求識別子をサービス要求と関連づけることによって達成することができる。例えば、図１５の要求識別子１５１０列に例示するように、要求識別子Ｉ１を有するパケットは、プロデューサ仮想マシンＢ’のアドレスと交換される仮想アドレスＸを有することができる。同様に、要求識別子１２を有するパケットは、プロデューサ仮想マシンＤ’のアドレスと交換される仮想アドレスＸを有することができる。
【０１６１】
本開示の実施形態は、以下の条項に照らして説明することができる。
条項１
プロデューサシステムへのアクセスをリースしてプロデューサシステムによってホスティングされたサービスへのアクセスをリースする方法であって、
１つ以上のプロセッサを含むコンシューマシステムによって
複数のプロデューサシステムの１つのサービスにアクセスするリース要求を生成することと、
リース要求を複数のリースエージェントに提供することと、
プロデューサシステムの１つ以上の識別情報を個々のリースエージェントから受信することと、
複数のリースエージェントによって識別されたプロデューサシステムの少なくともいくつかとの接続を開始しようとすることと、
プロデューサシステムの少なくともいくつかの第１のプロデューサシステムとの接続を失敗せずに確立することに応答して、第１のプロデューサシステムによって提供されたサービスにアクセスすることと、を含む方法。
条項２
プロデューサシステムの１つ以上の識別情報を個々のリースエージェントから受信することは、異なるプロデューサシステムの識別情報を複数のリースエージェントのうちの少なくとも２つのリースエージェントから受信することを含む、条項１に記載の方法。
条項３
複数のリースエージェントの個々のリースエージェントのうちの少なくともいくつかは、プロデューサシステムの非等価組に関連する、条項１〜条項２に記載の方法。
条項４
プロデューサシステムの１つ以上の識別情報を個々のリースエージェントから受信することは、識別されたプロデューサシステムのうちの少なくともいくつかの消耗可能なリソースを受信することを含む、条項１〜条項３に記載の方法。
条項５
消耗可能なリソースは、リース時間、１組の計算サイクル、識別されたプロデューサシステム又はディスク記憶装置の使用に関連した財務予算を含むことができ、リース時間は、コンシューマシステムがプロデューサシステムでのサービスにアクセスすることを許可される一定期間を含む、条項４に記載の方法。
条項６
リース閾値を満たす第１のプロデューサシステムの消耗可能なリソースから残る消耗可能なリソースの量に応答して、この方法は、
消耗可能なリソースが満了する前には第１のプロデューサでのサービスにアクセスする既存のサービス要求が完了されないことになる確率を判定することと、
確率が更新閾値を満たすと判定することに応答して、第１のプロデューサシステムでのサービスにアクセスする更新リース要求を生成することと、
更新リース要求を、第１のプロデューサシステムの識別情報を提供した複数のリースエージェントのリースエージェントに提供することを更に含む、条項５に記載の方法。
条項７
更新リース要求をリースエージェントに提供することに応答して、この方法は、第１のプロデューサシステムの消耗可能なリソースの更新量を受信することを更に含む、条項６に記載の方法。
条項８
更新リース要求をリースエージェントに提供することに応答して、この方法は、新しいプロデューサシステムの消耗可能なリソースの新しい量を受信することを更に含み、新しいプロデューサシステムは、第１のプロデューサシステムと異なる、条項６〜条項７に記載の方法。
条項９
プロデューサシステムの少なくともいくつかの第１のプロデューサシステムとの接続を失敗せずに確立することに応答して、この方法は、メタデータを第１のプロデューサシステムから取得することを更に含み、メタデータの少なくとも一部は、第１のプロデューサシステムに関係する現状情報を含む、条項１〜条項８に記載の方法。
条項１０
メタデータの少なくとも一部を、第１のプロデューサシステムの識別情報を提供した複数のリースエージェントのリースエージェントに提供することを更に含む、条項９に記載の方法。
条項１１
メタデータの少なくとも一部を複数のリースエージェントに提供することを更に含む、条項９〜１０の記載の方法、
条項１２
プロデューサシステムのうちの少なくともいくつかの第２のプロデューサシステムとの接続を失敗せずに確立することに応答して、第２のプロデューサシステムでの第２のサービスにアクセスする、条項１〜条項１１に記載の方法。
条項１３
サービス及び第２のサービスは、同じサービスである、条項１２に記載の方法。
条項１４
サービスを使用してアクセスされるデータ及び第２のサービスを用いてアクセスされるデータは異なる、条項１２〜条項１３に記載の方法。
条項１５
プロデューサシステムへのアクセスをリースしてプロデューサシステムによってホスティングされたサービスへのアクセスを取得するシステムであって、
１つ以上のプロセッサを含むコンシューマシステム
を含み、コンシューマシステムは、
プロデューサシステムのサービスにアクセスするリース要求を生成し、
リース要求を複数のリースエージェントに提供し、
プロデューサシステムの識別情報を複数のリースエージェントのうちの少なくともいくつかから受信するように構成されたリースリクエスタを更に含み、
コンシューマシステムは、複数のリースエージェントによって識別されたプロデューサシステムのうちの少なくともいくつかとの接続を開始しようとするように構成された接続モジュールを更に含み、
コンシューマシステムは、接続モジュールが第１のプロデューサシステムとの接続を失敗せずに確立することに応答してプロデューサシステムのうちの少なくともいくつかの第１のプロデューサシステムでのサービスにアクセスするように構成されたリソースリクエスタを更に含む、システム。
条項１６
リースリクエスタは、更に、識別されたプロデューサシステムのうちの少なくともいくつかのリース時間を受信するように構成され、リース時間は、コンシューマシステムがプロデューサシステムでのサービスにアクセスするように許可される一定期間を含む、条項１５に記載のシステム。
条項１７
接続モジュールは、更に、第１のプロデューサシステムに関連したリース時間を第１のプロデューサシステムに提供するように構成される、条項１６に記載のシステム。
条項１８
リソースリクエスタは、更に、リース時間がリース閾値を満たす第１のプロデューサシステムについてリース時間から残る時間の量に応答して満了する前には第１のプロデューサでのサービスにアクセスする既存のサービス要求が完了されないことになる確率を判定するように構成され、
リースリクエスタは、更に、
確率が更新閾値を満たすと判定することに応答して、第１のプロデューサシステムでのサービスにアクセスする更新リース要求を生成し、
リース要求を、第１のプロデューサシステムの識別情報を提供した複数のリースエージェントのリースエージェントに提供するように構成される、条項１６〜条項１７に記載のシステム。
条項１９
少なくとも一部が第１のプロデューサシステムに関係する現状情報を含むメタデータを第１のプロデューサシステムから取得し、
現状情報の少なくとも一部を、第１のプロデューサシステムの識別情報を提供した複数のリースエージェントのリースエージェントに提供するように構成された現状モジュールを更に含む、条項１５〜条項１８に記載のシステム、
条項２０
プロデューサシステムへのアクセスをリースしてプロデューサシステムによってホスティングされたサービスへのアクセスを取得するシステムであって、
コンピュータハードウェアを含むコンピュータシステムにおいて実施される、第１のリースシステムを含む第１のリースエージェント、
を含み、第１のリースシステムは
いくつかのプロデューサシステムによって提供されたサービスへのアクセスをリースする第１の要求をコンシューマシステムから受信し、
第１の複数のプロデューサシステムの個々のプロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて第１の複数のプロデューサシステムの第１のプロデューサシステムを識別するように構成され、第１の複数のプロデューサシステムは、いくつかのプロデューサシステムの第１のサブセットを含み、
第１のプロデューサシステムを識別することに応答して、第１のプロデューサシステムの識別情報をコンシューマシステムに提供するように構成され、
このシステムは、更に
：
第２のリースシステムを含む第２のリースエージェント、
を含み、
第２のリースエージェントは、
サービスへのアクセスをリースする第２の要求をコンシューマシステムから受信し、
第２の複数のプロデューサシステムの個々のプロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて第２の複数のプロデューサシステムの第２のプロデューサシステムを識別するように構成され、第２の複数のプロデューサシステムは、いくつかのプロデューサシステムの第２のサブセットを含み、いくつかのプロデューサシステムの第２のサブセットは、いくつかのプロデューサシステムの第１のサブセットと同一ではなく
第２のリースエージェントは、更に
第２のプロデューサシステムを識別することに応答して、第２のプロデューサシステムの識別情報をコンシューマシステムに提供し、その結果、コンシューマシステムが、少なくとも第１のプロデューサシステム及び第２のプロデューサシステムからのサービスへのアクセスを要求することを可能にするように構成され、プロデューサシステムの識別表示は、少なくとも第１のリースエージェントと第２のリースエージェント間で分散される分散プロセスであるようになっている、システム。
条項２１
第１のリースシステムは、更に、第１のリース時間をコンシューマシステムに提供するように構成され、第１のリース時間は、コンシューマシステムが第１のプロデューサシステムにアクセスするように許可される一定期間を含み、第２のリースシステムは、更に、第２のリース時間をコンシューマシステムに提供するように構成され、第２のリース時間は、コンシューマシステムが第２のプロデューサシステムにアクセスするように許可される一定期間を含む、条項２０に記載のシステム。
条項２２
第１のリースエージェントは、第１の現状モジュールを更に含み、第１の現状モジュールは、
第１のプロデューサシステムの第１の更新された現状情報を受信し、
第１の更新された現状情報に少なくとも部分的に基づいて第１のプロデューサシステムのプロデューサ現状情報を更新するように構成され、
第２のリースエージェントは、第２の現状モジュールを更に含み、第２の現状モジュールは、
第２のプロデューサシステムの第２の更新された現状情報を受信し、
第２の更新された現状情報に少なくとも部分的に基づいて第２のプロデューサシステムのプロデューサ現状情報を更新するように構成される、条項２０〜条項２１に記載のシステム。
条項２３
第１の更新された現状情報及び第２の更新された現状情報は、コンシューマシステムから受信される、条項２２に記載のシステム。
条項２４
第１の更新された現状情報は、第１のプロデューサシステムから受信され、第２の更新された現状情報は、第２のプロデューサシステムから受信される、条項２２に記載のシステム。
条項２５
第１のリースエージェントは、
第１のプロデューサシステムの更なるリース時間を取得する第１のリース更新要求をコンシューマシステムから受信し、
第１のプロデューサシステムのプロデューサ現状情報に少なくとも部分的に基づいて第１のリース更新要求を容認するべきかどうか判定し、
第１のリース更新要求を容認することを判定することに応答して、第１のプロデューサシステムの第１のリース更新時間をコンシューマシステムに提供するように更に構成される、条項２０〜条項２４に記載のシステム。
条項２６
第１のリース更新要求を容認しないことを判定することに応答して、第１のリースエージェントは、
第１の複数のプロデューサシステムの各プロデューサシステムに関連したプロデューサ現状情報に少なくとも部分的に基づいて第１の複数のプロデューサシステムの第３のプロデューサシステムを識別し、
第３のプロデューサシステムを識別することに応答して、第３のプロデューサシステムの識別情報をコンシューマシステムに提供するように更に構成される、条項２５に記載のシステム。
条項２７
プロデューサシステムを複数のリースエージェントシステム間で分割する方法であって、
１つ以上のプロセッサを含む第１のリースエージェントシステムによって第１の期間にて利用可能であるプロデューサシステムの第１の組を判定することと、
第１の期間の前に発生する第２の期間にて利用可能であるプロデューサシステムの第２の組を識別することと、
プロデューサシステムの第１の組とプロデューサシステムの第２の組のとの数の違いを計算することと、
違いが閾値を満たすかどうか判定することと、
違いが閾値を満たすと判定することに応答して、
プロデューサシステムの第１の組の異なるサブセットを個々のリースエージェントシステムに割り当てることによってプロデューサシステムの第１の組を複数のリースエージェントシステム間で分割することと、
第１のリースエージェントシステム以外の複数のリースエージェントシステムの個々のリースエージェントシステムについて、プロデューサシステムの第１の組と異なるプロデューサシステムがサービスを異なるコンシューマシステムに提供することを可能にするためにプロデューサシステムの第１の組からリースエージェントシステムに割り当てられたプロデューサシステムのサブセットの識別情報を個々のリースエージェントシステムに提供すること、
を含み、それにより
複数のリースエージェントシステム間のプロデューサシステムの第１の組の分割は、異なるコンシューマシステムの間でプロデューサシステムの第１の組によって提供されたサービスの割り当ての分散を可能にするようになっている、方法。
条項２８
複数のリースエージェントシステムの１組のリースエージェントシステムに、第１のリースエージェントシステムがプロデューサシステムの第１の組を分割していると通知して、１組のリースエージェントシステムに、第１のリースエージェントシステムがプロデューサシステムの第１の組を分割する間にプロデューサシステムの第１の組を分割しようとすることを控えされることを更に含む、条項２７に記載の方法。
条項２９
第２の組の利用可能なプロデューサシステム及び第２の期間は、第１のリースエージェントシステムが非アクティブの期間の後に起動されたときに違いが閾値を満たすことを確保する値を含む、条項２７〜条項２８に記載の方法。
条項３０
プロデューサシステムの第１の組は、第１の期間にて利用可能であるプロデューサシステムの総数を含み、プロデューサシステムの第２の組は、第２の期間にて利用可能であるプロデューサシステムの総数を含む、条項２７〜条項２９に記載の方法。
条項３１
複数のリースエージェントシステムの少なくとも１つは、第３の期間にて利用可能ではないという表示を受信することと、
第３の期間にて利用可能であるプロデューサシステムの第３の組を識別することと、
第３の期間にて利用可能である１組のリースエージェントシステムを識別することと、
プロデューサシステムの第３の組を第３の期間にて利用可能である１組のリースエージェントシステム間で分割することと、
第３の期間にて利用可能である１組のリースエージェントシステムの個々のリースエージェントシステムについて、プロデューサシステムの第３の組のプロデューサシステムのサブセットの識別情報をリースエージェントシステムに提供することとを更に含み、プロデューサシステムのサブセットは、プロデューサシステムの第２の組の上記の分割に少なくとも部分的に基づいて判定される、条項２７〜条項３０に記載の方法。
条項３２
プロデューサシステムの第３の組及びプロデューサシステムの第１の組は、同じシステムである、条項３１に記載の方法。
条項３３
第１の期間にて利用可能であるプロデューサシステムの第１の組を複数のリースエージェントシステム間で分割することは、プロデューサシステムの第１の組をプロデューサシステムの重なり合わないサブセットに分割することを含む、条項２７〜条項３２に記載の方法。
条項３４
第１のリースエージェントシステムに割り当てられたプロデューサシステムの第１のサブセットのプロデューサシステムがもはや利用可能ではないと判定することと、
利用可能なプロデューサシステムのカウントを更新してプロデューサシステムがもはや利用可能ではないことを反映することとを更に含み、第１の期間にて利用可能であるプロデューサシステムの第１の組を判定することは、利用可能なプロデューサシステムのカウントに少なくとも部分的に基づく、条項２７〜条項３３に記載の方法。
条項３５
プロデューサシステムがもはや利用可能ではないと判定することは、プロデューサシステムが無応答であるという通知をコンシューマシステムから受信することを含む、条項３４に記載の方法。
条項３６
プロデューサシステムがもはや利用可能ではないと判定することは、プロデューサシステムが第１のリースエージェントシステムによって提供される現状要求に無応答であると判定することを含む、条項３４〜条項３５に記載の方法。
条項３７
第１のリースエージェントシステムに登録する要求をプロデューサシステムから受信することと、
プロデューサシステムが第１のリースエージェントシステムに割り当てられたプロデューサシステムのサブセット内に含まれるかどうか判定することと、
プロデューサシステムが第１のリースエージェントシステムに割り当てられたプロデューサシステムのサブセット内に含まれると判定することに応答して、第１のリースエージェントシステムにてプロデューサシステムを登録することを更に含む、条項２７〜条項３６に記載の方法。
条項３８
プロデューサシステムが第１のリースエージェントシステムに割り当てられたプロデューサシステムのサブセット内に含まれていないと判定することに応答して、この方法は、
プロデューサシステムに割り当てられた複数のリースエージェントシステムの第２のリースエージェントシステムを識別することと、
第２のリースエージェントシステムの識別情報をプロデューサシステムに提供することとを更に含む、条項３７に記載の方法。
条項３９
異なるコンシューマシステムのコンシューマシステムは、そのうちに異なる期間にて複数のプロデューサシステムの異なるプロデューサシステムにアクセスする、条項２７〜条項３８に記載の方法。
条項４０
プロデューサシステムを複数のリースエージェントシステム間で分割するシステムであって、
第１のリースエージェントを含む複数のリースエージェント、
を含み、複数のリースエージェントの個々のリースエージェントは、１つ以上のプロセッサを含み、第１のリースエージェントは、第１の期間での１組の利用可能なプロデューサシステムと第２の期間での１組の利用可能なプロデューサシステムの違いが閾値を満たすかどうか判定するように構成された分割システムを更に含み、
分割システムは、違いが閾値を満たすと判定することに応答して、
異なるユーザーシステムにより複数のプロデューサシステムへのアクセスを複数のプロデューサシステム間でほぼ均一に分散させようするために複数のリースエージェントに含まれるいくつかのリースエージェントのカウントに基づいて１組のプロデューサシステムをプロデューサシステムの複数のサブセットに分割し、
複数のリースエージェントの個々のリースエージェントについて、リースエージェントにプロデューサシステムのサブセットの１つに含まれたプロデューサシステムの識別情報を提供するように更に構成される、システム。
条項４１
プロデューサシステムのサブセットの数は、複数のリースエージェントに含まれたリースエージェントの数のカウントに対応する、条項４０に記載のシステム。
条項４２
分割システムは、更に、プロデューサシステムのサブセットと異なるプロデューサシステムのサブセット内に含まれるプロデューサシステムの識別情報を個々のリースエージェントに提供するように構成される、条項４０〜条項４１に記載のシステム。
条項４３
分割システムは、更に、第１のリースエージェントの分割システムが１組のプロデューサシステムを分割していると第１のリースエージェントに含まれない複数のリースエージェントの１つ以上のリースエージェントに警告するように構成される、条項４０〜条項４２に記載のシステム。
条項４４
複数のリースエージェントの第２のリースエージェントが１組のプロデューサシステムを分割しているという警告を受信することに応答して、第１のリースエージェントの分割システムは、更に、１組のプロデューサシステムを分割することを控えるように構成される、条項４０〜条項４３に記載のシステム。
条項４５
第１のリースエージェントは、
第１のリースエージェントに登録する要求をプロデューサシステムから受信し、
プロデューサシステムが第１のリースエージェントに割り当てられたプロデューサシステムのサブセット内に含まれるかどうか判定し、
プロデューサシステムが第１のリースエージェントに割り当てられたプロデューサシステムのサブセット内に含まれると判定することに応答して、第１のリースエージェントシステムにてプロデューサシステムを登録し、
プロデューサシステムが第１のリースエージェントに割り当てられたプロデューサシステムのサブセット内に含まれていないと判定することに応答して、プロデューサシステムに割り当てられた複数のリースエージェントの第２のリースエージェントを識別して、第２のリースエージェントの識別情報をプロデューサシステムに提供するように構成された現状モジュールを更に含む、条項４０〜条項４４に記載のシステム。
条項４６
リースを複数のリースエージェントシステム間で分割する方法であって、
１つ以上のプロセッサを含む第１のリースエージェントシステムによって１組の利用可能なプロデューサシステムを識別することと、
１組の利用可能なプロデューサシステムの個々のプロデューサシステムに利用可能ないくつかのリースを判定することと、
個々のプロデューサシステムに利用可能ないくつかのリースのサブセットを複数のリースエージェントシステムの個々のリースエージェントシステムに割り当てることによって複数のリースエージェントシステム間で個々のプロデューサシステムに利用可能ないくつかのリースを分割することと、
複数のリースエージェントシステムの個々のリースエージェントシステムについて、リースエージェントシステムに割り当てられたリースのサブセットをリースエージェントシステムに提供することと、
を含み、それによって
複数のリースエージェントシステム間の個々のプロデューサシステムに利用可能ないくつかのリースの分割は、複数のリースエージェントシステム間の作業負荷の分散を可能にするようになっている、方法。
条項４７
個々のリースエージェントシステムは、リースの重なり合わないサブセットを割り当てられる、条項４６に記載の方法。
条項４８
リースのサブセットをリースエージェントシステムに提供することは、リースエージェントシステムに割り当てられたリースのサブセットを第１のリースエージェントシステムに提供することを除外する、条項４６〜条項４７に記載の方法。
条項４９
リースエージェントシステムに割り当てられたリースのサブセットをリースエージェントシステムに提供することは、複数のプロデューサシステムの個々のプロデューサシステムについてリースエージェントシステムに割り当てられたいくつかのリースをリースエージェントシステムに提供することを含む、条項４６〜条項４８に記載の方法。
条項５０
リースエージェントシステムに割り当てられたリースのサブセットをリースエージェントシステムに提供することは、リースエージェントシステムに割り当てられた個々のリースの識別子をリースエージェントシステムに提供することを含む、条項４６〜条項４９に記載の方法。
条項５１
個々のプロデューサシステムに利用可能ないくつかのリースを複数のリースエージェントシステム間で分割することは、個々のプロデューサシステムに利用可能ないくつかのリースを複数のリースエージェントシステムの間で実質的に等しく分割することを含む、条項４６〜条項５０に記載の方法。
条項５２
複数のリースエージェントシステムは、１組のリースエージェントシステムのサブセットを含む、条項４６〜条項５１に記載の方法。
条項５３
複数のリースエージェントシステムは、第１のリースエージェントシステムを含む、条項５２に記載の方法。
条項５４
１組の利用可能なプロデューサシステムは、利用可能なプロデューサシステムのサブセットを含む、条項４６〜条項５３に記載の方法。
条項５５
個々のプロデューサシステムに利用可能ないくつかのリースを複数のリースエージェントシステム間で分割する上記のことは、第１の期間にて１組の利用可能なプロデューサシステム間で利用可能なリース総計数が第２の期間と比較して閾値数変化することに応答して発生する、条項４６〜条項５４に記載の方法。
条項５６
サービスへのアクセスを提供するために複数のプロデューサシステムからプロデューサシステムを選択する方法であって、
１つ以上のプロセッサを含む第１のリースエージェントシステムによって複数のプロデューサシステムの現状情報を受信すること、
を含み、複数のプロデューサシステムの個々のプロデューサシステムは、選択重みを伴い、
現状情報の少なくともいくつかは、少なくとも１つのコンシューマシステムによる少なくとも１つのプロデューサシステムの現状の判定を反映し、
この方法は、更に、
受信された現状情報に少なくとも部分的に基づいて複数のプロデューサシステムについて、コンシューマシステムとやりとりすることに対する複数のプロデューサシステムの性能に関係する１組のメトリックを含むプロデューサ現状情報を修正することと、
１組のメトリックの第１のメトリックに少なくとも部分的に基づいて複数のプロデューサシステムに関連した選択重みを修正することと、
複数のプロデューサシステムの１つへのアクセスをリースする要求をコンシューマシステムから受信することと、
複数のプロデューサシステムの１つへのアクセスをリースする要求を受信することに応答して、
コンシューマシステムに対応するために複数のプロデューサシステムの個々のプロデューサシステムに関連した対応する選択重みに少なくとも部分的に基づいて複数のプロデューサシステムのプロデューサシステムを選択することと、
選択されたプロデューサシステムの識別情報を複数のプロデューサシステムの１つへのアクセスをリースする要求を提供したコンシューマシステムに提供することと、
選択されたプロデューサシステムに関連したプロデューサ現状情報をコンシューマシステムに提供することと、
を含み、プロデューサ現状情報の少なくともいくつかは、第２のコンシューマシステムから取得される、方法。
条項５７
複数のプロデューサシステムは、プロデューサシステムのサブセットを含む、条項５６に記載の方法。
条項５８
複数のプロデューサシステムに関連した選択重みを修正することは、プロデューサシステムを選択する上記のことが特定のプロデューサシステムを選択する確率を変える、条項５６〜条項５７に記載の方法。
条項５９
現状情報は、少なくとも１つのコンシューマシステムから受信される、条項５６〜条項５８に記載の方法。
条項６０
少なくとも１つのコンシューマシステムは、複数のプロデューサシステムの１つへのアクセスをリースする要求を提供したコンシューマシステムを含む、条項５９に記載の方法。
条項６１
現状情報は、複数のプロデューサシステムから受信される、条項５６〜条項６０に記載の方法。
条項６２
現状情報は、第２のリースエージェントシステムから受信される、条項５６〜条項６０に記載の方法。
条項６３
複数のプロデューサシステムの第１のプロデューサシステムについて、対応する修正された選択重みが除去閾値を満たすかどうか判定することと、
除去閾値を満たす修正された選択重みに応答して、第１のプロデューサシステムの識別情報利用可能なプロデューサシステムのリストからを除去することとを更に含み、利用可能なプロデューサシステムのリストは、選択に利用可能である複数のプロデューサシステムのプロデューサシステムに対応する利用可能なプロデューサシステムの識別情報を含む、条項５６〜条項６３に記載の方法。
条項６４
複数のプロデューサシステムからプロデューサシステムを選択する上記のことは、プロデューサシステムを利用可能なプロデューサシステムのリストから選択することを含む、条項６３に記載の方法。
条項６５
利用可能なプロデューサシステムのリストから除去されたプロデューサシステムのカウントを追跡することと、
低減閾値を満たすカウントに応答して、利用可能なプロデューサシステムを複数のリースエージェントシステム間で再分割することとを更に含み、複数のリースエージェントシステムは、第１のリースエージェントシステムを含む、条項６３〜条項６４に記載の方法。
条項６６
除去閾値は、複数のプロデューサシステムの第１のメトリックの平均値に基づく、条項６３に記載の方法。
条項６７
コンシューマシステムに提供されるプロデューサ現状情報は、第１のリースエージェントシステムが利用可能なプロデューサ現状情報の独立した組を含み、プロデューサ現状情報の独立した組は、コンシューマシステムが、他のリースされたプロデューサシステムと比較してより利用されないプロデューサシステムを複数のリースされたプロデューサシステムから選択することを可能にする、条項５６〜条項６６に記載の方法。
条項６８
複数のプロデューサシステムのプロデューサシステムを選択することは、プロデューサシステムの第２の組より低い負荷を有するプロデューサシステムの第１の組の１つを選択することを更に含む、条項５６〜条項６７に記載の方法。
条項６９
選択されたプロデューサシステムは、最低負荷に関連せず、その結果、負荷揺動の発生頻度が低減される、条項６８に記載の方法。
条項７０
サービスへのアクセスを提供するために複数のプロデューサシステムのプロデューサシステムを選択するシステムであって、
現状モジュール及びリースシステムを実行するように構成された１つ以上のプロセッサを含む、複数のリースエージェントの第１のリースエージェント、
を含み、
現状モジュールは、
個々のプロデューサシステムが選択重みに関連する複数のプロデューサシステムの第１のプロデューサシステムの現状情報を受信し、
受信された現状情報に少なくとも部分的に基づいて第１のプロデューサシステムに関連した選択重みを修正するように構成され、
リースエージェントは、
複数のプロデューサシステムの１つにアクセスする要求を受信し、
要求に対応するために複数のプロデューサシステムの個々のプロデューサシステムに関連した対応する選択重みに少なくとも部分的に基づいて、第１のプロデューサシステムを含め、複数のプロデューサシステムのプロデューサシステムを選択するように構成される、システム。
条項７１
現状情報は、リースシステムによって第１のリースエージェントにて受信され、リースシステムは、更に、現状情報を現状モジュールに提供するように構成される、条項７０に記載のシステム。
条項７２
現状モジュールは、
第１のプロデューサシステムが第１のリースエージェントに割り当てられているかどうか判定するように更に構成され。
第１のプロデューサが第１のリースエージェントに割り当てられていないと判定することに応答して、現状モジュールは、
第１のプロデューサに割り当てられた第２のリースエージェントを識別し、
受信された現状情報を第２のリースエージェントに提供するように更に構成される、条項７０〜条項７１に記載のシステム。
条項７３
現状モジュールは、
修正された選択重みが除去閾値を満たすかどうかを判定し、
除去閾値を満たす修正された選択重みに応答して第１のプロデューサシステムを複数のプロデューサシステムから関係を断つように更に構成される、条項７０〜条項７２に記載のシステム。
条項７４
第１のリースエージェントは、複数のプロデューサシステムから関係が絶たれたプロデューサシステムの数が低減閾値を満たすこと応答して複数のプロデューサシステムを複数のリースエージェント間で再分割するように構成された分割システムを更に含む、条項７３に記載されたシステム。
条項７５
リースシステムは、更に、プロデューサシステムの識別情報を、複数のプロデューサシステムの１つにアクセスする要求を提供したコンシューマシステムに提供するように構成される、条項７０〜条項７４に記載のシステム。
条項７６
選択されたプロデューサシステムは、第１のプロデューサシステムを含む、条項７０〜条項７５に記載のシステム。
条項７７
１つ以上のプロセッサにおいて実行されたとき、コンピューティングシステムに少なくともサービスへのアクセスを提供するプロデューサシステムを複数のプロデューサシステムから選択するように指示するコンピュータで実行可能な指示を含む固定物理コンピュータストレージであって、アクセスは、少なくとも
個々のプロデューサシステムが選択重みに関連し、プロデューサシステムのいくつかのサブセットに分割される複数のプロデューサシステムの第１のプロデューサシステムの現状情報を第１のリースエージェントにて受信することに応答して、第１のプロデューサがプロデューサシステムの、第１のリースエージェントに関連する第１のサブセットの要素であるかどうか判定し、
第１のプロデューサシステムがプロデューサシステムの第１のサブセットの要素であると判定することに応答して、第１のプロデューサシステムに関連した選択重みを修正し、
プロデューサシステムにアクセスする要求を受信することに応答して、要求のプロバイダに対応するためにプロデューサシステムのサブセットのプロデューサシステムに関連した選択重みに少なくとも部分的に基づいてプロデューサシステムの第１のサブセットの第２のプロデューサシステムを選択することによって提供される、固定物理コンピュータストレージ。
条項７８
第２のプロデューサシステム及び第１のプロデューサシステムは同じである、条項７７に記載の固定物理コンピュータストレージ。
条項７９
第１のプロデューサシステムがプロデューサシステムの第１のサブセットの要素ではないと判定することに応答して、この方法は、
第１のプロデューサシステムを含むプロデューサシステムの第２のサブセットを識別することと、
プロデューサシステムの第２のサブセットに関連した第２のリースエージェントを識別することと、
現状情報を第２のリースエージェントに提供することとを更に含む、条項７７〜条項７８に記載の固定物理コンピュータストレージ。
条項８０
オーバーレイネットワークにおいてプロデューサ仮想マシンによって提供されたサービスにアクセスする方法であって、
１つ以上のプロセッサを含むコンシューマシステムホストによって、コンシューマシステムホストは、１つ以上のコンシューマ仮想マシンをホスティングするように構成され、コンシューマ仮想マシンのうちの少なくとも１つは、第１のオーバーレイネットワークに関連し、
プロデューサシステムでのサービスにアクセスする要求をコンシューマシステムホストによってホスティングされたコンシューマ仮想マシンから受信すること
を含み、要求は、内側ヘッダを含み、内側ヘッダは、コンシューマ仮想マシン及びターゲット仮想アドレスに関連したコンシューマ仮想マシンアドレスを含み、
この方法は、更に
コンシューマ仮想マシンに関連した、コンシューマ仮想マシンのためにリースされた１組のリースされたプロデューサ仮想マシンを含むリースプールにアクセスすることと
リースプールからサービスにアクセスするべきリースされたプロデューサ仮想マシンをリースプールから選択することと、
内側ヘッダ内のターゲット仮想アドレスをリースされたプロデューサ仮想マシンに関連したプロデューサ仮想マシンアドレスと入れ替えることと、
リースされたプロデューサ仮想マシンに関連したプロデューサシステムホストを識別することと、
を含み、プロデューサシステムホストは、１つ以上のプロデューサ仮想マシンをホスティングするように構成され、プロデューサ仮想マシンの少なくとも１つは、第１のオーバーレイネットワークに関連し、
この方法は、更に
要求をプロデューサシステムホストに関連したプロデューサシステムホストアドレスとコンシューマシステムホストに関連したコンシューマシステムホストアドレスとを含む外側ヘッダでカプセル化することと、
要求を、ネットワークを介してプロデューサシステムホストに提供し、それによってプロデューサシステムホストが要求を処理することを可能にすることとを含む方法。
条項８１
リースされたプロデューサ仮想マシンを選択することは、
リースプールが少なくとも１つの利用可能なリースされたプロデューサ仮想マシンを含むかどうか判定することと、
リースプールが少なくとも１つの利用可能なリースされたプロデューサ仮想マシンを含むと判定することに応答して、利用可能なリースされたプロデューサ仮想マシンの１つを選択して、選択中の利用可能なリースされたプロデューサ仮想マシンをリースプールから除去することとを含む、条項８０に記載の方法。
条項８２
リースプールが利用可能なリースされたプロデューサ仮想マシンを含まないと判定することに応答して、この方法は、
コンシューマ仮想マシンのために、第１のオーバーレイネットワーク内に含まれた１組のプロデューサ仮想マシンのリースを取得することと、
１組のリースされたプロデューサ仮想マシンの個々のプロデューサ仮想マシンとの接続を開始することと、
個々の失敗せずに確立された接続について、対応するプロデューサ仮想マシンをリースプールに追加することとを更に含み、リースされたプロデューサ仮想マシンを選択することは、リースプールに追加されたプロデューサ仮想マシンの１つを選択して選択されたプロデューサ仮想マシンをリースプールから除去することを更に含む、条項８１に記載の方法。
条項８３
１組のプロデューサ仮想マシンのリースを取得することは、
コンシューマ仮想マシンについて第１のオーバーレイネットワークにおいて含まれたプロデューサ仮想マシンへのリースを取得する要求を生成することと、
プロデューサ仮想マシンへのリースを取得する要求を１組のリースエージェントに提供することと、
１組のリースエージェント内のリースエージェントのうちの少なくともいくつかについて、プロデューサ仮想マシンのリース情報を受信することによってプロデューサ仮想マシンとの接続を開始することを可能にすることを含む、条項８２に記載の方法。
条項８４
１組のリースエージェントは、ネットワーク内のリースエージェントのサブセットを含む、条項８３に記載の方法。
条項８５
サービス要求に対する応答をプロデューサシステムホストから受信することと、
応答の外側ヘッダを除去することによってサービス応答をカプセル化解除して、応答の内側ヘッダへのアクセスを取得することと、
応答の内側ヘッダに基づいてコンシューマシステムホストによってホスティングされたコンシューマ仮想マシンの１つレシピエントコンシューマ仮想マシンを判定することと、
カプセル化解除されたサービス応答をレシピエントコンシューマ仮想マシンに提供することとを更に含む、条項８０〜条項８４に記載の方法。
条項８６
レシピエントコンシューマ仮想マシン及びコンシューマ仮想マシンは同じである、条項８５に記載の方法。
条項８７
応答の内側ヘッダに基づいて、応答に関連したソースプロデューサ仮想マシンに関連したソース仮想アドレスを識別することと、
ソースプロデューサ仮想マシンに関連した内側ヘッダ内に含まれたアドレスをソース仮想アドレスと置換することとを更に含む、条項８５〜条項８６に記載の方法。
条項８８
ソースプロデューサ仮想マシンは、選択されたリースされたプロデューサ仮想マシンに対応し、ソース仮想アドレスは、ターゲット仮想アドレスに対応し、レシピエントコンシューマ仮想マシンは、コンシューマ仮想マシンに対応する、条項８７に記載の方法。
条項８９
コンシューマ仮想マシンの少なくとも１つは、第２のオーバーレイネットワークに関連する、条項８０〜条項８８に記載の方法。
条項９０
プロデューサ仮想マシンの少なくとも１つは、第２のオーバーレイネットワークに関連する、条項８０〜条項８９に記載の方法。
条項９１
サービスにアクセスする第２の要求を受信することと、
リースされたプロデューサ仮想マシンの負荷が負荷閾値を満たすかどうか判定することと、
リースされたプロデューサ仮想マシンの負荷が負荷閾値を満たすと判定することに応答して
サービスにアクセスするべき第２のリースされたプロデューサ仮想マシンをリースプールから選択することと、
第２の要求を第２のリースされたプロデューサ仮想マシンをホスティングする第２のプロデューサシステムホストに提供することと。を更に含む、条項８０〜条項９０に記載の方法。
条項９２
リースされたプロデューサ仮想マシンの負荷が負荷閾値を満たすと判定することに応答して、この方法は、リースされたプロデューサ仮想マシンへの接続を終了させることを更に含む、条項９１に記載の方法。
条項９３
オーバーレイネットワークにおいてプロデューサ仮想マシンによって提供されたサービスにアクセスするシステムであって、
１つ以上のプロセッサを含むコンシューマシステム
を含み、コンシューマシステムホストは、１つ以上のコンシューマをホスティングするように構成され、コンシューマシステムホストは、
プロデューサシステムホストへのプロデューサのマッピングを記憶するように構成されたマッピングリポジトリと、
プロデューサでのサービスにアクセスする要求をコンシューマシステムホストによってホスティングされたコンシューマから受信し、
コンシューマのためにリースされる、サービスにアクセスするべきリースされたプロデューサを選択し、
リースされたプロデューサに関連した、１つ以上のプロデューサをホスティングするように構成されるプロデューサシステムホストを識別し、
要求をプロデューサシステムホストに送信するように構成されたオーバーレイネットワークプロキシとを含む、システム。
条項９４
マッピングリポジトリは、更に、コンシューマに関連したリースプールを記憶するように構成され、リースプールは、コンシューマのためにリースされた１組のリースされたプロデューサを含み、オーバーレイネットワークプロキシは、更に、
リースプールが少なくとも１つの利用可能なリースされたプロデューサを含むかどうか判定し、
リースプールが少なくとも１つの利用可能なリースされたプロデューサを含むと判定することに応答して、サービスにアクセスするべきリースされたプロデューサを利用可能なリースされたプロデューサから選択するように構成される、条項９３に記載されたシステム。
条項９５
リースプールが少なくとも１つの利用可能なリースされたプロデューサを含まないと判定することに応答して、オーバーレイネットワークプロキシは、更に、
コンシューマについてプロデューサへのリースを取得する要求を生成し、
プロデューサへのリースを取得する要求を１組のリースエージェントに提供し、
１組のリースエージェント内のリースエージェントの少なくともいくつかについて、プロデューサのリース情報を受信するように構成される、条項９４に記載されたシステム。
条項９６
マッピングリポジトリは、更に、リース情報をコンシューマに関連したリースプールに記憶するように構成される、条項９５に記載されたシステム。
条項９７
オーバーレイネットワークプロキシは、更に、
要求に対する応答をプロデューサホストシステムから受信し、
応答の内側ヘッダに基づいてコンシューマを含むレシピエントコンシューマを判定し、
応答をコンシューマに提供するように構成される、条項９３〜条項９５に記載のシステム。
条項９８
オーバーレイネットワークプロキシは、更に、
リースされたプロデューサに関連したソース仮想アドレスを識別し、
コンシューマに対する応答を提供する前に、リースされたプロデューサに関連した内側ヘッダ内に含まれたアドレスをソース仮想アドレスと置換するように構成される、条項９７に記載されたシステム。
条項９９
オーバーレイネットワークプロキシは、更に、要求を、プロデューサシステムホスト及びコンシューマシステムホストに関連したコンシューマシステムホストアドレスに関連したプロデューサシステムホストアドレスを含む外側ヘッダでカプセル化するように構成される、条項９３〜条項９７に記載のシステム。
条項１００
１つ以上のプロセッサにおいて実行されたとき、コンピューティングシステムにオーバーレイネットワークにおいてプロデューサ仮想マシンによって提供されたサービスにアクセスするように指示する、コンピュータで実行可能な指示を含む固定物理コンピュータストレージであって、
サービスは、少なくとも
ターゲット仮想アドレスを含む、プロデューサでのサービスにアクセスする要求をコンシューマシステムホストによってホスティングされたコンシューマ仮想マシンから受信し、
コンシューマ仮想マシンに関連した、コンシューマ仮想マシンのためにリースされるプロデューサ仮想マシンの接続情報を含むリースプールから、サービスにアクセスするべきリースされたプロデューサ仮想マシンを選択し、
要求のヘッダ内のターゲット仮想アドレスをリースされたプロデューサ仮想マシンに関連したプロデューサ仮想マシンアドレスと入れ替え、
リースされたプロデューサ仮想マシンに関連したプロデューサシステムホストを判定し、
プロデューサシステムホストに送られるべき要求をリースされたプロデューサ仮想マシンに提供させることによってリースプロデューサ仮想マシンがサービスにアクセスするために要求を処理することを可能にすることによってアクセスされる、固定物理コンピュータストレージ。
条項１０１
リースされたプロデューサ仮想マシンをコンシューマ仮想マシンに関連したリースプールから選択することは、
リースプールがコンシューマ仮想マシンによって目下使用されていない少なくとも１つのリースされたプロデューサ仮想マシンの接続情報を含むかどうか判定することを含み、
リースプールがコンシューマ仮想マシンによって目下使用されてない少なくとも１つのリースされたプロデューサ仮想マシンを含まないと判定することに応答して、コンピュータで実行可能な指示は、コンピューティングシステムに
オーバーレイネットワーク内に含まれた１組のプロデューサ仮想マシンのリースをコンシューマ仮想マシンのために取得し、
１組のリースされたプロデューサ仮想マシンの個々のプロデューサ仮想マシンとの接続を開始し、
失敗せずに確立した接続について、対応するプロデューサ仮想マシンの接続情報をリースプールに追加するように指示することを更に含む、条項１００に記載の固定物理コンピュータストレージ。
条項１０２
リースされたプロデューサ仮想マシンをコンシューマ仮想マシンに関連したリースプールから選択することは、接続情報がリースプールに追加されたプロデューサ仮想マシンの１つを選択することを更に含む、条項１０１に記載の固定物理コンピュータストレージ。
【０１６２】
用語
いくつかのコンピューティングシステムを、本開示を通じて説明した。これらのシステムの説明は、本開示の教示、又は、適用可能性を制限することを意図していない。例えば、本明細書で説明するユーザーシステムとしては、一般的に、少し例を挙げれば、デスクトップ、ラップトップ、テレビゲームプラットホーム、テレビセットトップボックス、テレビ（例えば、インターネットＴＶ）、電子制御電気製品、及び無線モバイル機器（例えば、スマートフォン、ＰＤＡ、タブレットなど）などの任意のコンピューティングデバイスを挙げることができる。更に、本明細書で説明するユーザーシステムは、異なる種類の装置であるか、異なるアプリケーションを含むか、又は、その他の方法で異なる方法で構成されることが可能である。更に、本明細書で説明するユーザーシステムは、任意の形式のオペレーティングシステム（「ＯＳ」）を含むことができる。例えば、本明細書で説明するモバイルコンピューティングシステム、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、ウィンドウズ（登録商標）ＯＳ、Ｍａｃ（登録商標）ＯＳ、Ｌｉｎｕｘ（登録商標）、又は、ＵＮＩＸ（登録商標）ベースのＯＳなどを実行することができる。
【０１６３】
更に、例示するシステムの様々な構成要素の処理は、複数のマシン、ネットワーク、及び他の計算リソースにわたって分散させることができる。更に、システムの２つ以上の構成要素をより少数の構成要素に結合することができる。例えば、リースエージェント１０２の一部として例示する様々なシステムは、複数のコンピューティングシステムにわたって分散させるか、又は、単一のコンピューティングシステムへと組み合わせることができる。更に、例示するシステムの様々な構成要素は、専用コンピュータハードウェアシステムにおいてではなく、むしろ１つ以上の仮想マシンにおいて実施することができる。同様に、図示するデータリポジトリは、例えば、ストレージエリアネットワーク、又は、他の分散型ストレージシステムを含め、物理及び／又は論理データストレージを表すことができる。更に、いくつかの実施形態において、図示する構成要素間の接続は、ハードウェア間の実際の接続ではなく、むしろデータフローの可能なパスを表す。可能な接続のいくつかの実施例を図示するが、図示する構成要素のサブセットのいずれも、様々な実行例ではコンポーネントの任意の他のサブセットと通信することができる。
【０１６４】
実施形態によっては、本明細書で説明するアルゴリズム、方法、又は、プロセスのある特定の動作、イベント、又は、機能は、異なる順序で実行することができ、追加、統合、又は、全くまとめて省略することができる（例えば、全ての説明する行為又はイベントが、アルゴリズムの実践に必要であるというわけではない）。更に、ある特定の実施形態では、動作又はイベントは、順次によりもむしろ、例えば、マルチスレッド型処理、割込み処理、又は、複数のプロセッサ、又は、プロセッサコアを介して、又は、他の並列のアーキテクチャ上で同時に実行することができる。
【０１６５】
様々な例示するシステムの各々は、本明細書で説明する様々な機能を実行するようにプログラム及び構成されるコンピューティングシステムとして実現され得る。コンピューティングシステムは、説明する機能を実行するためにネットワークで通信及び相互運用する複数の異なったコンピュータ又はコンピューティングデバイス（例えば、物理サーバ、ワークステーション、ストレージアレイなど）を含み得る。各々のそのようなコンピューティングデバイスは、典型的には、メモリ又は他の固定コンピュータ可読記憶媒体内に記憶されたプログラム命令又はモジュールを実行するプロセッサ（又は、マルチプロセッサ）を含む。本明細書で開示する様々な機能は、そのようなプログラム命令において具現され得るが、開示する機能の一部又は全部は、代替的にコンピュータシステムの特定用途向け回路（例えば、ＡＳＩＣ又はＦＰＧＡ）において実現され得る。コンピューティングシステムが複数のコンピューティングデバイスを含む場合、これらのデバイスは、同じ位置に配置され得るが同じ位置に配置される必要はない。開示する方法及びタスクの結果は、ソリッド状態メモリーチップ及び／又は磁気ディスクなど物理記憶装置を異なる状態に変換することによって持続的に記憶され得る。説明する各プロセスは、関連したサーバコードでプログラムされる１つ以上の物理サーバなど、１つ以上のコンピューティングデバイスによって実現され得る。
【０１６６】
とりわけ、「〜することができる」、「〜ことがあり得る」、「〜得る」、「例えば」など、本明細書で使用する条件付き言語は、特記がない限り、又は、使用時に前後関係において別段の理解の仕方がない限り、ある特定の実施形態が、特定特徴部、要素及び／又は段階を含むが、他の実施形態は含まないことを伝達することを一般的に意図する。したがって、そのような条件付き言語は、一般的に、特徴部、要素及び／又は状態がいかなる点においても１つ以上の実施形態に必要とされること、又は、１つ以上の実施形態が、著者入力又はプロンプト表示の有無を問わず、これらの特徴部、要素及び／又は状態が任意のある特定の実施形態においては含まれるか又は実行されるべきであるか否かを判断するための論理を必ず含むことを意味することを意図したものではない。「を備える」、「を含む」、「を有する」などの用語は、同義であり、かつ、制限なしに包括的に使用されており、更なる要素、特徴部、行為、作業などを除外するものではない。また、「又は」という用語は、使用するときには、例えば、要素のリストを関連づけるために、「又は」という用語は、リスト内の要素の１つ、一部、又は、全てを意味するように、包括的な意味で（かつ、排他的な意味ではなく）使用している。冠詞「ａ」及び「ａｎ」は、特記がない限り、「１つ以上の」か、又は、「少なくとも１つ」を意味すると解釈するべきである。
【０１６７】
「Ｘ、Ｙ及びＺのうちの少なくとも１つ」という表現などの連結表現は、特記がない限り、その他の方法で、項目、項などがＸ、Ｙ、又はＺであり得ることを伝えるために一般に使用されるように文脈と共に理解される。したがって、そのような連結表現は、一般的に、ある特定の実施形態がＸのうちの少なくとも１つ、Ｙのうちの少なくとも１つ、及びＺのうちの少なくとも１つが各々存在することを必要とすることを意味すると意図されてはいない。
【０１６８】
上記の詳細な説明では、様々な実施形態に適用されるように新規の特徴を図示、説明及び指摘したが、例示する装置又はアルゴリズムの形態又は詳細における様々な省略、置換、及び変更を本開示の精神から逸脱することなく行なうことができることが理解されるであろう。したがって、前述の説明におけるいかなるものも、任意の特定の特徴、特性、ステップ、モジュール、又は、ブロックが必要又は不可欠であることを意味するとは意図されていない。認識されるように、本明細書で説明するプロセスは、一部の特徴部を他とは別々には使用又は実践することができるように、本明細書で定める特徴及び利点の全てを提供するわけではない形態で実施することができる。本発明の範囲は、前述の説明ではなく特許請求項の範囲により定義される。特許請求項の範囲の意味及び均等性の範囲に該当する全ての変更は、本発明の範囲内に包含されるものとする。
【図１Ａ】
2016526723.tif 000003
【図１Ｂ】
2016526723.tif 000004
【図２】
2016526723.tif 000005
【図３】
2016526723.tif 000006
【図４】
2016526723.tif 000007
【図５】
2016526723.tif 000008
【図６】
2016526723.tif 000009
【図７】
2016526723.tif 000010
【図８】
2016526723.tif 000011
【図９】
2016526723.tif 000012
【図１０】
2016526723.tif 000013
【図１１】
2016526723.tif 000014
【図１２】
2016526723.tif 000015
【図１３】
2016526723.tif 000016
【図１４】
2016526723.tif 000017
【図１５】
2016526723.tif 000018
【国際調査報告】
2016526723.tif 000019