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