JP2016527780A - リースエージェントシステム間での制作者システムの分配 - Google Patents

リースエージェントシステム間での制作者システムの分配 Download PDF

Info

Publication number
JP2016527780A
JP2016527780A JP2016523862A JP2016523862A JP2016527780A JP 2016527780 A JP2016527780 A JP 2016527780A JP 2016523862 A JP2016523862 A JP 2016523862A JP 2016523862 A JP2016523862 A JP 2016523862A JP 2016527780 A JP2016527780 A JP 2016527780A
Authority
JP
Japan
Prior art keywords
producer
lease
consumer
virtual machine
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016523862A
Other languages
English (en)
Other versions
JP6243528B2 (ja
Inventor
ビシャル パラク
ビシャル パラク
プラディープ ヴィンセント
プラディープ ヴィンセント
アンドリュー ブルース ディキンソン
アンドリュー ブルース ディキンソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/927,892 external-priority patent/US9350801B2/en
Priority claimed from US13/927,929 external-priority patent/US9369518B2/en
Priority claimed from US13/927,933 external-priority patent/US9843631B2/en
Priority claimed from US13/927,995 external-priority patent/US9780993B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2016527780A publication Critical patent/JP2016527780A/ja
Application granted granted Critical
Publication of JP6243528B2 publication Critical patent/JP6243528B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Marketing (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Software Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Tourism & Hospitality (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

オーバーレイネットワーク内の消費者仮想マシンのために制作者仮想マシンをリースするプロセス及びシステムを開示する。消費者仮想マシンの消費者ホストは、一組のリースエージェントと通信して、サービスへのアクセスを消費者仮想マシンに提供可能な複数の制作者仮想マシンの識別情報を取得することができる。消費者仮想マシンが制作者システムとの通信を試みると、消費者ホストは、対象となる制作者仮想マシンをホストする制作者ホストを特定し、当該制作者ホストにサービス要求を転送することができる。【選択図】図11

Description

関連出願の相互参照
本出願は、2013年6月26日出願の「MANAGING CLIENT ACCESS TO A PLURALITY OF COMPUTING SYSTEMS」と題する米国出願第13/927,892号;2013年6月26日出願の「PRODUCER SYSTEM PARTITIONING AMONG LEASING AGENT SYSTEMS」と題する米国出願第13/927,929号;2013年6月26日出願の「PRODUCER SYSTEM SELECTION」と題する米国出願第13/927,933号;及び2013年6月26日出願の「PRODUCER SYSTEM PARTITIONING AMONG LEASING AGENT SYSTEMS」と題する米国出願第13/927,995号の各出願に関するものであり、参照により本明細書にこれらの開示全体を援用する。
多くの場合、コンピューティングリソース及びサービスは、複数のコンピューティングシステムによって提供される。これらのコンピューティングリソース及び/またはサービスは、複数の別のコンピューティングシステムによって消費され得る。多くの場合、いくつかのコンピューティングシステムは、同じリソースまたはサービスへのアクセスを提供する。リソースまたはサービスを提供する各コンピューティングシステムでは、通常、一定期間中にそのシステムが処理可能な要求の数が制限されている。
米国特許公開第2013/0073703号
要求を行っているコンピュータシステムにサービスを提供しやすくするため、いくつかの企業は、集中型システムを利用し、それによってサービスまたはリソースを提供する各システムの使用率を追跡できるようにしている。集中型システムを用いることにより、サービスまたはリソースを提供するいくつかのコンピューティングシステム間で、各提供システムにかかる負荷のバランスを取ることができる。こうした集中型システムの1つとしては、ハードウェアロードバランサがある。ハードウェアロードバランサは、サービスまたはリソースを提供するコンピューティングシステム間に要求を分散するのに有用であり、それによって企業の各提供システムにわたって負荷のバランスを取ることができる。
各図面を通じて、参照番号は、参照された要素間の対応を示すために再度使用される。各図面は、本明細書で説明された本発明の実施形態を図示するために提供されるものであり、本発明の範囲を制限するものではない。
制作者システムによってホストされたサービスへのアクセスを消費者システムに提供するネットワーク環境の実施形態を示す図である。 制作者システムによってホストされたサービスへのアクセスを消費者システムに提供すると共に、制作者システムの健全性情報を1つ以上のリースエージェントに提供するネットワーク環境の実施形態を示す図である。 制作者システムによってホストされたサービスへのアクセスを消費者システムに提供するネットワーク環境の実施形態の代替図である。 制作者システムのサービスにアクセスするプロセスの実施形態を示す図である。 制作者システムのリースを消費者システムに提供するプロセスの実施形態を示す図である。 制作者システム更新プロセスの実施形態を示す図である。 一組の制作者システムを分配する分配プロセスの実施形態を示す図である。 制作者システムの観点からの制作者システム登録プロセスの実施形態を示す図である。 リースエージェントの観点からの制作者システム登録プロセスの実施形態を示す図である。 リースエージェント再分配プロセスの実施形態を示す図である。 ヒステリシスベースの制作者選択プロセスの実施形態を示す図である。 制作者システムによってホストされたサービスへのアクセスを消費者システムに提供するオーバーレイネットワーク環境の実施形態を示す図である。 制作者仮想マシンのサービスにアクセスするプロセスの実施形態を示す図である。 制作者仮想マシンのサービスへのアクセスを求める要求を処理するプロセスの実施形態を示す図である。 制作者仮想マシンへのアクセスをリースするプロセスの実施形態を示す図である。 オーバーレイネットワーク環境内の通信を促進するために使用可能な状態管理テーブルの実施例を示す図である。
序論
ハードウェアロードバランサを使用することにより、サービスまたはリソースへのアクセスを提供するコンピューティングシステム(このシステムは制作者システムと称することができる)に対して、当該サービスまたはリソースへのアクセスを要求するコンピューティングシステム(このシステムは消費者システムと称することができる)からの要求により過度の負荷がかかるのを防ぐ助けとなることが可能であるが、ハードウェアロードバランサは、いくつかの欠点を生じる恐れがある。例えば、ハードウェアロードバランサは、単一障害点となる。つまり、ハードウェアロードバランサが故障した場合、もはや制作者システムにサービス要求を転送することができないため、関連する企業システムからのアクセスが不可能となる場合がある。さらに、ハードウェアロードバランサは、高価で難解な複数のハードウェアで構成されるため、ハードウェアロードバランサは、企業システムの負荷をバランスさせるための解決策として魅力的なものとはなり得ない。
ハードウェアロードバランサに関する課題の解決策の1つとしては、非集中型ロードバランサを使用することである。しかしながら、非集中型ロードバランサを用いることにより、ハードウェアロードバランサの使用に関するいくつかの問題が解決されるものの、非集中型ロードバランサは最適状態に及ばない傾向がある。なぜなら、非集中型ロードバランサは企業システムに対する全体的な視野を持たず、通常は、各ロードバランサが、消費者システム及び制作者システムの確定したサブセットにサービスを提供するように制限されているためである。
本開示は、一組のリースエージェントを利用して、複数の消費者システムからのサービス要求を複数の制作者システム間に割り当てるシステム及びプロセスの実施形態について説明する。リースエージェントは、多くの場合には、複数の制作者システムの全体を把握しつつ、制作者システムのサブセットへのアクセス、またはそれらのサブセットのリースを監視し、割り当てることができる。さらに、各サービス要求について、1つの消費者システムは、いくつかのリースエージェントと、さらに、ある場合には複数の制作者システムと対話することができる。一組のリースエージェントは、ある実施形態では融合ロードバランサとして機能することができるが、それは、各リースエージェントが制作者システムのサブセットについて負荷をバランスさせて、負荷のバランスを取るプロセスが、一組の分散ハードウェアベースのシステム間に分散され得るためである。
有利には、ある実施形態では、各制作者システムについての情報の少なくとも一部を各リースエージェントにて保持しつつ制作者システムをリースエージェント間に分配することにより、前述した欠点を伴うことなく、ハードウェアロードバランサと非集中型ロードバランサの双方の利点を得ることができる。さらに、ある実施形態では、特定のリースエージェント及び/または制作者システムに消費者システムを割り当てないことにより、孤立したサブシステムへと制作者システムを分割するシステムに比べて、複数の制作者システムのそれぞれによって処理される負荷を経時的によりバランスさせることができる。
ある場合には、制作者システム及び/または消費者システムに実装されるシステム及びアプリケーションは、リースエージェントと一体になって機能するように変更される。例えば、以下でさらに説明されるように、消費者システムは、制作者システムへのアクセスをリースし、制作者システムのステータス情報を保持するように変更されてもよい。
いくつかの実施形態では、本開示のシステム及び方法を、消費者仮想マシン及び制作者仮想マシンをホスト可能な一組のコンピューティングホスト上に実装される1つ以上のオーバーレイネットワークと共に使用することができる。有利には、ある実施形態では、本開示のシステム及び方法は、消費者ホスト及び制作者ホストのネットワーク接続基盤に実装することができ、それにより、消費者仮想マシン及び/または制作者仮想マシンからの関与を必要とせずにリースプロセスを発生させることができる。
本開示の実施形態をオーバーレイネットワーク内に実装すると、制作者システムをリースエージェント間に分配する代わりに、各オーバーレイネットワークに関連付けられた制作者仮想マシンがリースエージェント間に個別に分配され得る。さらに、消費者仮想マシンに制作者仮想マシンをリースする際には、リースエージェントは、当該リースを要求している消費者仮想マシンと同じオーバーレイネットワークに割り当てられた制作者仮想マシンを選択することができる。
ネットワーク環境の概要
制作者システム106A〜Dによってホストされたサービスへのアクセスを消費者システム104A〜Cに提供するネットワーク環境100の実施形態を図1Aに示す。一般に、ネットワーク環境100は1つのデータセンターを表す。ただし、ある場合には、ネットワーク環境100のシステムは、複数のデータセンター間に分散される場合がある。
ネットワーク環境100は、複数の制作者システム106A〜D(本明細書においてこれらは、単数形で「制作者システム106(a producer system 106)」、または複数形で「制作者システム106(the producer systems 106)」と呼ばれることがある)、及び複数の消費者システム104A〜C(本明細書においてこれらは、単数形で「消費者システム104(a consumer system 104)」、または複数形で「消費者システム104(the consumer systems 104)」と呼ばれることがある)を含むことができる。なお、4つの制作者システム106及び3つの消費者システム104を図示しているが、ネットワーク環境100は、任意の数の制作者システム106及び消費者システム104を含むことができる。さらに、ネットワーク環境100は、1つ以上のデータセンターを表すものとして先に説明されたが、いくつかの実施形態では、消費者システム104の少なくとも一部は、データセンターから独立していてもよい。例えば、いくつかの実施形態では、ネットワーク環境100を特定のエンティティまたは組織と関連付けてもよい。このような実施形態では、消費者システム104の少なくとも一部は、ネットワーク環境100と通信可能なユーザまたは顧客のコンピューティングシステムを表し得るが、これらは、ネットワーク環境100に関連する残りのシステムの管理下ではなく、単独のまたは独立したエンティティの管理下にあってもよい。
一般に、各制作者システム106は、サービス及び/またはコンピュータリソースを消費者システム104に提供することができる。ある場合には、各制作者システム106が、同じサービス及び/またはリソースを消費者システム104にそれぞれ提供できるようにしてもよい。他の場合には、制作者システム106の少なくとも一部が、他の制作者システム106とは異なるサービス及び/またはリソースを提供できるようにしてもよい。制作者システム106によって提供されるこれらのサービス及び/またはリソースは、任意の種類のサービス及び/またはコンピューティングリソースを含むことができる。例えば、これらのサービス及び/またはコンピュータリソースとしては、データストレージアクセス;外部ネットワークアクセス(例えば、インターネットへのアクセス);内部リソースアクセス(例えば、ネットワーク環境100と同じエンティティによって管理されているデータベースへのアクセス);カタログサービスへのアクセス;ディレクトリサービスへのアクセス;アプリケーションへのアクセス;(例えば、コマンドまたは要求の分散処理を行うための)処理サービスへのアクセス;ルーティングサービス(例えば、ネットワークルーティングサービス)などを挙げることができる。説明を簡単にするために、本開示のこれ以降では、本明細書において通常の意味を有する用語「サービス」に加えて、サービス、コンピュータリソース、または制作者システム106によってもしくはこれを経由して提供され得るその他のリソースを指すために用語「サービス」を用いるものとする。
制作者システム106は、任意の種類のコンピューティングシステムを含むことができる。例えば、制作者システム106としては、クライアントシステム、サーバ(例えば、アプリケーションサーバ、ウェブサーバなど)、ラップトップ機、デスクトップ機、データベースシステム、バックアップシステム、ディレクトリシステム、重複排除システム、ストレージシステムなどを挙げることができる。同様に、消費者システム104は、任意の種類のコンピューティングシステムを含むことができる。例えば、消費者システム104としては、クライアントシステム、サーバ、ラップトップ機、デスクトップ機、タブレット、携帯電話、ゲーム機器、テレビなどを挙げることができる。いくつかの実施形態では、消費者システム104が制作者システムとして機能することもでき、逆に、制作者システムが消費者システム104として機能することもできる。例えば、ある消費者システム104は、制作者システム106(例えば、データベースシステムまたはストレージシステムとして機能する制作者システム)にアクセスしてデータを取得し得る。同じ消費者システム104は、例えば、別の消費者システム104にアプリケーションアクセスを提供することにより、制作者システムとしても機能し得る。ある場合には、消費者システム104及び制作者システム106を、それぞれクライアントシステム及びサーバシステムとみなすことができる。しかしながら、前述のように、消費者システム104及び制作者システム106はそのように限定されることはない。
制作者システム106によって提供されるサービスへのアクセスを消費者システム104が所望または要求する度に、消費者システム104は、1つ以上のリースエージェント102A〜102D(本明細書においてこれらは、単数形で「リースエージェント102(a leasing agent 102)」、または複数形で「リースエージェント102(the leasing agents 102)」と呼ばれることがある)にアクセスして、そのサービスを提供可能な制作者システム106へのアクセスを要求することができる。一般に、消費者システム104は、リースエージェント102のあるサブセットにアクセスすることにより、アクセス対象の制作者システム106の識別情報を取得してサービス要求を実行する。リースエージェント102のサブセットは、使用可能なリースエージェント102からランダムに選択することができ、使用可能なリースエージェント102のいくつかを含むことができる。例えば、制作者システム106へのアクセスを求める要求は、図1Aに示した使用可能な4つのリースエージェントのうちの3つに提供されてもよい。しかしながら、ある場合には、消費者システム104を特定のリースエージェント102に割り当ててもよい。さらに、ある場合には、消費者システム104は、制作者システム106へのアクセスを求める要求を、ネットワーク環境100内の1つのリースエージェント102または既存の各リースエージェント102に提供してもよい。
リースエージェント102、消費者システム104及び制作者システム106の間の通信の一実施例を図1Aに示す。図1Aから理解できるように、消費者システム104のそれぞれは、使用可能な4つのリースエージェント102のうちの3つと通信を行っている。破線矢印によって示すように、この通信には、例えば、制作者システム106によって提供されるサービスへのアクセスを求める要求及び/または制作者システム106へのアクセスを求める要求に関する制御情報などの制御情報が含まれていてもよい。さらに、制作者システム106のサブセットに消費者システム104を接続する実線矢印によって示すように、この通信には、消費者104によるサービス要求に対してサービスを提供する制作者システム106に関するデータが含まれていてもよい。加えて、リースエージェント102は、それら自体の間で通信することにより、例えば、リースエージェント102及び/または制作者システム106に関するステータス情報を提供してもよい。なお、図1Aのネットワーク環境100において例示された様々なシステム間の相互通信は、消費者システム104、制作者システム106及びリースエージェント102の間の通信の一実施例にすぎず、限定を意図するものではないことに留意すべきである。ネットワーク環境100の様々なシステム間の通信については、図3〜10に関して本明細書で説明されるプロセスとの関連でさらに詳しく説明する。
制作者システム106によってホストされたサービスへのアクセスを消費者システム104に提供すると共に、制作者システムの健全性情報を1つ以上のリースエージェント102に提供するネットワーク環境100の実施形態を図1Bに示す。図1Bに示すように、ある場合には、制作者システム106から消費者システム104へと、消費者システム104から制作者システム106へとの双方においてデータを提供することができる。つまり、ある場合には、データ通信を双方向とすることができる。
さらに、制作者システム106は、健全性情報をリースエージェント102に提供することができ、それによってリースエージェント102は、どの制作者システム106が機能しているか、及び消費者システム104に割り当てるのに使用可能なリソースをどの制作者システム106が備えているかを追跡することができる。ある場合には、制作者システム106は、指定された時刻に健全性情報を提供してもよい。他の場合には、健全性情報を求めてリースエージェント102が制作者システム106に要求し、またはpingすることができる。多くの場合、制作者システム106A〜106Cによって示されるように、各制作者システム106は、1つのリースエージェント102に割り当てられる。しかしながら、いくつかの実施形態では、制作者システム106Dの場合と同様に、制作者システム106を複数のリースエージェント102に割り当ててもよい。
図1A及び1Bには、種々のデータチャネル及び制御チャネルを示しているが、ネットワーク環境100は、図1A及び1Bに示したデータチャネル及び制御チャネルのうちの一部または全てを実装することができる。従って、図1Bには消費者システム104とリースエージェント102との間のチャネルを示していないが、通常、消費者システム104とリースエージェント102との間には、図1Aに示したような制御チャネルが存在する。さらに、これらのチャネルの一部または全てを単方向とし、単方向では、一方のシステムがデータまたは制御情報を要求し、他方のシステムがデータまたは制御情報を提供し得る。あるいは、または加えて、これらのチャネルの一部または全てを双方向としてもよく、双方向では、通信中の2つのシステムがデータまたは制御情報の要求と提供の両方を行い得る。
図2は、制作者システム106によってホストされたサービスへのアクセスを消費者システム104に提供するネットワーク環境100の実施形態の代替図である。図2に示すように、ネットワーク環境100の各システムは、ネットワーク202を介して相互に通信することができる。ネットワーク202は、任意の種類の有線ネットワークまたは無線ネットワーク及びそれらの組み合わせを含むことができる。例えば、ネットワーク202としては、ローカルエリアネットワーク(Local Area Network:LAN)、ワイドエリアネットワーク(Wide Area Network:WAN)、セルラーネットワーク、イーサネットベースのネットワーク、WiFiネットワーク、WiLANネットワークなどを挙げることができる。さらに、ある場合には、ネットワーク202はインターネットを含むことができる。
図2に示すように、図1Aで説明された各システムは、複数のサブシステムを含んでもよい。これらのサブシステムは、ハードウェアまたはソフトウェアによって実装され得る。例えば、消費者システム104は、リースリクエスタ240、ステータスモジュール242、接続モジュール244及びリソースリクエスタ246を含んでもよい。リースリクエスタ240は、1つ以上の制作者システム106のリースを1つ以上のリースエージェント102に要求するように構成され得る。ある場合には、リースリクエスタ240は、明確に制作者システム106へのアクセスを要求してもよい。他の場合には、リースリクエスタ240は、制作者システム106へのアクセスを明示的に要求するか否かに関わらず、サービスへのアクセスを要求してもよい。
1つ以上の制作者システム106の識別情報をリースリクエスタ240が一旦取得すると、接続モジュール244は、リースエージェント102によって特定された制作者システム106の一部または全てとの通信の確立を試みることができる。制作者システム106との接続が確立された後、リソースリクエスタ246は、消費者システム104が接続を正常に確立した制作者システム106にリソースまたはサービスを要求することができる。
ステータスモジュール242は、制作者システム106に関するステータス情報を取得することができる。次いで、この情報をリースエージェント102に提供することにより、リースエージェント102が、制作者システム106へのアクセスを求める消費者システム104からの要求に応答して、制作者システム106を容易に選択できるようにする。この情報は、リースエージェント102の対応するステータスモジュール228に提供され得る。ある場合には、ステータスモジュール242は、制作者システム106との接続の確立の成功または不成功に基づいてステータス情報を取得する。他の場合には、ステータス情報は、制作者システム106及び/または、制作者システム106の一部として含まれる、対応するステータスモジュール262にクエリを送ることによって取得される。このステータス情報は、制作者システム106との接続、及び/または制作者システム106によるサービスの提供に関する任意の情報を含んでもよい。例えば、ステータス情報は、消費者システム104と制作者システム106との間の通信の確立の成功または不成功に関する情報を含んでもよい。別の実施例として、ステータス情報は、所定期間中に制作者システム106にアクセスする消費者システム104の数を含んでもよい。さらなる実施例は、制作者システム106の応答性、制作者システム106の容量、制作者システムで使用可能なリソースなどに関する情報を含んでもよい。
図2に示すように、制作者システム106は、登録モジュール260及びステータスモジュール262を含んでもよい。前述したように、ステータスモジュール262は、制作者システム106に関するステータス情報を、制作者システム106に関するステータス情報を要求する消費者システム104に提供し得る。さらに、ある場合には、ステータスモジュール262は、自発的にまたはリースエージェント102からの要求に応答して、リースエージェント102にステータス情報を提供してもよい。
登録モジュール260は、制作者システム106をリースエージェント102に登録するように構成されている。ある実施形態では、登録モジュール260は、制作者システム106が最初に起動したときに初期化ルーチンの一部として制作者システム106を自動的に登録してもよい。他の実施形態では、登録モジュール260は、ユーザまたはアプリケーションからのコマンドに応答して制作者システム106を登録してもよい。ある場合には、登録モジュール260は、制作者システム106に割り当てられたリースエージェントがもはや使用できないと制作者システム106が判定したときに制作者システム106を再登録してもよい。
前述したように、リースエージェント102は、ステータスモジュール228を含んでもよい。ステータスモジュール228は、消費者システム104と制作者システム106の一方または両方から、制作者システム106のステータスに関してステータス情報を受信することができる。加えて、ステータスモジュール228は、制作者システム106に関連するステータス情報を別のリースエージェント102に提供してもよい。さらに、ある場合には、ステータスモジュール228は、ステータス情報を他のリースエージェント102に要求することによって他のリースエージェント102の健全性チェックを実行してもよい。例えば、ステータスモジュール228は、健全性チェックを求める要求がリースエージェント102によって応答されたかどうかに基づき、リースエージェント102がもはや使用できないかどうかを判定してもよい。ある場合には、ステータスモジュール228は、ステータス情報を制作者システム106に要求することによって制作者システム106の健全性チェックを実行してもよい。
ステータスモジュール228に加えて、リースエージェント102は、制作者リポジトリ220、分配システム222、リースシステム224及び登録モジュール226を含むことができる。制作者リポジトリ220は、制作者システム106に関する情報を記憶するための任意の種類のデータベース、リポジトリまたはストレージを含むことができる。例えば、制作者リポジトリ220は、制作者システム106に関連するステータス情報、制作者システム106の識別情報、及びリースエージェント102間での制作者システム106の割り当てまたは分配に関する情報を含むことができる。いくつかの実施形態では、制作者リポジトリ220に記憶された情報の一部または全ては、制作者リポジトリ220の代わりにまたはそれに加えて、エージェントリポジトリ206に記憶されてもよい。
分配システム222は、使用可能な制作者システム106をネットワーク環境100のリースエージェント102間に分配可能な任意のシステムを含むことができる。一般に、分配システム222は、使用可能な制作者システム106を重複しないサブセットまたは不均等なサブセットに分割し、次いで、1つのサブセットを各リースエージェント102に割り当てる。従って、4つのリースエージェント102がある場合、制作者システム106を4つのサブセットに分割し、1つのサブセットを各リースエージェント102に関連付けるようにしてもよい。しかしながら、ある場合には、これらのサブセットが重複する場合がある。このような場合、制作者システム106を複数のリースエージェント102に割り当て、または関連付けるようにしてもよい。リースエージェント102間に制作者システム106を分配するプロセスは、ネットワーク環境100が最初に初期化されたときに発生し得る。加えて、このプロセスは、周期的に再発生し得る。例えば、制作者システム106を分配するプロセスは、使用可能な制作者システム106の追加によるかそれとも削除によるかを問わず、使用可能な制作者システム106の数が変わる度に、または使用可能な制作者システム106の閾変化があったときに発生し得る。
制作者システム106へのアクセスを消費者システム104がリースエージェント102に要求する度に、リースシステム224は、例えば、制作者システム106に関連するステータス情報、制作者システム106の位置(例えば、地理的位置、データセンター、サーバラックなど)、及び消費者システム104がアクセスを求めているリソースへのアクセスを制作者システム106が有するかどうかなどのいくつかの要因に基づき、制作者システム106を特定して消費者システム104にリースすることができる。一旦リースシステム224が制作者システムを特定すると、リースシステム224は、要求を行っている消費者システム104に制作者システム106の識別情報を提供することができる。さらに、ある場合には、リースシステム224は、消費者システム104が制作者システム106にアクセスすることを許可されているリース時間を消費者システム104に提供してもよい。あるいは、または加えて、リースシステム224は、その他の消費可能なリソースの量または測定基準を消費者システム104に提供してもよい。例えば、消費可能なリソースは、計算サイクル、金銭、ディスク記憶容量、接続要求などとすることができる。
登録モジュール226は、制作者システム106の登録モジュール260に対応するものとして機能してもよい。リースエージェント102に登録することを求める要求を制作者システム106から受信すると、リースエージェント102の登録モジュール260は、制作者システム106がリースエージェント102に割り当てられているかどうかを判定し得る。割り当てられている場合、登録モジュール226は、制作者システム106を登録することができ、これは、制作者システム106の可用性ステータスならびに制作者システム106に関連するステータス情報を、例えば、制作者リポジトリ220に記憶することを含み得る。他方、制作者システム106がリースエージェント102に割り当てられていないと登録モジュール226が判定した場合、登録モジュール226は、制作者システム106に割り当てられている別のリースエージェント102を特定することができ、制作者システム106に割り当てられているリースエージェント102の識別情報を制作者システム106に通知することができる。
ある実施形態では、ネットワーク環境100は、エージェントリポジトリ206及び/または分配システム204を含んでもよい。エージェントリポジトリ206は、ネットワーク環境100に含まれるリースエージェント102及び/または制作者システム106に関する情報を含んでもよい。エージェントリポジトリ206に記憶された情報は、リースエージェント102、消費者システム104及び制作者システム106のうちの1つ以上によって使用され得る。例えば、ある場合には、リースエージェント102は、エージェントリポジトリ206を使用して、ネットワーク環境100の制作者システム106の数及び/または識別情報を判定してもよい。この情報を用いて、リースエージェント102は、制作者システム106の分配の仕方を決定することができる。ある場合には、消費者システム104は、エージェントリポジトリ206を使用することにより、リースエージェント102によって制作者システム106が特定されて消費者システム104によるアクセスが可能となった後に、制作者システム106がどこに位置しているかを判定してもよい。エージェントリポジトリ206の使用における別の実施例として、ある場合には、例えば、制作者システム106が最初に起動した時に制作者システム106がエージェントリポジトリにアクセスして、アクセス対象のリースエージェント102の識別情報を判定してもよい。
いくつかの実施形態では、リースエージェント102間に制作者システム106を分配するプロセスを分配システム204が実行してもよい。このような実施形態では、リースエージェント102自体には分配システム222が含まれなくてもよい。
いくつかの実施形態では、例示した図2のシステムに含まれるモジュールの少なくとも一部を、これらのシステムによって提供されるアプリケーション及び/またはリソースに統合してもよい。例えば、制作者システム106のステータスモジュール262を、制作者システム106によって提供されるアプリケーション及び/またはリソースに統合してもよい。同様に、消費者システム104によってホストされるアプリケーションまたはサービスにステータスモジュール242を統合してもよい。
制作者システムのサービスにアクセスするプロセスの実施例
制作者システム106のサービスにアクセスするプロセス300の実施形態を図3に示す。プロセス300は、制作者システム106にアクセスするためのリースまたは一時的許可をリースエージェント102から得ることによって制作者システム106のサービスまたはコンピュータリソースにアクセス可能な任意のシステムによって実装することができる。例えば、プロセス300は、全部または一部において、いくつか例を挙げると、消費者システム104、リースリクエスタ240、接続モジュール244、リソースリクエスタ246及びステータスモジュール242によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス300を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス300の各部を説明する。
プロセス300は、ブロック302で開始される。ここで、例えば、リースリクエスタ240は、制作者システム106へのアクセスを求めるリース要求を生成する。ある場合には、リース要求は、消費者システム104のユーザまたは消費者システム104上のアプリケーションがアクセスを望むコンピュータリソースまたはサービスの識別情報を含んでもよい。他の場合には、リース要求は、消費者システム104によってアクセスされる制作者システム106のサービスを指定せずに制作者システム106へのアクセスを求める要求で構成される。
ブロック304では、リースリクエスタ240は、ネットワーク環境100に含まれるリースエージェント102のサブセットにリース要求を提供する。ある場合には、リースリクエスタ240は、一部のまたは全ての使用可能なリースエージェント102にそのリース要求を提供してもよい。リースリクエスタ240は、ネットワーク環境100の各リースエージェント102の識別情報を含み得るエージェントリポジトリ206にアクセスすることにより、使用可能なリースエージェント102を特定してもよい。他の場合には、消費者システム104は、初期化時もしくは起動時に、または消費者システム104の動作中のその他の時間に、リースエージェント102の識別情報を用いてそれぞれ設定されてもよい。例えば、ユーザ(例えば、管理者)は、リースエージェント102の識別情報を消費者システム104に提供してもよい。リースエージェント102の識別情報には、リースエージェント102の名前、リースエージェント102のアドレス(例えば、インターネットプロトコル(IP)アドレスまたは他のネットワークアドレス)、及び/またはネットワーク環境100内のリースエージェント102を特定するために使用可能なその他の情報が含まれてもよい。いくつかの実施形態では、リースエージェント102にリース要求を提供することは、消費者システム104が以前に対話していた1つ以上の制作者システム106に関連するステータス情報をリースエージェント102に提供することを含むことができる。
ブロック306では、消費者システム104は、制作者システム106の識別情報を、ブロック304にてリース要求が提供されたリースエージェント102の各サブセットから受信する。ある場合には、消費者システム104は、制作者システム106の識別情報を、リースエージェント102のサブセットの一部から受信する。例えば、消費者システム104は、リースエージェント102の1つのサブセット、2つのサブセットまたは全サブセットから制作者システム106の識別情報を受信してもよい。消費者システム104がどの制作者システム106の識別情報も受信しなかった場合、プロセス300を終了させてもよく、ブロック302及び/または304に関連する動作を繰り返してもよく、かつ/またはユーザ(例えば、管理者)に警告を発してもよい。ある場合には、制作者システム106の識別情報を受信することは、消費者システム104が制作者システム106にアクセスすること、または制作者システム106へのアクセスをリースすることを許可されている時間を受信することを含む。リースエージェント102のサブセットに含まれる各リースエージェント102は、1つの制作者システム106の識別情報を提供することができる。しかしながら、ある場合には、リースエージェントのサブセットに含まれる各リースエージェント102は、複数の制作者システム106の識別情報を提供してもよい。リースエージェント102の識別情報と同様に、制作者システム106の識別情報は、消費者システム104に応じた制作者システム106を特定する、または制作者システム106へのアクセス方法を提供する任意の情報を含むことができる。例えば、制作者システム106の識別情報としては、名前、アドレス(例えば、IPアドレス)、または、例えばエージェントリポジトリ206に記憶されているテーブルもしくはデータ構造内で制作者システム106を検索するために使用可能な識別子を挙げることができる。
ある場合には、ブロック306は、リースエージェント102の各サブセットによって特定された制作者システム106のステータス情報を受信することを含んでもよい。このステータス情報を使用して、どの制作者システム106にアクセスすべきかを消費者システム104が決定するのに役立ててもよい。ある場合には、ステータス情報は、リースエージェント102が制作者システム106と通信することによって取得されてもよい。あるいは、または加えて、ステータス情報は、以前に制作者システム106と通信した消費者システム104から取得されてもよい。受信したステータス情報には、リースエージェント102に使用可能な独立した一組のステータス情報、またはリースエージェント102に使用可能なステータス情報の一部が含まれてもよい。ある場合には、受信したステータス情報は、リースエージェント102に使用可能なステータス情報と重複していても重複していなくてもよい。
接続モジュール244は、ブロック308にて、ブロック306で特定された各制作者システム106との接続の開始を試みる。ある場合には、接続モジュール244は、ブロック306で特定された制作者システム106のサブセットとの接続の開始を試みてもよい。接続の開始を試みることは、制作者システム106との通信チャネルを開くことを試みる任意のプロセスを含むことができる。例えば、接続の開始を試みることとしては、接続要求パケットを制作者システム106に送信することを挙げることができる。一般に、接続モジュール244は、制作者システム106の識別情報を消費者システム104が受信した時に制作者システム106との接続の確立を試みてもよい。例えば、各リースエージェント102は、消費者システム104から異なる距離に配置され得るか、あるいは異なる負荷を有し得るため、複数のリースエージェント102から消費者システム104が同時に応答を受信することはほとんどあり得ない。そのため、接続モジュール244が、複数の制作者システム106との接続の開始を同時に試みることはほとんどあり得ない。むしろ、制作者システム106との接続を開始する試みは、それらのずれがわずかな程度に収まっている場合でも、時間をずらして行われる場合がある。しかしながら、いくつかの実施形態では、接続モジュール244が、複数の制作者システム106との接続の開始を同時に試みる場合がある。例えば、ある場合には、消費者モジュール104は、リースエージェント102の各サブセットが応答するまで待機してもよく、またはある状況では、複数のリースエージェント102から同時に応答を受信してもよい。
ブロック310では、リソースリクエスタ246は、接続モジュール244が接続を正常に確立した最初の制作者システム106に対し、サービスまたはコンピュータリソースにアクセスするまたはサービスまたはコンピュータリソースへのアクセスを要求する。ある場合には、制作者システム106との接続を正常に確立することは、確認応答(acknowledge:「ack」)パケットなどを制作者システム106から受信することを含むことができる。ブロック308に関して上述したのと同様の理由により、各制作者システム106との接続は、時間をずらして確立される場合がある。しかしながら、接続モジュール244が、同時にまたはほぼ同時に、2つ以上の制作者システム106との接続を実際に正常に確立した場合、リソースリクエスタ246は、サービスへのアクセスを要求するための制作者システム106をランダムに選択することができる。あるいは、リソースリクエスタ246は、選択アルゴリズムを使用して、どの制作者システム106にサービスを要求すべきかを決定することができる。選択アルゴリズムとしては、例えば、ラウンドロビン、最低使用頻度(LRU)またはその他の種類の選択アルゴリズムを挙げることができるが、これらに限定されることはない。いくつかの実施形態では、消費者システム104は、通信接続または通信チャネルが確立されている制作者システム106の一部または全てにサービスへのアクセスを要求してもよい。ある場合には、サービスは同じ種類であってもよい。他の場合には、消費者システム104は、異なるサービスへのアクセスを各制作者システム106に要求してもよい。
さらに、特定時点での消費者システム104の要求よりも多くの制作者システムとの接続が正常に確立された場合、消費者システム104は、1つ以上の別の制作者システム106に対するリースを放棄してもよい。あるいは、消費者システム104は、別の制作者システム106のリースをリースプール内に保持してもよく、別の制作者システム106に対する接続を維持してもよい。このような場合、別の制作者システム106のリース期間中のある時に、消費者システム104が別のサービスへのアクセスを要求した場合、消費者システム104は、リースプール内にリースが保持されていた別の制作者システム106のうちの1つの制作者システム106のサービスを利用することができる。
ブロック312では、ステータスモジュール242は、最初に接続された制作者システム106からステータスメタデータを受信する。ある場合には、ステータスモジュール242は、接続モジュール244が通信チャネルを正常に確立した各制作者システム106からステータスメタデータを受信してもよい。さらに、ステータスモジュール242は、接続モジュール244が通信チャネルの確立に失敗した制作者システム106からステータスメタデータを取得してもよい。例えば、接続モジュール244が特定の制作者システム106との通信チャネルの確立に失敗したという事実が、その制作者システム106に関連するステータスメタデータとして含まれていてもよい。ステータスメタデータは限定されず、制作者システム106との接続の確立に関する情報、制作者システム106との接続の維持に関する情報、制作者システム106の応答性に関する情報、及び制作者システム106で使用可能なサービスに関する情報を含むことができる。例えば、ステータスメタデータとしては、制作者システム106との接続が経過した時間、制作者システム106と接続する際のレイテンシ、制作者システム106で使用可能な処理リソース、(例えば、パケットの消失によって)制作者システム106に要求を再送信する必要がある回数、及び制作者システム106のステータスとの関連付けが可能なその他の種類のデータを挙げることができる。
いくつかの実施形態では、ブロック310の前にブロック312を実行してもよい。このような場合、ステータスモジュール242は、接続済みの各制作者システム106からステータス情報を受信してもよい。このような場合、消費者システム104は、受信したステータス情報に基づき、制作者システム106を選択してサービスにアクセスすることができる。
判定ブロック314では、消費者システム104は、例えば、リソースリクエスタ246を用いて、別のサービスへのアクセスが望まれているかどうかを判定する。このような他のサービスは、異なるサービスであってもよく、または同じ種類のサービスであってもよい。例えば、ある場合には、あるサービスは、ネットワークアプリケーションへのアクセスに関するものであってもよく、別のサービスは、ネットワークリソース(例えば、ウェブページなどのネットワークページによってホストされた画像または映像)のダウンロードに関するものであってもよい。あるいは、両方のサービスを使用してネットワークリソースをダウンロードするようにしてもよい。例えば、ユーザは、2つのネットワークページから2つのネットワークページまたは2つのリソースをダウンロードしてもよい。そのような場合、接続モジュール244は、特定された制作者システム106との接続をブロック308で開始する。ある場合には、接続モジュール244は、消費者システム244に関連付けられたリースプール内で特定された制作者システム106との接続を開始する。リースプールは、リソースへのアクセスを提供するために消費者システム104に現在リースされている制作者システム106の識別情報を含むことができる。ある場合には、リースプールは、消費者システム104にリースされているものの、消費者システム104が現在アクセスしていない制作者システム106を含む。リースプールにリースが1つも含まれていない場合、消費者システム104は、例えば、リースリクエスタ240を使用してプロセス300を再度実行してもよい。いくつかの実施形態では、判定ブロック314は任意である。例えば、消費者システム104にリースされる制作者システム106がない場合、ブロック302から開始してプロセス300を繰り返してもよい。
いくつかの実施形態では、プロセス300を使用して、制作者システム106に対する以前のリースを更新することができる。このような場合、ブロック302で生成されたリース要求は、以前に消費者システム104がアクセスした制作者システム106の識別情報を含むことができる。さらに、リース要求は、その要求が更新要求であるとの指示を含むことができる。次いで、消費者システム104に応じた制作者システム106を元々特定したリースエージェント102に対し、更新リース要求を提供することができる。制作者システム106が、依然として使用可能であり、かつ/または消費者システム104にサービスを提供する能力を持っているとリースエージェント102が判断したと仮定すると、リースエージェント102は、ブロック306の一部として、更新要求を承認したことを示すことができ、更新リースのための時間を消費者システム104に提供することができる。1つ以上の別の制作者システム106に関するリースを消費者システム104がリースプール内に保持しており、かつ別の制作者システム106のサービスを消費者システム104が利用せずに別の制作者システム106のリース期間の期限が切れた場合、消費者システム104は、別の制作者システム106に対応したリースエージェント102にリース更新要求を送信せずにそのリースを終わらせることができる。
ある場合には、リースの更新を要求するプロセスは、現在のリースの期限が切れた時に発生し得る。他の場合には、消費者システム104は、例えば、リソースリクエスタ246を用いて、1つ以上の制作者システム106のサービスへのアクセスを求める現在のサービス要求が、リース時間の期限が切れるまでに完了しない確率を判定してもよい。その確率が更新閾値を満たしている場合、消費者システム104は、現在のリースの期限が切れる前のある時点にて制作者システム106のリースの更新を要求し、それによってリースの期限切れによってサービスが停止することを抑制または回避するようにしてもよい。
ある実施形態では、制作者システム106へのアクセスをリースすることは、制作者システム106及び/またはリースエージェント102のうちの1つ以上に関連する組織またはエンティティへの支払いを行うことを含んでもよい。例えば、ペイフォーアクセス(pay−for−access)サービスの一部として制作者システム106を利用できるようにしてもよい。あるいは、制作者システム106へのアクセスをリースすることには、何らの支払いも必要としなくてよい。このような実施形態では、リースは、制作者システム106へのアクセスの一時性に関係するものであり、ファイナンスリースではない。
制作者システムのリースを消費者システムに提供するプロセスの実施例
制作者システム106のリースを消費者システム104に提供するプロセス400の実施形態を図4に示す。プロセス400は、制作者システム106の識別情報を消費者システム104に提供可能な任意のシステムによって実装することができる。さらに、プロセス400は、制作者システム106へのアクセスを消費者システム104にリース可能な任意のシステムによって実装することができる。例えば、プロセス400は、全部または一部において、いくつか例を挙げると、リースエージェント102、リースシステム224及びステータスモジュール228によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス400を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス400の各部を説明する。
プロセス400は、ブロック402で開始される。ここで、例えば、リースエージェント102のリースシステム224は、制作者システム106へのアクセスのリースを求める要求を消費者システム104から受信する。ある事例では、この要求は、消費者システム104がアクセスを求めている制作者システム106の特定のサービスまたはコンピューティングリソースの識別情報を含んでもよい。先の節で説明したように、ある場合には、リース要求は、制作者システム106の消費者104による現在のリースを更新することを求める要求を含んでもよい。
ブロック404では、ステータスモジュール228は、1つ以上の制作者システム106のステータスメタデータを消費者システム104から受信し得る。このように受信したステータスメタデータには、消費者システム104が、1つ以上の制作者システム106との通信、または1つ以上の制作者システムのサービスへのアクセスを以前に試みたことに関連するデータが含まれてもよい。例えば、受信したステータスメタデータには、レイテンシ情報、消費者システム104による制作者システム106への要求の応答性に関するデータ、またはブロック312に関して先に説明したその他の情報が含まれてもよい。さらに、受信したステータスメタデータには、消費者システム104が制作者システム106から受信したデータ、及び/または制作者システム106との対話に基づいて消費者システム104が生成したデータステータスメタデータが含まれてもよい。いくつかの実施形態では、ブロック404は任意であってよい。例えば、要求が、消費者システム104から受信した最初の要求である場合には、消費者システム104は、リースエージェント102に提供する何らのステータスメタデータも持っていなくてよい。
ブロック406では、ステータスモジュール228は、ブロック404で受信したステータスメタデータに基づいて制作者システムステータス情報を更新する。ある場合には、制作者システムステータス情報を更新することは、制作者リポジトリ220内の制作者システム106に関連するエントリを更新することを含んでもよい。いくつかの実施形態では、ブロック406は任意であってよい。
さらに、ブロック408では、ステータスモジュール228は、ブロック404で受信したステータスメタデータの少なくとも一部を第2のリースエージェントに提供する。例えば、プロセス400を実行しているリースエージェント102は、ステータスメタデータの一部が、異なるリースエージェント102に割り当てられた制作者システム106のためのものであると判定してもよい。このような場合、リースエージェント102は、その制作者システム106に割り当てられているリースエージェント102にステータス情報を提供してもよい。他の場合には、リースエージェント102は、ステータスメタデータを、当該リースエージェント102が通信を行っている全てのリースエージェント102(これらは、ネットワーク環境100に属するリースエージェント102の一部または全てであり得る)に提供してもよい。任意の種類のデータ転送プロセス、データ複製プロセス及び/またはデータ同期プロセスをネットワーク環境100内に実装することにより、リースエージェント102間でステータスメタデータを共有するようにしてもよい。例えば、フラッドフィルアルゴリズム(flood fill algorithm)またはプリム法(Prim’s algorithm)を使用して、リースエージェント102間でデータを共有するようにしてもよい。リースエージェント102間でデータを共有するために本明細書で使用可能な別のシステム及び方法は、2010年12月28日出願の「DATA REPLICATION FRAMEWORK」と題する米国出願第12/980,133号;2010年12月28日出願の「DATA REPLICATION FRAMEWORK」と題する米国出願第12/980,153号;2010年12月28日出願の「DATA REPLICATION FRAMEWORK」と題する米国出願第12/980,193号;及び2010年12月28日出願の「DATA REPLICATION FRAMEWORK」と題する米国出願第12/980,258号に記載されている。これらの上記出願のそれぞれは、その全体が参照によってここに援用される。
いくつかの実施形態では、ブロック408は任意である。例えば、いくつかの実施形態では、消費者システム104は、ブロック402で要求を受信したリースエージェント102に割り当てられている制作者システム106のステータスメタデータをリースエージェント102に提供するのみである。
ブロック410では、リースシステム224は、リースエージェント102に割り振られた、または割り当てられた各制作者システム106に関連する制作者ステータス情報に基づいて制作者システムを選択する。ある場合には、制作者ステータス情報は、消費者システム104によって提供された情報(例えば、ブロック404で受信したステータスメタデータ)に基づくものである。他の場合には、制作者ステータス情報は、リースエージェント102が制作者システム106と通信を行うことによって取得された情報に基づくものであってもよい。例えば、リースエージェント102は、リースエージェント102に割り当てられた各制作者システム106の健全性チェックまたはステータスチェックを実行してもよい。これらの健全性チェックとしては、制作者システム106にpingすること、リソースの可用性に関する更新を制作者システム106に要求すること、または制作者システム106のステータスに関する情報を取得するその他のプロセスを挙げることができる。さらに、制作者ステータス情報は、他のリースエージェント102から受信した情報に基づくものであってもよい。
ある実施形態では、制作者システム106を選択することは、少なくとも部分的には、それぞれの制作者システム106に関連付けられた重みに基づくものであってもよい。これらの重みは、制作者ステータス情報に基づいて生成されてもよい。例えば、消費者システム104と通信するときに制作者システム106のレイテンシが低く、かつ誤り率が低いことを制作者ステータス情報が示している場合、その制作者システム106については、重みをより大きくすることにより、ブロック410で選択されやすくなるようにしてもよい。逆に、消費者システム104との接続を切断することが多い制作者システム106については、重みをより小さくすることにより、ブロック410で選択されにくくしてもよい。
ある場合には、制作者システム106の選択は、消費者システム104に対する制作者システム106の位置といった、いくつもの別の要因に基づくものであってもよい。この位置情報としては、例えば、制作者システム106が消費者システム104と同じデータセンターまたは同じサーバラックに配置されているかどうかを挙げることができる。制作者システム106を選択することは、ある場合には、消費者システム104によって要求されたサービスに基づくものであってもよい。さらに他の場合には、制作者システム106の選択は、消費者システム104によって要求された、かつ/または消費者システム104に以前に割り振られたリース時間の長さに部分的に基づくものであってもよい。ある場合には、リースシステム224は、負荷が最も低い制作者システム106を選択してもよい。他の場合には、リースシステム224は、閾値に満たない負荷を有する一組の制作者システム106から制作者システム106を選択してもよい。いくつかの実施形態では、選択された制作者システム106との通信を消費者システム104が確立したかどうかに関わらず、選択された制作者システム106の負荷が選択直後に増加したことを判定する。有利には、ある実施形態では、制作者システムとの接続を消費者が確立したことに関係なく、選択された制作者システム106に対して負荷の増加を記録することにより、同じ制作者システム106が一定期間内で閾回数よりも多く選択される確率が低下する。なぜなら、制作者システム106の実負荷が低くあり得るものの、制作者システムを選択する際に、消費者システム104との今後の接続における予想負荷が考慮されるためである。
ある場合には、ブロック410で制作者システム106を選択することは、1つ以上の負荷測定基準(例えば、接続、プロセッサ利用状況など)に対して負荷が最も低い制作者システム106を選択することを含んでもよい。あるいは、制作者システム106を選択することは、閾負荷に満たない負荷を有する一組の制作者システム106に含まれる制作者システム106を選択することを含んでもよい。負荷閾値に満たない負荷を有する一組の制作者システム106の中から制作者システム106を選択することは、ランダムで行ってもよく、擬似ランダムで行ってもよく、または選択アルゴリズム(例えば、最低使用頻度、中央値負荷(median load))に基づいて行ってもよい。有利には、いくつかの実施形態では、負荷が最も低い制作者システム106を常に選択する代わりに、一組の制作者システム106から制作者システム106を選択することにより、負荷変動の確率及び/または発生が抑制される。さらに、ネットワーク環境100の他の部分に比べて高負荷に関与する一部のシステムが生じるなどの、ネットワーク環境100を伝わる負荷のバブル(load bubble)、または負荷のホットスポットが発生しにくくなる。
ブロック412では、リースシステム224は、ブロック410で選択された制作者システム106のリース情報を消費者システム104に提供する。このリース情報は、制作者システム106の識別情報、及びある場合には、消費者システム104が制作者システム106にアクセスすることが許可されているリース時間の長さを含むことができる。前述したように、制作者システム106の識別情報は、ネットワークアドレスなどの、制作者システム106の検索及びこれへのアクセスを容易にすることができる任意の情報を含むことができる。いくつかの実施形態では、制作者システム106の識別情報を提供することは、認証鍵または公開鍵を提供して制作者システム106との通信を促進することを含むことができる。
先に示したように、ある場合には、リース更新要求のためにプロセス400を使用することができる。このような場合、ブロック410は、消費者システム104がリースの更新を要求した制作者システム106が、依然としてリースに使用可能であるかどうかを判定することを含むことができる。制作者システム106が依然としてリースに使用可能であるかどうかを判定することは、消費者システム104にサービスを提供し続けるためのリソース容量を制作者システム106が備えているかどうかを判定することを含むことができる。さらに、制作者システム106が依然としてリースに使用可能であるかどうかを判定することは、制作者システム106に関連する制作者ステータス情報についての1つ以上の測定基準が可用性閾値を満たしているかどうかを判定することを含むことができる。例えば、この判定としては、制作者システム106に関連する誤り率が閾誤り率を下回っているかどうかを確認することを挙げることができる。制作者システム106がリース更新に使用可能である場合、リースエージェント102は、制作者システム106の更新済みのリースを消費者システム104に送信することができる。制作者システム106がリース更新に使用できないとリースエージェント102が判定した場合、リースエージェント102は、そのように報告することができ、かつ/または、代わりとなる制作者システム106のリース情報を提供することができる。
制作者システム更新プロセスの実施例
制作者システム更新プロセス500の実施形態を図5に示す。プロセス500は、制作者システム106の可用性を更新することができ、制作者システム106をリースエージェント102間に再分配することができる任意のシステムによって実装することができる。例えば、プロセス500は、全部または一部において、いくつか例を挙げると、リースエージェント102、分配システム222、分配システム204、登録モジュール226及びステータスモジュール228によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス500を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス500の各部を説明する。
プロセス500は、判定ブロック502で開始される。ここで、例えば、リースエージェント102のステータスモジュール228は、ステータスの更新を制作者システム106から受信したかどうかを判定する。ステータスの更新は、リースエージェント102によって制作者システム106に送信された要求に応答して、リースエージェント102によって予測され得る。あるいは、ステータスモジュール228は、各制作者システム106に関連する更新スケジュールによってステータスの更新を予測してもよい。例えば、ある場合には、各制作者システム106は、時間単位で、または1日単位で、割り当てられたリースエージェント102に対して自動的にpingし、またはステータスの更新を提供するように構成され得る。ステータスの更新を受信した場合、プロセス500は、判定ブロック502に戻って次のステータスの更新を待つ。さらに、ステータスモジュール228は、制作者システム106に関連する制作者ステータス情報を制作者リポジトリ220及び/またはエージェントリポジトリ206にて更新してもよい。
これに対して、ステータスの更新を判定ブロック502で受信しなかった場合、ステータスモジュール228は、ブロック504にて、制作者システム106のステータスを更新して制作者システム106が使用できないことを示す。制作者システム106のステータスを更新することは、消費者システム104にリースするのに制作者システム106が使用できないとの指示を制作者リポジトリ220及び/またはエージェントリポジトリ206内に記憶することを含むことができる。ある場合には、判定ブロック502でステータスの更新を受信した場合でも、ステータスモジュール228は、ブロック504で制作者システムのステータスを更新して、制作者システム106が使用できないことを示してもよい。例えば、制作者システム106が機能不良であること、要求に対して閾速度でサービスを提供していること、または閾誤り率を超える誤りを生成していることを、受信したステータス情報が示している場合、ステータスモジュール228は、制作者リポジトリ220及び/またはエージェントリポジトリ206を更新して、制作者システム106がもはや使用できないことを示してもよい。いくつかの実施形態では、制作者システム106の制作者ステータス情報を更新してその可用性の喪失を示すことは、制作者システム106がもはや使用できないことを管理者に警告することを含んでもよい。制作者システム106のステータス情報を更新することについては、図10に関してさらに詳しく説明する。
判定ブロック506では、分配システム222は、制作者システム106の閾数が使用不能になったかどうかを判定する。制作者システム106の閾数が使用不能になっていない場合、プロセス500は、判定ブロック502に戻って次のステータスの更新を待つ。制作者システム106の閾数が使用不能になったと分配システム222が判定ブロック506で判定した場合、分配システム222は、ブロック508で制作者再分配プロセスを実行する。この制作者システム再分配プロセスについては、図6に関して以下でさらに詳しく説明する。いくつかの実施形態では、判定ブロック506とブロック508の一方または両方を分配システム204によって実行する。
分配プロセスの実施例
一組の制作者システム106を分配する分配プロセス600の実施形態を図6に示す。プロセス600は、使用可能な制作者システム106の数の変化を追跡することができ、制作者システム106をリースエージェント102間に再分配することができる任意のシステムによって実装することができる。例えば、プロセス600は、全部または一部において、いくつか例を挙げると、リースエージェント102、分配システム222、分配システム204、登録モジュール226及びステータスモジュール228によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス600を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス600の各部を説明する。
プロセス600は、ブロック602で開始される。ここで、例えば、ステータスモジュール228は、使用可能な制作者システム106の差分を追跡する。ある場合には、ステータスモジュール228は、使用可能な制作者システム106の数の絶対変化を追跡する。あるいは、または加えて、ステータスモジュール228は、使用可能な制作者システム106の数の変化率を追跡する。使用可能な制作者システム106の差分または変化分は、制作者システム106を新たに追加したこと、または制作者システム106の可用性が喪失したことに基づくものとすることができる。いくつかの実施形態では、プロセス500を使用して、制作者システム106の可用性が喪失したことを判定するようにしてもよい。さらに、使用可能な制作者システム106を判別することは、制作者システム106の削減または追加を指示するユーザの更新に基づくものであってもよい。さらに、制作者システム106の追加は、制作者システム106が登録を試みたことに基づいて追跡されてもよい。ある場合には、制作者システム106の可用性は、消費者システム104によって提供された情報に基づいて判定されてもよい。さらに、使用可能な制作者の差分または変化分は、実際の数によって追跡されてもよく、または制作者システム106の可用性の変動率によって追跡されてもよい。
いくつかの実施形態では、制作者システム106、及び/または使用可能な制作者システム106の差分は、各リースエージェント102によって追跡される。あるいは、各リースエージェント102は、リースエージェント102に割り当てられている使用可能な制作者システムを追跡する。加えて、またはあるいは、使用可能な制作者システム106の数及び/または差分は、分配システム204などの独立したシステムによって追跡される。
判定ブロック604では、分配システム222は、使用可能な制作者システム106の差分が閾値を満たしているかどうかを判定する。この差分は、絶対値とすることができる。つまり、制作者システム106を加えることまたは減じることが追跡され得る。ある実施形態では、制作者システム106を加減することは、それぞれに関連する個別の閾値とは無関係に追跡されてもよい。従って、ある場合には、使用可能な制作者システムの全変化分が、ゼロである、または合算した閾値を満たさない場合でも、1つまたは両方の閾値が満たされ得る。ある場合には、差分は、変化率及び/または変化速度を表すことができる。このような場合、閾値は、百分率の閾値及び/または変化速度の閾値であってよい。
差分が閾値を満たしていない場合、または対応する閾値をどの差分も満たしていない場合、ステータスモジュール228は、ブロック602にて、使用可能な制作者システム106、または使用可能な制作者システム106の変化分を追跡し続ける。これに対し、差分が閾値を満たしている場合、または対応する閾値を差分が満たしている場合、分配システム222は、ブロック606にて、プロセス600を実行しているリースエージェント102が制作者システム106の分配プロセスまたは再分配プロセスを開始することを他のリースエージェント102に通知する。有利には、ある実施形態では、プロセス600を実行しているリースエージェント102が分配プロセスを開始することを他のリースエージェント102に通知することにより、プロセス600は、複数のリースエージェント102に対して分配プロセスを同時に実行させることを避けるようにする。というのも、このように同時に実行させることにより、例えば、制作者システム106を計数及び分配する際に競合状態が生じることによって最適な結果が得られない可能性があるからである。いくつかの実施形態では、ブロック606は任意であってよい。例えば、いくつかの実施形態では、リースエージェント102とは別の分配システム204が、分配プロセスまたは再分配プロセスを実行してもよい。
ブロック608では、分配システム222は、使用可能な制作者システム106の識別情報を取得する。分配システム222は、使用可能な制作者システム106の識別情報を、制作者リポジトリ220にアクセスすることによって、かつ/またはエージェントリポジトリ206にアクセスすることによって取得してもよい。ある場合には、分配システム222は、他のリースエージェント102と交信することにより、使用可能な制作者システム106の識別情報を取得してもよい。
ブロック610では、分配システム222は、使用可能な制作者システム106をリースエージェント102間に分配する。分配システム222は、任意の種類の分配アルゴリズムを使用して制作者システム106を分配することができる。一般に、リースエージェント102間に制作者システム106を分配することにより、重複しない、または不均等な複数組の制作者システム106を生成して、それらをリースエージェント102に割り当てることができる。しかしながら、ある場合には、この分配が重複する場合がある。さらに、ある場合には、これらのサブセットのバランスを取ることができない場合がある。つまり、あるリースエージェント102に対し、他のリースエージェント102よりも多くの制作者システム106が割り当てられる場合がある。これらのサブセットのバランスが取れていない場合、特定のリースエージェント102に割り当てられた制作者システム106の数または割合は、少なくとも部分的には、リースエージェント102及び/またはそのリースエージェント102に割り当てられた制作者システム106が処理できる要求の数に基づいている場合がある。例えば、第1のリースエージェント102が、他の制作者システム106よりも多数の消費者システム104の要求を処理可能な制作者システム106に割り当てられている場合、この第1のリースエージェントには、別のリースエージェント102よりも少ない制作者システムを割り当ててもよい。
さらに、ある制作者システム106が、他の制作者システムとは異なるサービスを提供できる実施形態では、特定のサービスを提供可能な制作者システムに各リースエージェントが割り当てられるように、制作者システム106を分配してもよい。あるいは、特定のサービスを提供可能な制作者システム106を、選択サブセットのリースエージェント102間に分配してもよい。
ブロック612では、プロセス600を実行しているリースエージェント102の分配システム222は、ブロック610の完了時に、各リースエージェント102に割り当てられた制作者システム106の識別情報を用いてネットワーク環境100内の他の各リースエージェント102を更新する。いくつかの実施形態では、ブロック612は、プロセス600を実行しているリースエージェント102を、これ自体に割り当てられた制作者システム106の識別情報を用いて更新することを含むことができる。制作者システム106の識別情報を用いてリースエージェント102を更新することは、制作者リポジトリ220のテーブルまたはデータベースを更新することを含んでもよい。ある場合には、リースエージェント102がプロセス600を実行していることから、ブロック612は、このリースエージェント102については任意であり、ネットワーク環境100に含まれる他のリースエージェント102に対してのみ実行される。
いくつかの実施形態では、プロセス600を使用して、制作者システム106をリースエージェント102間に最初に分配することができる。例えば、ネットワーク環境100を最初に設定するときには、使用可能な制作者システム106を起動させるため、使用可能な制作者システム106の差分によって判定ブロック604の閾値が満たされやすい。あるいは、または加えて、ユーザは、ネットワーク環境100を最初にまたはそれ以外の時に設定する際に分配プロセスを手動で起動してもよい。
制作者システム106をリースエージェント102間に分配するものとしてプロセス600を説明してきた。しかしながら、プロセス600は、そのように限定されることはない。ある場合には、プロセス600を使用して、制作者システム106にアクセスするために消費者システム104に提供可能な各リースをリースエージェント102間に分配してもよい。例えば、リースエージェント102または分配システム222は、一組の使用可能な制作者システムを特定し、この一組の使用可能な制作者システムを構成する各制作者システムに使用可能な複数のリースを決定する。プロセス600を実行するリースエージェント102は、使用可能なリースにおいて変化した閾値を検出する第1のリースエージェント102であってよく、またはリースの分配を実行するように指定されたリースエージェント102であってよい。リースエージェント102は、(例えば、制作者システム106の登録中に)各制作者システム106から受信したステータス情報に基づいて使用可能な複数のリースを特定してもよい。あるいは、または加えて、使用可能な複数のリースは、制作者システム106の種類に基づいて、または制作者システム106もしくはユーザ(例えば、管理者)から受信した設定情報に基づいて決定されてもよい。
リースエージェント102は、複数のリースエージェント102に含まれる各リースエージェント102に、各制作者システム106に使用可能な複数のリースに含まれるリースのサブセットを割り当てることにより、各制作者システム106に使用可能な複数のリースを複数のリースエージェント102間に分配してもよい。複数のリースは、リースエージェント102間に均等にまたはほぼ均等に分配されてもよい。ある場合には、リースの数がリースエージェント102の数の倍数ではないため、リースエージェント102の少なくとも一部には、リースを1つ増やしてまたは1つ減らして割り当ててもよい。さらに、ある場合には、リースを均等に分割しなくてもよい。なぜなら、例えば、あるリースエージェント102及び/またはある制作者システム106の間では設定が異なるためである。ある場合には、各リースエージェント102には、重複しない一組のリースが割り当てられる。あるいは、リースの少なくとも一部を、複数のリースエージェント102に割り当ててもよい。いくつかの実施形態では、制作者システム106のリースに分配されている複数のリースエージェント102は、リースエージェント102のサブセットであってもよい。例えば、ある場合には、リースエージェント102のサブセットを制作者システム106のサブセットに割り当ててもよい。
複数のリースを分配した後、またはその最中に、プロセス600を実行しているリースエージェント102は、複数のリースエージェント102の各リースエージェント102に対し、リースエージェント102に割り当てられたリースのサブセットをリースエージェント102に提供してもよい。各リースエージェント102にリースを提供することは、各リースエージェント102に割り当てられた各制作者システム106から各リースエージェント102に複数のリースを提供することを含んでもよい。あるいは、または加えて、各リースエージェント102にリースを提供することは、それぞれに割り当てられたリースの識別情報をリースエージェント102に提供することを含んでもよい。さらに、リースを提供することは、制作者システム106と通信するための、かつ/または制作者システム106のリースを利用するための接続情報を提供することを含んでもよい。
有利には、いくつかの実施形態では、各制作者システム106に使用可能な複数のリースを複数のリースエージェント102間に分配することにより、複数のリースエージェント102間で作業負荷のバランスを取ることが可能となる。ある場合には、プロセス600を実行するリースエージェント102は、プロセス600を実行しているときには、リースエージェント102に割り当てられたリースのサブセットをそれ自体に提供する必要がない。しかしながら、ある場合には、リースエージェント102がそれ自体にリースを提供してもよい。例えば、リースエージェント102の、分配を実行するサブシステム(例えば、分配システム222)と、リースエージェント102に割り当てられたリースを受信及び/または追跡するサブシステムとが異なる場合、プロセス600を実行するリースエージェント102は、それ自体に対し、リースエージェント102に割り当てられたリースの識別情報を提供してもよい。
ある場合には、プロセス600を使用して、制作者システム106と各制作者システム106に関連するリースとの両方をリースエージェント102間に分配することができる。
制作者システム登録プロセスの実施例
制作者システム106の観点からの制作者システム登録プロセス700の実施形態を図7に示す。プロセス700は、制作者システム106をリースエージェント102に登録可能な任意のシステムによって実装することができる。例えば、プロセス700は、全部または一部において、いくつか例を挙げると、制作者システム106、登録モジュール260及びステータスモジュール262によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス700を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス700の各部を説明する。
プロセス700は、制作者システム106が最初に起動もしくは初期化される度に、または、例えば、非活動期間の後もしくはシステムの再開後に再起動もしくは再初期化される度に発生し得る。ある場合には、プロセス700は、制作者システム106が、それ自体に割り当てられたリースエージェント102がもはや使用できないことを判定する度に発生または再度発生してもよい。例えば、割り当てられたリースエージェント102がもはや使用できないことを判定することは、ユーザから受け取った、もしくはエージェントリポジトリ206から取得した情報に基づいてもよく、または、図5に関して説明したステータスの更新などのステータスの更新を制作者システム106が提供した後に、割り当てられたリースエージェント102からACKが受信されていないかに基づいてもよい。
プロセス700は、ブロック702で開始される。ここで、例えば、登録モジュール260は、例えば、エージェントリポジトリ206に含まれる一組のリースエージェント102の識別情報にアクセスする。ある場合には、制作者システム106は、内部記憶装置に含まれる一組のリースエージェント102の識別情報にアクセスしてもよい。例えば、制作者システム106は、一組のリースエージェント102の識別情報を用いて予め設定されていてもよい。他の場合には、アクセス対象のリースエージェント102をユーザが指定してもよい。
ブロック704では、登録モジュール260は、ブロック702で特定された一組のリースエージェント102からリースエージェント102を選択する。登録モジュール260は、ランダムに、またはラウンドロビン法もしくは最低使用頻度法などのその他の選択方法を用いることにより、リースエージェント102を選択してもよい。一組のリースエージェント102がソートされていた場合、登録モジュール260は、そのソート済みの一組から第1のリースエージェント102を選択してもよい。ある実施形態では、ブロック704は任意であってよい。例えば、ブロック704は、ユーザがリースエージェント102を指定する場合には不要である。
ブロック706では、登録モジュール260は、ブロック704で選択されたリースエージェント102との接続を開始する、または接続の開始を試みる。ある場合には、リースエージェント102との通信の開始を試みることは、リースエージェント102への登録を試みることを含む。
ブロック708では、登録モジュール260は、リースエージェント102から接続応答を受信する。登録モジュール260は、判定ブロック710にて、この接続応答が、制作者システム106の登録を承認しているか、それとも第2のリースエージェント102の識別情報を示しているかを判定する。接続応答が制作者システム106の登録を承認していると登録モジュール260が判定ブロック710で判定した場合、ステータスモジュール262は、ブロック712にて、制作者システム106に関する状態情報をリースエージェント102に提供する。この状態情報は、制作者システム106に関連する1つ以上の測定基準の状態またはステータスに関わる任意の情報を含むことができる。例えば、状態情報としては、1つ以上のコンピューティングリソース(例えば、メモリ、プロセッサ、ネットワーク帯域、アプリケーションなど)の可用性、サービス要求が制作者システムによって処理されている消費者システム104の数、及び制作者システム106の状態に関連するその他の情報を挙げることができる。
ブロック712に関連するプロセスは、接続応答が制作者システム106の登録を承認したと登録モジュール260が判定したときに発生し得る。あるいは、または加えて、ブロック712に関連するプロセスは、後のあるときに発生してもよい。さらに、いくつかの実施形態では、ブロック712に関連するプロセスは、連続的に、断続的に発生してもよく、または制作者システム106のステータスの更新を求めるリースエージェント102からの要求に応答して発生してもよい。他の実施形態では、ブロック712に関連するプロセスは、制作者システム106の状態またはステータスにおいて閾変化が起きる度に発生してもよい。例えば、ブロック712に関連するプロセスは、制作者システム106の処理リソースの可用性が閾値レベルに低下したときに発生し得る。
ブロック708で受信した接続応答に第2のリースエージェントの識別情報が含まれていると登録モジュール260が判定ブロック710で判定した場合、登録モジュール260は、ブロック714で第2のリースエージェントとの接続を開始する。プロセス800に関して説明するように、第2のリースエージェントには、第1のリースエージェント(例えば、ブロック704で特定されたリースエージェント)が制作者システム106との関連付けを決定したリースエージェントが含まれてもよい。
ブロック716では、ステータスモジュール262は、第2のリースエージェントに状態情報を提供する。ある実施形態では、ブロック716は、ブロック712に関して先に説明した実施形態の1つ以上を含んでもよい。ある実施形態では、ブロック708で受信した接続応答は、制作者システム106による登録が、追加のリースエージェントを特定することなく成功したか否かを示す。その際、制作者システム106の登録が成功しなかった場合には、制作者システム106は、ブロック702で特定された一組のリースエージェントに含まれる別のリースエージェントの登録、もしくはそのリースエージェントとの接続の開始を試みてもよく、またはその代わりに、リースエージェント102が制作者システム106の登録を承認するまでブロック704、706、708及び710を繰り返してもよい。
いくつかの実施形態では、判定ブロック710で特定された第2のリースエージェントは、ランダムに選択され、かつ/または必ずしも制作者システム106に関連付けられるとは限らない。そのような場合、ブロック714は、第2のリースエージェントに関係させずに、ブロック708及び710に関して上述した1つ以上の実施形態を実行することを含むことができる。つまり、ブロック714からブロック708にループを形成することができる。その際、第2のリースエージェントからの接続応答により、制作者システム106の登録の承認ではなく第3のリースエージェントが特定された場合には、判定ブロック710は、第3のリースエージェントを特定してもよい。このループは、制作者システム106がリースエージェント102に正常に登録されるまで連続的に繰り返されてもよい。あるいは、このループは、閾回数実行されてもよい。制作者システム106が正常に登録されずに閾値が満たされた場合には、警告を生成してもよい。例えば、リースエージェント102への登録に制作者システム106が失敗したことを(例えば、電子メールまたはポップアップ警告によって)管理者に通知してもよい。予期せぬシステム故障などがあった場合には、制作者システム106は、一組のリースエージェント102に登録すること、またはそれらの登録を更新することができない場合がある。その場合、消費者システム104は、接続情報またはリースのキャッシュにアクセスして、制作者システム106へのアクセスを試みるようにしてもよい。有利には、ある実施形態では、期限切れとなり得るキャッシュ情報を用いることにより、リソースにアクセスする際のダウンタイムが、ある場合には、短縮または排除され得る。
制作者システム登録プロセスの実施例
リースエージェント102の観点からの制作者システム登録プロセス800の実施形態を図8に示す。プロセス800は、制作者システム106をリースエージェント102にて登録可能な任意のシステムによって実装することができる。例えば、プロセス800は、全部または一部において、いくつか例を挙げると、リースエージェント102、登録モジュール226及びステータスモジュール228によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス800を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス800の各部を説明する。
プロセス800は、ブロック802で開始される。ここで、例えば、登録モジュール226は、制作者システム106から登録要求を受信する。いくつかの実施形態では、この登録要求は、制作者システム106に関連付けられた認証鍵または暗号鍵を含むことができる。登録モジュール226は、制作者システム106がリースエージェント102に割り当てられているかどうかを判定ブロック804で判定する。制作者システム106がリースエージェント102に割り当てられているかどうかの判定は、制作者リポジトリ220及び/またはエージェントリポジトリ206にアクセスして、制作者システム106がリースエージェント102に割り当てられているかどうかを判定することを含むことができる。さらに、ある場合には、制作者システム106がリースエージェント102に割り当てられているかどうかを判定することは、例えば、制作者システム106に関連付けられた受信した識別子、認証鍵または暗号鍵に基づき、制作者システム106の識別情報を変更することを含むことができる。
制作者システム106がリースエージェント102に割り当てられていることを登録モジュール226が判定した場合、登録モジュール226は、制作者システム106の登録をブロック806で承認する。制作者システム106の登録を承認することは、制作者システム106がリースエージェント102に登録されていることを制作者システム106に通知することを含むことができる。さらに、ある場合には、ブロック806は、制作者リポジトリ220及び/またはエージェントリポジトリ206を更新することにより、制作者システム106が使用可能であること、及びリースエージェント102に登録されたことを示すことを含むことができる。さらに、いくつかの実施形態では、ブロック806は、リースエージェント102に関連付けられ、かつ/または制作者システム106に割り当てられた認証鍵及び/または暗号鍵へのアクセスを制作者システム106に提供することを含むことができる。この認証鍵及び/または暗号鍵は、制作者システム106とリースエージェント102との間のさらなる通信を促進するために使用することができる。さらに、制作者システム106の識別情報を検証する、またはこれらの2つのシステム間で通信が行われるデータを保証するなどのために、この認証鍵及び/または暗号鍵を、制作者システム106と消費者システム104との間の通信に使用することができる。
ブロック808では、ステータスモジュール228は、制作者システム106から状態情報を受信する。この状態情報は、ブロック712の状態情報に関して上述した実施形態のうちの一部または全てを含むことができる。ステータスモジュール228は、ブロック810にて、ブロック808で受信した状態情報に少なくとも部分的に基づき、制作者システム106の制作者ステータス情報を更新することができる。制作者ステータス情報を更新することは、制作者リポジトリ220及び/またはエージェントリポジトリ206のエントリ、または1つ以上の測定基準を更新して制作者システム106のステータスを反映することを含むことができる。
制作者システム106がリースエージェント102に割り当てられていないことを登録モジュール226が判定ブロック804で判定した場合、登録モジュール226は、ブロック812にて、制作者システム106が割り当てられている別のリースエージェントを特定する。ブロック814では、登録モジュール226は、制作者システム106が割り当てられているリースエージェント102の識別情報を制作者システム106に提供することができ、それによって制作者システム106は、ブロック812で特定されたリースエージェント102と交信することが可能となる。ある実施形態では、ブロック812及びブロック814を任意とすることができる。例えば、ある場合には、登録モジュール226は、制作者システム106がリースエージェント102に関連付けられていないこと、及び従って、制作者システム106が割り当てられている代わりのリースエージェント102を制作者システム106に通知することなく、ブロック802で受信した登録要求が失敗に終わったことを制作者システム106に通知してもよい。
リースエージェント再分配プロセス
リースエージェント再分配プロセス900の実施形態を図9に示す。プロセス900は、リースエージェント102に割り当てられた一組の制作者システム106を再度割り当てることができる任意のシステムによって実装することができる。例えば、プロセス900は、全部または一部において、いくつか例を挙げると、リースエージェント102、分配システム222及び分配システム204によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス900を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス900の各部を説明する。
プロセス900は、ブロック902で開始される。ここで、例えば、第1のリースエージェント102に関連する分配システム222は、別の、または第2のリースエージェント102がもはや使用できないとの指示を受信する。第2のリースエージェント102がもはや使用できないと指示することは、例えば、pingまたはステータスチェックに基づいて決定されてもよい。他の場合には、分配システム222は、第2のリースエージェント102によってメッセージが承認されなかったときに、リースエージェント102がもはや使用できないと判定してもよい。さらに他の実施形態では、第2のリースエージェントがもはや使用できないことをユーザが指定してもよい。ある事例では、プロセス900は、分配システム204によって実行されてもよい。
ブロック904では、分配システム222は、もはや使用できないリースエージェント102に割り当てられている制作者システム106を特定する。この制作者システム106は、制作者リポジトリ220及び/またはエージェントリポジトリ206にアクセスすることによって特定されてもよい。ブロック906では、分配システム222は、ブロック904で特定された制作者システム106を残りのリースエージェント102間に分配する。ある場合には、ブロック906は、分配プロセスが発生していることを残りのリースエージェント102に通知することを含んでもよく、それにより、ブロック610に関して先に説明したように、複数のリースエージェントが、特定された制作者システム106を同時に分配することを避けるようにする。
いくつかの実施形態では、ブロック906は、もはや使用できないリースエージェント102に割り当てられているものだけでなく、全ての使用可能な制作者システム106を再分配することを含んでもよい。このような実施形態では、ブロック904は、全ての使用可能な制作者システム106を特定することを含んでもよい。前述したように、制作者システム106の分配は、重複して、重複しないで、均等に、不均等に行ってもよく、かつ/または制作者の種類に基づいて行ってもよい。従って、いくつかの実施形態では、ブロック906は、ブロック610に関して先に説明した実施形態の一部または全てを含んでもよい。さらに、ある場合には、第2のリースエージェント102に割り当てられていた制作者システム106を分配することは、少なくとも部分的には、第2のリースエージェント102の種類に基づいていてもよい。例えば、第2のリースエージェント102に、ストレージサービスまたはストレージリソースを提供する制作者システム106が排他的に割り当てられていた場合、第2のリースエージェント102に割り当てられていた制作者システム106を、ストレージサービスまたはストレージリソースを提供する制作者システム106に対して同様に排他的に割り当てられているリースエージェント102のサブセット間に再分配してもよい。
ブロック908では、分配システム222は、依然として使用可能な各リースエージェント102に新たに割り当てられた制作者システム106の識別情報を用いて、残りのリースエージェント102を更新する。
いくつかの実施形態では、プロセス900を使用して、リースエージェント102の追加またはリースエージェント102の置き換えを行うようにしてもよい。そのような場合、ブロック904は、全ての使用可能な制作者システム106を特定してブロック906で分配するようにしてもよい。ある場合には、使用可能な制作者システム106は、以前の時間に使用可能であった制作者システム106と同じであってもよい。他の場合には、一組の制作者システム106は、制作者システム106の削減または制作者システム106の追加によって変わった可能性がある。リースエージェント102を一対一で置き換える場合には、新しいリースエージェントを、これが置き換えるリースエージェントの制作者システム106に割り当ててもよい。そのような場合、ブロック906は任意であってよく、ブロック908は、新しいリースエージェントに以前のリースエージェントの制作者システム106が現在割り当てられていることを他のリースエージェントに通知することを含んでもよい。
ヒステリシスベースの制作者選択プロセスの実施例
ヒステリシスベースの制作者選択プロセス1000の実施形態を図10に示す。プロセス1000は、制作者システム106に関連付けられた選択重みを変更して、ブロック410の一部である制作者システム106の選択などの、制作者システムの選択を変更可能とする任意のシステムによって実装することができる。例えば、プロセス1000は、全部または一部において、いくつか例を挙げると、リースエージェント102、ステータスモジュール228及びリースシステム224によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス1000を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス1000の各部を説明する。
プロセス1000は、ブロック1002で開始される。ここで、例えば、ステータスモジュール228は、制作者システム106に関連するステータスメタデータを消費者システム104から受信する。このステータスメタデータは、消費者システム104が制作者システム106との対話に基づいて決定した情報に加えて、制作者システム106によって消費者システム104に提供された情報を含んでもよい。例えば、ステータスメタデータには、制作者システム106の応答時間、制作者システム106が所定時刻にサービスを提供している消費者システム104の数、制作者システム106が一定時間に平均してサービスを提供する消費者システム104の数などに関する情報が含まれてもよい。いくつかの実施形態では、ブロック1002は、ブロック404に関して上述した実施形態の一部または全てを含むことができる。
さらに、ある場合には、ステータスモジュール228は、消費者システム104がリースエージェント102と最後に通信してから消費者システム104が通信した一組の制作者システム106に関連するステータスメタデータを受信してもよい。ステータスメタデータは、制作者システム106への更新されたアクセスを求める消費者システム104からの更新要求の一部として受信されてもよい。他の場合には、ステータスメタデータは、消費者システム104からの新たなリース要求の一部として受信されてもよい。
ブロック1004では、ステータスモジュール228は、ブロック1002で受信した対応するステータスメタデータに基づき、1つ以上の制作者システム106の制作者ステータス情報を更新する。あるいは、または加えて、ステータスモジュール228は、受信したステータスメタデータの少なくとも一部が、別のリースシステム102に関連付けられた制作者システム106のためのものであると判定してもよく、従って、このステータス情報を、その制作者システム106に割り当てられているリースエージェント102に提供してもよい。ある場合には、ブロック1002及び1004に関連するプロセスは、ある種の「ゴシップアルゴリズム」として機能することができるが、それは、リースエージェント102が複数の制作者システム106のそれぞれに割り当てられているかどうかに関わらず、消費者システム104といくつかの制作者システム106のそれぞれとの対話についての情報を消費者システム104がリースエージェント102に提供しているためである。つまり、リースエージェント102は、別のリースエージェント102に割り当てられている制作者システム106についての「ゴシップ」を取得してもよい。次いで、リースエージェント102は、その制作者システム106に割り当てられているリースエージェント102に「ゴシップ」を広げることができる。有利には、ある実施形態では、この「ゴシップアルゴリズム」を用いることにより、リースエージェント102は、指定されたステータスの更新の合間に制作者システム106からステータスメタデータを取得することができる。制作者システム106に加えて消費者システム104からステータスメタデータを取得することにより、「ゴシップアルゴリズム」を使用しないシステムに比べて、リースすべき制作者システム106の選択を一層最適化することができる。「ゴシップ」、すなわちフィードバック情報を取得することにより、コンピューティングシステムを選択してサービスを提供できるようにするシステム及び方法の別の実施形態は、2009年8月20日出願の「DECENTRALIZED REQUEST ROUTING」と題する米国出願第12/544,517号に記載されており、参照により本明細書に本出願全体を援用する。いくつかの実施形態では、ブロック1002は、ブロック406及び/またはブロック408に関して上述した実施形態の一部または全てを含むことができる。
判定ブロック1006では、ステータスモジュール228は、更新済みの制作者ステータス情報が、制作者システム106に関連する負荷測定基準の変化を示しているかどうかを判定する。負荷測定基準は、監視用に選択された制作者システム106の任意の特性を含むことができる。この負荷測定基準は、制作者システム106によって処理可能な負荷に関連することができる。ある場合には、負荷測定基準は、制作者システムの健全性に関する任意の測定基準を含むことができる。負荷測定基準の非限定的ないくつかの実施例としては、誤り率、メモリ利用率、消費者システムとの接続回数などを挙げることができる。判定ブロック1006にて、更新済みの制作者ステータス情報が負荷測定基準の変化を示していなかった場合、プロセス1000は、ブロック1002に戻って、新たなステータスメタデータを消費者システム104から待ち受ける。
いくつかの実施形態では、判定ブロック1006は、代替的にまたは追加的に、制作者システム106に関連する1つ以上の他の測定基準に関わる値に変化があるかどうかを判定することを含んでもよい。例えば、ステータスモジュール228は、更新済みの制作者ステータス情報が、制作者システム106による応答時間の変化、または制作者システム106による使用可能なリソースの変化を示しているかどうかを判定してもよい。ある場合には、判定ブロック1006は、制作者システム106の更新済みの負荷測定基準の計測値を、ネットワーク環境100内の各制作者システム106、またはリースエージェント102に割り当てられた各制作者システムの平均負荷測定基準の計測値と比較することを含んでもよい。
更新済みの制作者ステータス情報が、制作者システム106の負荷測定基準に変化があったことを示している場合、ステータスモジュール228は、ブロック1008にて、変化のあった負荷測定基準の計測値に少なくとも部分的に基づき、その制作者システム106に関連付けられた選択重みを変更する。選択重みを変更することは、誤り率の変化が、誤り率の上昇を示しているか、それとも誤り率の低下を示しているかに基づいて選択重みを増加または減少させることを含むことができる。いくつかの実施形態では、制作者システム106を選択重みに関連付けない。このような実施形態では、判定ブロック1006で検出された負荷測定基準、または追跡対象の他の測定基準の変化が、対応する閾値を満たした、または超えた場合、ステータスモジュール228は、その制作者システムが機能不良または使用不能であると判定してもよい。その際、制作者システム106がもはや機能不良または使用不能であると判定することに関わる閾値に負荷測定基準が到達した場合、管理者などのユーザに警告を発してもよい。さらに、ある場合には、制作者システム106の可用性に関係なく、負荷測定基準または選択重みによって閾値が変化した場合、ユーザに警告を発してもよい。
ある実施形態では、制作者システム106に関連付けられた選択重みを使用することにより、先に説明したプロセス400に関連するブロック410の一部として消費者システムにリースすべき使用可能な制作者システム106を選択することが容易となり得る。制作者システム106の選択重み及び/または可用性ステータスは、制作者リポジトリ220及び/またはエージェントリポジトリ206に記憶されてもよい。
オーバーレイネットワーク環境の概要
制作者システムによってホストされたサービスへのアクセスを消費者システムに提供するオーバーレイネットワーク環境1100の実施形態を図11に示す。オーバーレイネットワーク環境1100は、1つ以上のオーバーレイネットワーク、または仮想ネットワークを1つ以上の組織またはエンティティに提供することができる任意の種類のシステムを含むことができる。これらのオーバーレイネットワークは、物理ネットワークまたは非仮想ネットワークを形成し得るコンピューティングハードウェア上に実装され得る。本開示と共に使用可能なオーバーレイネットワークまたは仮想ネットワークのいくつかの実施例については、2010年6月30日に出願された米国出願第12/827,268号(現在は米国特許第8,296,459号)に記載されており、参照により本明細書にその開示全体を援用する。
オーバーレイネットワーク環境1100は、リースエージェント102、消費者ホスト1104及び制作者ホスト1106を含み、これらのそれぞれは、ネットワーク202を介して相互に通信し得る。各リースエージェント102は、図2に関して図示及び説明したサブシステムの一部または全てを含んでもよい。従って、例えば、リースエージェント102は、制作者リポジトリ220、分配システム222、リースシステム224、登録モジュール226及びステータスモジュール228を含んでもよい。リースエージェント102を構成するこれらのサブシステムのそれぞれは、図2に関して先に説明を行ったものと同じ機能を備えることができるが、ある場合には、これらのサブシステムの機能に修正または追加を行ってもよい。例えば、消費者システム104及び制作者システム106に関するステータス情報を受信することに加えて、またはその代わりに、ステータスモジュール228は、消費者ホスト1104、制作者ホスト1106、消費者仮想マシン1142及び制作者仮想マシン1162のうちの1つ以上に関するステータス情報を受信することができる。同様に、制作者リポジトリ220は、消費者ホスト1104、制作者ホスト1106、消費者仮想マシン1142及び制作者仮想マシン1162のうちの1つ以上に関する情報を含むことができる。
ある場合には、分配システム222を使用して、オーバーレイネットワーク環境1100のリースエージェント102間に制作者仮想マシン1162を分配することができる。さらに、特定のオーバーレイネットワークに関連付けられた制作者仮想マシン1162を、他のオーバーレイネットワークに関連付けられた制作者仮想マシン1162とは無関係に分配することができる。従って、例えば、制作者仮想マシンB”とは無関係に、制作者仮想マシンB’をリースエージェント102に分配してもよい。ある場合には、使用可能なリースエージェント102のサブセットを、特定のオーバーレイネットワークに関連付けてもよい。そのような場合、この特定のオーバーレイネットワークに関連付けられた制作者仮想マシン1162及び消費者仮想マシン1142は、使用可能なリースエージェント102のサブセットへの通信を制限してもよい。
さらに、リースシステム224は、制作者仮想マシン1162及び消費者仮想マシン1142が関連付けられたオーバーレイネットワークに基づき、消費者仮想マシン1142にリースする制作者仮想マシン1162を選択してもよい。ある場合には、オーバーレイネットワークに基づいて制作者仮想マシン1162を選択することを、消費者システム104にリースする制作者システム106を選択することに関して先に説明した要因に加えてもよい。さらに、登録モジュール226を使用して、制作者仮想マシン1162をリースエージェント102に登録することができる。
図11には1つの消費者ホスト1104のみを示すが、オーバーレイネットワーク環境は、複数の消費者ホスト1104を含むことができる。各消費者ホスト1104は、複数の消費者仮想マシン1142を含んでもよい。消費者仮想マシン1142の一部を、消費者ホスト1104によってホストされた他の消費者仮想マシン1142とは異なるオーバーレイネットワークに関連付けてもよい。例えば、消費者ホスト1104は、異なるオーバーレイネットワークにそれぞれ関連付けられた2つの消費者仮想マシン1142を含む。消費者仮想マシンA’を、制作者仮想マシンB’も含み得る第1のオーバーレイネットワークに関連付けてもよく、消費者仮想マシンA”を、制作者仮想マシンB”も含み得る第2のオーバーレイネットワークに関連付けてもよい。
消費者仮想マシン1142に加えて、消費者ホスト1104は、オーバーレイネットワークプロキシ1114、リースリクエスタ1130、仮想マシンマッピングリポジトリ1150及びステータスモジュール1132を含んでもよい。オーバーレイネットワークプロキシ1114は、消費者仮想マシン1142からのサービス要求を処理することができ、制作者仮想マシン1162をホストしている制作者ホスト1106に対して処理すべきサービス要求を提供することができる任意のシステムを含むことができる。いくつかの実施形態では、消費者仮想マシン1142から受信したサービス要求は、制作者仮想マシン1162、または消費者仮想マシン1142の信頼によってそのサービス要求を処理可能な非存在システムに関連付けられた仮想アドレスを含んでもよい。仮想アドレスを伴うサービス要求を受信すると、オーバーレイネットワークプロキシ1114は、そのサービス要求を処理する制作者仮想マシン1162を、当該サービス要求を提供した消費者仮想マシン1142と同じオーバーレイネットワーク内で特定することができる。次いで、オーバーレイネットワークプロキシ1114は、その仮想アドレスを、特定された制作者仮想マシン1162のアドレスに置き換えることができる。以下でより詳しく説明するように、制作者仮想マシン1162を、サービス要求を提供した消費者仮想マシン1142に関連付けられたリース用制作者仮想マシン1162のプールから特定してもよい。さらに、オーバーレイネットワークプロキシ1114は、特定された制作者仮想マシン1162をホストする制作者ホスト1106と消費者ホスト1104とを特定するヘッダまたは外部ヘッダを用いて、サービス要求をラップまたはカプセル化することができる。
仮想マシンマッピングリポジトリ1150は、消費者仮想マシン1142の代わりに、リース対象の制作者仮想マシン1162のプールを記憶することができる。さらに、仮想マシンマッピングリポジトリ1150は、制作者仮想マシン1162をホストする、対応する制作者ホスト1106の識別情報を記憶することができる。制作者仮想マシン1162及び制作者ホスト1106の識別情報を記憶することは、制作者仮想マシン1162及び制作者ホスト1106にアクセスするためのアドレス指定情報を記憶することを含むことができる。
消費者仮想マシン1142に代わってリースを取得するために、消費者ホスト1104は、消費者ホスト1104によってホストされた消費者仮想マシン1142に代わってリース要求を生成可能なリースリクエスタ1118を含むことができる。リースリクエスタ1118は、特定のオーバーレイネットワーク、及び/または制作者仮想マシン1162のリースを要求している特定の消費者仮想マシン1142を特定することができる。
ステータスモジュール1132は、ステータスモジュール242に関して上述した実施形態の一部または全てを含むことができる。さらに、ステータスモジュール1132は、制作者仮想マシン1162と制作者ホスト1106との通信に基づき、制作者仮想マシン1162及び/または制作者ホスト1106のステータス情報を提供することができる。
消費者ホスト1104と同様に、オーバーレイネットワーク環境1100は、任意の数の制作者ホスト1106を含むことができ、これらのそれぞれは、1つ以上のオーバーレイネットワークに関連付けられた1つ以上の制作者仮想マシン1162を含むことができる。さらに、各制作者ホスト1106は、オーバーレイネットワークプロキシ1116、仮想マシンマッピングリポジトリ1152及びステータスモジュール1134を含むことができる。
オーバーレイネットワークプロキシ1114と同様に、オーバーレイネットワークプロキシ1116は、消費者ホスト1104から受信したサービス要求を処理すると共に、受信したサービス要求に応答する処理を行う任意のシステムを含むことができる。サービス要求を受信すると、オーバーレイネットワークプロキシ1116は、そのサービス要求のヘッダに含まれている情報に基づき、当該サービス要求を処理する制作者仮想マシン1162を決定することができる。さらに、ある場合には、サービス要求によって特定のオーバーレイネットワークが識別されてもよく、このオーバーレイネットワークを使用して、サービス要求を処理する制作者仮想マシン1162を容易に特定するようにしてもよい。
仮想マシンマッピングリポジトリ1152は、どの制作者仮想マシン1162がどのオーバーレイネットワークに関連付けられているかを特定する情報を記憶することができる。さらに、仮想マシンマッピングリポジトリ1152は、どの消費者ホスト1104が特定の消費者仮想マシン1142をホストしているかを容易に特定するための情報を記憶することができる。この情報を使用して、サービス要求に対する応答を提供する消費者ホスト1104を決定することができる。
ステータスモジュール1132と同様に、ステータスモジュール1134は、ステータスモジュール262に関して上述した実施形態の1つ以上を含むことができる。さらに、ステータスモジュール1134は、制作者仮想マシン1162に関するステータス情報をリースエージェント102に提供することができる。
消費者ホスト1104及び制作者ホスト1106における点線によって示すように、本明細書に開示されたプロセスを可能とする下層システムは、消費者(例えばクライアント)及び制作者(例えばサーバまたはサービス提供者)からなる1つ以上のオーバーレイネットワークを形成する仮想マシンから分離することができる。ある場合には、下層システム(例えば、オーバーレイネットワークプロキシ1114及び1116)は、消費者ホスト1104及び制作者ホスト1106のネットワーク接続基盤の一部として実装することができる。有利には、ある実施形態では、下層システムを仮想マシンから分離することにより、オーバーレイネットワークに影響を与えずにリース構造の実装、保守及び変更を行うことができる。
いくつかの実施形態では、消費者ホスト104は、消費者仮想マシン1142と制作者仮想マシン1162の両方をホストすることができる。さらに、いくつかの実施形態では、制作者ホスト1106は、消費者仮想マシン1142と制作者仮想マシン1162の両方をホストすることができる。さらに、消費者仮想マシン1142及び制作者仮想マシン1162を仮想マシンとして説明してきたが、これらはそのように限定されることはない。いくつかの実施形態では、オーバーレイネットワークは、消費者ホスト1104と制作者ホスト1106の一部であり、またはこれらによって実行されるハードウェアリソース及び/またはソフトウェアリソースを割り当てられてもよい。仮想マシンの代わりにこれらのリソースを使用して、制作者システム及び消費者システムをオーバーレイネットワークの一部として実装してもよい。
ある場合には、オーバーレイネットワーク環境1100に対して実行されるように、ネットワーク環境100に関して先に説明したプロセスの1つ以上を実行または変更してもよい。従って、例えば、プロセス900を実行して、オーバーレイネットワーク環境1100内のリースエージェントを再分配してもよい。第2の実施例として、プロセス700及び800を実行して、オーバーレイネットワーク環境1100内のリースエージェント102に制作者仮想マシン1162を登録することができる。
制作者仮想マシンのサービスにアクセスするプロセスの実施例
制作者仮想マシンのサービスにアクセスするプロセス1200の実施形態を図12に示す。プロセス1200は、制作者仮想マシンによって提供されるサービスにアクセスする消費者仮想マシンからの要求を処理可能な任意のシステムによって実行することができる。例えば、プロセス1200は、全部または一部において、いくつか例を挙げると、消費者ホスト1104、リースエージェント102、オーバーレイネットワークプロキシ1114及びリースリクエスタ1118によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス1200を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス1200の各部を説明する。
ある場合には、プロセス1200を使用することにより、消費者仮想マシンが、制作者システムによって提供されるサービスにアクセスすることができるようにしてもよい。同様に、いくつかの実施形態では、プロセス1200を使用することにより、消費者システムが、制作者仮想マシンによって提供されるサービスにアクセスすることができるようにしてもよい。しかしながら、説明を簡単にするために、制作者仮想マシンのサービスへのアクセスを試みる消費者仮想マシンに関してプロセス1200を説明する。
プロセス1200は、ブロック1202で開始される。ここで、例えば、消費者ホスト1104(例えば、消費者ホストA)のオーバーレイネットワークプロキシ1114は、消費者仮想マシン1142(例えば、消費者仮想マシンA’)から、制作者のサービスへのアクセスを求める要求を受信する。あるいは、または加えて、ブロック1202で受信した要求は、制作者に提供されるデータパケットであってもよい。例えば、このデータパケットは、サービスと組み合わせて、あるいは消費者仮想マシンが既にアクセスを確立した制作者のサービスを利用しやすくするために使用されるデータであってよい。いくつかの実施形態では、上記要求がヘッダ付きのパケットを含み、このヘッダにより、当該要求またはパケットが、消費者仮想マシン1142に関連付けられたアドレスAから仮想アドレスXに向けたものであることを示すようにしてもよい。例えば、受信パケットは{A’、X、データ}のようになり得るが、これは、A’からXにデータが送信されていることを示す。パケットのデータフィールドは、要求または操作を制作者仮想マシン1162にて容易に実行するための要求及び/またはデータを含んでもよい。ある実施形態では、消費者仮想マシン1142は、アドレスXが仮想アドレスであることを認識していなくてもよいが、その代わりに、アドレスXが物理的な制作者システムを指していると信頼してもよい。さらに、先に述べたように、いくつかの実施形態では、オーバーレイネットワークは、消費者仮想マシン以外に、またはそれに加えて消費者システムを含んでもよい。このような実施形態では、ブロック1202は、制作者のサービスへのアクセスを求める要求を、消費者ホスト1104上に実装され、またはそれによってホストされた消費者システムから受信することを含んでもよい。同様に、制作者ホストは、消費者システムにサービスを提供するように構成され得る制作者仮想マシン以外に、またはそれに加えて制作者システムを含んでもよい。
判定ブロック1204では、オーバーレイネットワークプロキシ1114は、消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシン用リースがあるかどうかを判定する。消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシン用リースがあるかどうかを判定することは、仮想マシンマッピングリポジトリ1150にアクセスして、消費者仮想マシン1142に関連付けられたリースプールがあるかどうかを判定することを含んでもよい。さらに、ある場合には、判定ブロック1204は、消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシン用リースが上記リースプールに含まれているかどうかを判定することを含んでもよい。
オーバーレイネットワークプロキシ1114が、判定ブロック1204にて、消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシン用リースがないことを判定した場合、リースリクエスタ1130は、制作者仮想マシンにアクセスするための複数のリースをブロック1206で取得する。1つ以上の制作者仮想マシンにアクセスするための1つ以上のリースを取得するプロセスの実施例については、図14に関して以下でより詳しく説明する。
ブロック1208では、オーバーレイネットワークプロキシ1114は、ブロック1206で取得したリース用制作者仮想マシン1162との接続の確立を試みる。ある場合には、ブロック1208は、オーバーレイネットワークプロキシ1114が接続を正常に確立した各リース用制作者仮想マシンに関連付けられたリース情報を記憶することを含むことができる。
リース用制作者仮想マシンとの接続をオーバーレイネットワークプロキシ1114がブロック1208で確立した後、または、消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシン用リースがあることをオーバーレイネットワークプロキシ1114が判定ブロック1204で判定した場合、プロセス1200はブロック1210に進む。ブロック1210では、オーバーレイネットワークプロキシ1114は、消費者仮想マシン1142によって要求されたサービスにアクセスするためのリース用制作者仮想マシン1162を選択する。制作者仮想マシン1162は、ラウンドロビンまたは最低使用頻度などの任意の種類の選択アルゴリズムを用いて選択されてもよい。他の場合には、制作者仮想マシン1162は、制作者仮想マシン1162と接続を確立した順序に基づいて選択されてもよい。さらに他の場合には、制作者仮想マシン1162は、ランダムに選択されてもよく、かつ/またはブロック1202で受信したサービス要求に基づいて選択されてもよい。あるいは、ある場合には、オーバーレイネットワークプロキシ1114は、制作者仮想マシン1142の選択を容易にするために仮想マシンマッピングリポジトリ1150にアクセスしてもよい。例えば、オーバーレイネットワークプロキシ1114は、リースプールにアクセスしてもよい。このリースプールは、使用可能な制作者仮想マシン1162を特定するテーブルとして記憶され得るものであり、仮想マシンマッピングリポジトリ1150に記憶されている。
ある場合には、オーバーレイネットワークプロキシ1114は、負荷が閾値を下回っているリース用制作者仮想マシン1162を選択してもよい。その際、オーバーレイネットワークプロキシ1114は、負荷が閾値を下回っている制作者仮想マシン1162からランダムに選択してもよい。この負荷は、制作者仮想マシン1162の利用状況に関する任意の計測可能な測定基準を表してもよい。例えば、上記負荷は、プロセッサの負荷、ネットワーク接続の負荷、制作者仮想マシン1162との消費者接続数、接続時の最低レイテンシ、制作者仮想マシン1162の効率の度合いなどを表してもよい。
さらに、ある場合には、各リースを費用に関連付けてもよい。例えば、消費者、または消費者に関連するエンティティに対し、利用した秒単位で、通信もしくは処理されたデータのメガバイト単位で、または制作者仮想マシン1162の計算サイクル単位で請求してもよい。その際、オーバーレイネットワークプロキシ1114は、使用可能なリース用制作者仮想マシン1162の費用に基づいてリース用制作者仮想マシン1162を選択してもよい。
ブロック1212では、オーバーレイネットワークプロキシ1114は、要求ヘッダ(例えば、内部ヘッダ)に含まれる制作者のアドレス(例えば、仮想アドレスX)を、ブロック1210で選択されたリース用制作者仮想マシン1162のアドレスに置き換える。従って、例えば、ブロック1202で受信したパケットは、ここでは{A’、B’、データ}のようになり得る。いくつかの実施形態では、ブロック1212は任意であってよい。例えば、いくつかの実施形態では、各リース用制作者仮想マシン1162をポートに関連付けてもよい。従って、仮想アドレスXをリース用制作者仮想マシン1162のアドレスに置き換える代わりに、リース用制作者仮想マシン1162に関連付けられたポートを経由して、ホスト中の制作者にパケットを伝送してもよい。第2の実施例として、制作者ホストにパケットを伝送してもよく、制作者ホストは、例えば、仮想アドレスXに基づき、パケットを受信するリース用制作者仮想マシン1162を決定してもよい。
ブロック1214では、オーバーレイネットワークプロキシ1114は、リース用制作者仮想マシンに関連付けられた制作者ホスト1106を特定する。制作者ホスト1106は、仮想マシンマッピングリポジトリ1150に記憶された状態テーブルにアクセスすることによって特定されてもよい。
オーバーレイネットワークプロキシ1114は、ブロック1216にて、外部ヘッダを用いて要求をカプセル化する。この外部ヘッダでは、ブロック1214で特定された制作者ホスト1106、及び消費者仮想マシン1142に関連付けられた消費者ホスト1104が特定される。従って、例えば、パケットは、ここでは{A、B{A’、B’、データ}}のようになり得る。これは、当該パケットが消費者ホストAから制作者ホストBに送信されていることを示す。あるいは、ある場合には、制作者ホスト1106及び消費者ホスト1104の識別情報を、ブロック1202で受信した要求の要求ヘッダに含め、またはそれに追加してもよく、それによってパケットは{A、B、A’、B’、データ}のようになり得る。これは、当該パケットが消費者ホストAから制作者ホストBに送信されていることを示す。そのような場合、ブロック1216に関連するプロセスが完了した後、要求には、内部ヘッダと外部ヘッダで構成される2つのヘッダの代わりに1つのヘッダが含まれる。いくつかの実施形態では、ブロック1216は、ブロック1202で要求を提供した消費者仮想マシン1142とブロック1210で特定された制作者仮想マシン1162とに関連付けられたオーバーレイネットワークの識別情報を含んでもよい。従って、例えば、パケットは、{A、B、‘、A’、B’、データ}のように、”のオーバーレイネットワークまたは第2のオーバーレイネットワークではなく‘のオーバーレイネットワークまたは第1のオーバーレイネットワークに要求が関連付けられていることを示してもよい。これは、当該パケットが消費者ホストAから制作者ホストBに送信されていることを示すと共に、そのサービス要求が、消費者仮想マシンから、‘のオーバーレイネットワークに含まれる制作者仮想マシンへのものであることを示す。有利には、いくつかの実施形態では、オーバーレイネットワークの識別情報をサービス要求及びサービス要求に対する応答に含めることにより、異なるオーバーレイネットワーク間でアドレスが再度使用され得る。しかしながら、各仮想マシン及び各システムが固有のアドレスに関連付けられている場合、オーバーレイネットワークの識別情報を提供することは任意であってよい。
いくつかの実施形態では、オーバーレイネットワークプロキシ1114は、制作者仮想マシンにアクセスするためのアドレス情報を、仮想マシンマッピングリポジトリ1150に記憶されている状態管理テーブルから決定することができる。この状態管理テーブルは、ブロック1210で選択されたリース用制作者仮想マシン1162にアクセスするための接続情報を含むことができる。さらに、状態管理テーブルは、仮想アドレスから制作者仮想マシンのアドレスへのマッピングを含むことができる。さらに、状態管理テーブルは、制作者仮想マシン1162からそれぞれの制作者ホストへのマッピングを含むことができる。仮想アドレスから制作者仮想マシンへのマッピングを行うこうした状態管理テーブルの実施例を図15に示す。
ブロック1218では、オーバーレイネットワークプロキシ1114は、ブロック1214で特定された制作者ホストに要求を提供する。この要求は、ネットワーク202を介して制作者ホスト1106に提供されてもよい。
制作者仮想マシンのサービスへのアクセスを求める要求を処理するプロセスの実施例
制作者仮想マシンのサービスへのアクセスを求める要求を処理するプロセス1300の実施形態を図13に示す。プロセス1300は、消費者ホストから受信した、制作者仮想マシンのサービスへのアクセスを求める要求を処理可能な任意のシステムによって実装することができる。例えば、プロセス1300は、全部または一部において、いくつか例を挙げると、制作者ホスト1106、オーバーレイネットワークプロキシ1116及び制作者仮想マシン1162によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス1300を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス1300の各部を説明する。
ある場合には、プロセス1300を使用することにより、制作者仮想マシンが、消費者システムによって要求されたサービスを提供することができるようにしてもよい。同様に、いくつかの実施形態では、プロセス1300を使用することにより、制作者システムが、消費者仮想マシンによって要求されたサービスを提供することができるようにしてもよい。しかしながら、説明を簡単にするために、消費者仮想マシンによって要求されたサービスへのアクセスを提供する制作者仮想マシンに関してプロセス1300を説明する。
プロセス1300は、ブロック1302で開始される。ここで、例えば、制作者ホスト1106(例えば、制作者ホストB)のオーバーレイネットワークプロキシ1116は、消費者ホスト1104から要求を受信する。この要求は、例えば、{A、B、‘、A’、B’、データ}のような形を取り得るが、これは、当該パケットが、消費者ホストAから受信されており、かつ制作者ホストBに向けられたものであること、及びそのサービス要求が、消費者仮想マシンから‘のオーバーレイネットワークに含まれる制作者仮想マシンへのものであることを示す。多くの場合、受信した要求は、制作者ホスト1106によってホストされた制作者仮想マシン1162によってホストされているサービスへのアクセスを求める要求である。しかしながら、ある場合には、受信した要求は、その代わりに、制作者仮想マシン1162にデータを提供することにより、消費者ホスト1104によってホストされた消費者仮想マシン1142によってアクセスが既に確立されているサービスを容易に実行するように構成されたデータパケットであってもよい。
ブロック1304では、オーバーレイネットワークプロキシ1116は、要求を受信する制作者仮想マシン1162(例えば、制作者仮想マシンB’)を決定する。いくつかの実施形態では、ブロック1304は、ブロック1302で受信した要求から外部ヘッダを非カプセル化することを含んでもよい。そのような場合、パケットは、{A’、B’、データ}のようになり得るが、これは、当該パケットが、消費者仮想マシンA’から受信されており、かつ制作者仮想マシンB’に向けられたものであることを示す。そのような場合、オーバーレイネットワークプロキシ1116は、内部ヘッダにアクセスして制作者仮想マシン1162を特定してもよい。あるいは、または加えて、オーバーレイネットワークプロキシ1116は、外部ヘッダにアクセスすることにより、要求を受信する制作者仮想マシン1162を特定してもよい。
ある場合には、オーバーレイネットワークプロキシ1116は、ブロック1304で特定された制作者仮想マシン1162に対し、外部ヘッダのない要求を提供する。従って、パケットは、{A’、B’、データ}のようになり得る。しかしながら、他の場合には、受信した要求に外部ヘッダが含まれる場合にはそれを含めて、消費者ホスト1104から受信されたものとして要求を送ってもよい。従って、パケットは、ブロック1302で受信したように(例えば、{A、B、‘、A’、B’、データ})となり得る。
ブロック1308では、オーバーレイネットワークプロキシ1116は、ブロック1302で受信した要求を生成した消費者仮想マシン1142に向けられた、制作者仮想マシン1162からの応答を受信する。いくつかの実施形態では、この応答は、異なる消費者仮想マシンに向けられたものであってもよい。例えば、消費者仮想マシンからの要求は、制作者仮想マシンから別の消費者仮想マシンにファイルを転送することを求める要求であってもよい。このパケットは、ブロック1202で受信したパケットと同様であってよく、{B’、A’、データ}のようになり得る。これは、制作者仮想マシンB’が、消費者仮想マシンA’にデータ(例えば、サービス要求に対する応答)を送信していることを示す。ブロック1310では、オーバーレイネットワークプロキシ1116は、消費者仮想マシン1142に関連付けられた消費者ホスト1104を特定する。消費者ホスト1104は、仮想マシンマッピングリポジトリ1152のマッピングテーブルにアクセスすることによって特定されてもよい。このマッピングテーブルでは、消費者仮想マシン1142をホストする消費者ホスト1104に消費者仮想マシン1142をマッピングしてもよい。通常、各消費者ホスト1104は、複数の消費者仮想マシン1142をホストし得る。しかしながら、ある場合、1つ以上の消費者ホスト1104は、1つの消費者仮想マシン1142をホストしてもよい。
オーバーレイネットワークプロキシ1116は、ブロック1312にて、消費者ホスト1104、及び制作者仮想マシン1162に関連付けられた制作者ホスト1106を特定する外部ヘッダを用いて上記応答をカプセル化する。従って、パケットは、{B、A{B’、A’、データ}}のようになり得る。ブロック1216に関して説明したように、ある場合には、消費者ホスト1104及び制作者ホスト1106の識別情報を、ブロック1308で受信した応答の既存のヘッダに含め、またはそれに追加してもよい。従って、パケットは、{B、A、B’、A’、データ}のようになり得る。同様に、ブロック1216に関して説明したように、1つのヘッダのみが存在する場合、外部ヘッダ、すなわち応答のヘッダには、制作者仮想マシン1162と消費者仮想マシン1142とに関連付けられたオーバーレイネットワークの識別情報が含まれてもよい。従って、パケットは、{B、A、‘、B’、A’、データ}のようになり得る。
制作者ホスト1106は、ブロック1314で消費者ホスト1104に上記応答を提供する。いくつかの実施形態では、制作者ホスト1106は、ネットワーク202を介して上記応答を提供してもよい。
いくつかの実施形態では、消費者ホスト1104は、プロセス1300または類似のプロセスを実行して、ブロック1308で受信した応答を、対応する消費者仮想マシン1142に提供してもよい。さらに、ある場合には、消費者ホスト1104のオーバーレイネットワークプロキシ1114は、消費者仮想マシン1142によって提供された最初の要求を作成するのに使用された仮想アドレス(例えば、仮想アドレスX)を識別してもよい。このように識別された仮想アドレスを用いて、オーバーレイネットワークプロキシ1114は、制作者仮想マシン1162を特定する受信応答内のアドレスを、消費者仮想マシン1142によって提供された最初の要求を作成するのに使用された仮想アドレスに置き換えてもよい。従って、例えば、消費者仮想マシンA’にパケットを送る前に、当該パケットは{X、A’、データ}のように再構成され得るが、これは、パケットに含まれるデータを実際に生成した可能性がある制作者仮想マシンB’からではなく、システムXから応答を受信したことを示す。
制作者仮想マシンへのアクセスをリースするプロセスの実施例
制作者仮想マシンへのアクセスをリースするプロセス1400の実施形態を図14に示す。プロセス1400は、制作者仮想マシン1162(例えば、制作者仮想マシンB’)にアクセスするためのリースを取得可能な任意のシステムによって実装することができる。例えば、プロセス1400は、全部または一部において、いくつか例を挙げると、消費者ホスト1104、リースリクエスタ1130、リースエージェント102、オーバーレイネットワークプロキシ1114及びリースシステム224によって実装することができる。全部または一部において、任意の数のシステムを用いてプロセス1400を実装することができるが、説明を簡単にするため、特定のシステムを参照してプロセス1400の各部を説明する。
プロセス1400は、ブロック1402で開始される。ここで、例えば、リースリクエスタ1130は、オーバーレイネットワークに関連付けられた消費者仮想マシン1142に代わり、制作者仮想マシン1162のリースを取得することを求める要求を生成する。ブロック1402に関連するプロセスは、消費者仮想マシン1142の初期化時に発生し得る。あるいは、または加えて、ブロック1402は、(例えば、プロセス1200に関連する判定ブロック1204で判定され得るように)消費者仮想マシン1142に関連付けられた未使用の制作者仮想マシンのリースがないと判定したことに応答して発生してもよい。
ブロック1404では、リースリクエスタ1130は、複数のリースエージェント102に要求を提供する。いくつかの実施形態では、複数のリースエージェント102は、オーバーレイネットワーク環境1100に含まれるリースエージェント102のサブセットを含んでもよい。さらに、ある場合には、1つのリースエージェント102に要求を提供してもよい。
ブロック1406では、リースリクエスタ1130は、複数のリースエージェント102のそれぞれから、ブロック1402で要求が生成された消費者仮想マシン1142と同じオーバーレイネットワークに関連付けられた制作者仮想マシン1162の識別情報を受信する。通常、複数のリースエージェント102のそれぞれは、1つの制作者仮想マシン1162の識別情報を提供する。しかしながら、ある場合には、リースエージェント102の1つ以上は、複数の制作者仮想マシン1162の識別情報を提供してもよい。さらに、リースエージェント102は、制作者仮想マシン1162の識別情報を全く提供しないようにすることもできる。例えば、特定のリースエージェント102に関連付けられた各制作者仮想マシン1162が閾利用率を超えて利用されている場合、リースエージェント102は、制作者仮想マシン1162の識別情報を提供しなくてもよい。そのような場合、リースエージェント102は、管理者などのユーザに対し、リースエージェント102に関連付けられた各制作者仮想マシン1162が閾利用率を上回って利用されているとの警告を発してもよい。
いくつかの実施形態では、制作者仮想マシン1162の識別情報を受信することに加えて、制作者仮想マシン1162のリースに関連するリース情報をブロック1406で受信してもよい。このリース情報には、制作者仮想マシン1162にアクセスするためのアドレス、制作者仮想マシン1162をホストする制作者ホスト1106の識別情報及び/もしくはアドレス、並びに/または制作者仮想マシン1162のリース用に消費者仮想マシン1142に割り振られた消費可能リソース量に対する消費可能リソースの識別情報が含まれてもよい。この消費可能リソースは、制作者仮想マシン1162のリース期間を測定するための任意の種類のリソースを含んでもよい。例えば、消費可能リソースは、時間、一連の操作、制作者仮想マシン1162によって処理される、かつ/もしくは制作者仮想マシン1162から受信されるデータ量、または消費者仮想マシン1142による制作者仮想マシン1162の利用状況を測定するためのその他の測定基準を含んでもよい。
ブロック1408では、オーバーレイネットワークプロキシ1114は、消費者仮想マシン1142に代わり、ブロック1406で特定された各制作者仮想マシン1162へのアクセスを試みる。いくつかの実施形態では、ブロック1408は、各制作者仮想マシン1162との接続の確立を試みることを含むことができる。他の実施形態では、ブロック1408は、制作者仮想マシン1162との確立した接続を通して通信を試みることを含むことができる。ブロック1410では、オーバーレイネットワークプロキシ1114は、確立された各接続に関する接続情報をリースプール内に記憶する。この接続情報には、接続を特定するための情報、及びその接続を使用してサービスにアクセスする方法が含まれてもよい。例えば、この接続情報には、制作者仮想マシン1162をホストする制作者ホスト1106の識別情報の消費可能リソースの識別情報などの、ブロック1406の一部として受信した任意の情報が含まれてもよい。いくつかの実施形態では、リースプール及び/または接続情報は、仮想マシンマッピングリポジトリ1150に記憶されてもよい。
プロセス300と同様に、いくつかの実施形態では、制作者仮想マシン1162のリースを更新するのにプロセス1400を使用してもよい。このような実施形態では、ブロック1402は、制作者仮想マシンの、現在の、または以前に存在したリースを更新することを求める要求を生成することを含んでもよい。この更新要求は、現在の制作者仮想マシン用リースの識別情報を含んでもよい。さらに、ブロック1406は、更新要求が承認されたかどうかの指示を受信すること、及び、ある場合には、消費可能リソース(例えば、リース時間やプロセッサ使用率)の追加付与に関するリース情報を含んでもよい。
状態管理テーブルの実施例
オーバーレイネットワーク環境1100内の通信を促進するために使用可能な状態管理テーブル1500の非限定的な1つの実施例を図15に示す。状態管理テーブル1500は、消費者仮想マシン1142と制作者仮想マシン1162との間の通信を促進する複数の情報を含むことかできる。例えば、状態管理テーブル1500は、送信元オーバーレイアドレス1502、送信元オーバーレイポート1504、仮想アドレス1506及び送信先オーバーレイアドレス1508のカラムを含んでもよい。テーブル見出しの一部(例えば、送信元オーバーレイアドレス1502)によって示すように、状態管理テーブル1500では、アドレスはインターネットプロトコル(IP)アドレスであってよい。しかしながら、これらのアドレスは、そのように限定されず、他の形式をとってもよく、または他のプロトコルに従ってもよい。
図15の実施例では、状態管理テーブル1500の図示された各部は、消費者仮想マシンA’に関連付けられている。仮想アドレス1506のカラムに示すように、消費者仮想マシンA’は、複数の仮想アドレス、すなわちXとYを使用してもよい。さらに、各仮想アドレスを、複数の制作者仮想マシンに関連付けられた複数の送信先オーバーレイアドレスに関連付けてもよい。例えば、仮想アドレスYを、アドレスK’の制作者仮想マシンとアドレスM’の制作者仮想マシンとに関連付けてもよい。複数の送信先アドレスが1つの仮想アドレスにマッピングされ得るため、オーバーレイネットワークプロキシ1114は、データパケットを正しい送信先に導くため、送信元オーバーレイポート1504のカラムに示すように、ポートを特定してもよい。従って、サービス要求を制作者仮想マシンK’に送信するために、オーバーレイネットワークプロキシ1114は、仮想アドレスYをK’のアドレスに置き換えると共にポートP1を使用する。同様に、サービス要求を制作者仮想マシンM’に送信するために、オーバーレイネットワークプロキシ1114は、仮想アドレスYをM’のアドレスに置き換えると共にポートP2を使用する。
多くの場合、オーバーレイネットワークは、開放型システム間相互接続(Open System Interconnection:OSI)モデルのレイヤー3及び/またはレイヤー4を用いて実装され得る。通常、レイヤー3及び/またはレイヤー4を用いて実装されたオーバーレイネットワークを用いると、ネットワーク接続基盤は、当該ネットワークを介して通信を行っている各アプリケーションを認識していない。これにより、消費者仮想マシンと制作者仮想マシンとの間でどのくらいのデータが伝送されるかを先験的に予測することがより難しくなるため、負荷のバランスを取ることがより困難になる可能性がある。
1つの解決策としては、少なくとも部分的には、OSIモデルのレイヤー7を用いて実装される、プロトコルを意識した(protocol aware)負荷バランスシステムを作成することである。こうしたシステムでは、オーバーレイネットワークプロキシ1114は、いくつかの実施形態では、消費者仮想マシン1142によって伝送されているパケットを検査することにより、消費者仮想マシン1142がアクセスを試みているサービスの種類またはそのサービス要求に関連するプロトコルの種類、及びそのサービス要求が1つのサービスを求めるものか、それとも同一種類または異なる種類の複数のサービスを求めるものかを判別することができる。従って、例えば、消費者仮想マシンがHTTP要求を用いてウェブサイトへのアクセスを要求しており、かつ各HTTP要求が、種々のウェブページ、または1つのウェブページの種々の機能を求めるためのものであるとオーバーレイネットワークプロキシ1114が判断した場合、オーバーレイネットワークプロキシ1114は、それらの異なる要求を別々の制作者仮想マシン1162に送信して処理を行わせることにより、それらの要求が別々のシステムによって処理されていることを消費者仮想マシン1142に意識させないようにすることができる。従って、ある場合には、単一の接続が一連の接続にわたって多重分離され得る。オーバーレイネットワークプロキシ1114は、一連の要求を複数の制作者仮想マシン1162に分割することにより、効率またはその要求の処理速度を増加させてもよい。さらに、消費者仮想マシン1142が制作者仮想マシン1162に大量の負荷をかけているとオーバーレイネットワークプロキシ1114が判断した場合、オーバーレイネットワークプロキシ1114は、要求を処理している制作者仮想マシン1162を入れ替えることができ、かつ/または複数の制作者仮想マシン1162間に要求を分割することができる。制作者仮想マシン1162を入れ替えることは、ある場合には、要求識別子をサービス要求に関連付けることによって実現可能である。例えば、図15の要求識別子1510のカラムに示すように、要求識別子がI1のパケットは、制作者仮想マシンB’のアドレスと入れ替えられる仮想アドレスXを有することができる。同様に、要求識別子がI2のパケットは、制作者仮想マシンD’のアドレスと入れ替えられる仮想アドレスXを有することができる。
本開示の実施形態は、以下の項に照らして記載することができる。
項1:制作者システムによってホストされたサービスへのアクセスを取得するための、当該制作者システムへのアクセスのリース方法であって、
1つ以上のプロセッサを含む消費者システムにより、
複数の制作者システムのうちの1つの制作者システムのサービスへのアクセスを求めるリース要求を生成すること、
当該リース要求を複数のリースエージェントに提供すること、
各リースエージェントから当該制作者システムの1つ以上の識別情報を受信すること、
当該複数のリースエージェントによって特定された当該制作者システムの少なくとも一部との接続の開始を試みること、及び
当該制作者システムの少なくとも一部に含まれる第1の制作者システムとの接続を正常に確立したことに応答して、当該第1の制作者システムによって提供される当該サービスにアクセスすること、
を含む方法。
項2:当該制作者システムの1つ以上の当該識別情報を当該各リースエージェントから受信することは、当該複数のリースエージェントの少なくとも2つのリースエージェントから、異なる制作者システムの識別情報を受信することを含む、項1に記載の方法。
項3:当該複数のリースエージェントの当該各リースエージェントの少なくとも一部は、不均等な一組の制作者システムに関連付けられている、項1〜項2に記載の方法。
項4:各リースエージェントから当該制作者システムの1つ以上の当該識別情報を受信することは、当該特定された制作者システムの少なくとも一部の消費可能リソースを受信することを含む、項1〜項3に記載の方法。
項5:当該消費可能リソースは、リース時間、一連のコンピュータサイクル、当該特定された制作者システムの利用に関わる金銭的予算、またはディスク記憶容量を含むことが可能であり、当該リース時間は、当該消費者システムが当該制作者システムの当該サービスにアクセスすることを許可されている時間を含む、項4に記載の方法。
項6:リース閾値を満たす当該第1の制作者システムの当該消費可能リソースから残存する消費可能リソースの量に応じて、当該方法が、
当該第1の制作者の当該サービスへのアクセスを求める現在のサービス要求が、当該消費可能リソースの期限が切れるまでに完了しない確率を求めること、
当該確率が更新閾値を満たしていると判定したことに応答して、当該第1の制作者システムの当該サービスへのアクセスを求める更新リース要求を生成すること、及び
当該更新リース要求を、当該第1の制作者システムの当該識別情報を提供した当該複数のリースエージェントに含まれる当該リースエージェントに提供すること、をさらに含む、項5に記載の方法。
項7:当該更新リース要求を当該リースエージェントに提供したことに応答して、当該方法が、当該第1の制作者システムの当該消費可能リソースの更新量を受信することをさらに含む、項6に記載の方法。
項8:当該更新リース要求を当該リースエージェントに提供したことに応答して、当該方法が、当該第1の制作者システムとは異なる新たな制作者システムの消費可能リソースの新たな量を受信することをさらに含む、項6〜項7に記載の方法。
項9:当該制作者システムの少なくとも一部に含まれる当該第1の制作者システムとの当該接続を正常に確立したことに応答して、当該方法が当該第1の制作者システムからメタデータを取得することをさらに含み、当該メタデータの少なくとも一部は、当該第1の制作者システムに関するステータス情報を含む、項1〜項8に記載の方法。
項10:当該メタデータの少なくとも一部を、当該第1の制作者システムの当該識別情報を提供した当該複数のリースエージェントに含まれる当該リースエージェントに提供することをさらに含む、項9に記載の方法。
項11:当該メタデータの少なくとも一部を当該複数のリースエージェントに提供することをさらに含む、項9〜項10に記載の方法。
項12:当該制作者システムの少なくとも一部に含まれる第2の制作者システムとの接続を正常に確立したことに応答して、当該第2の制作者システムの第2のサービスにアクセスする、項1〜項11に記載の方法。
項13:当該サービスと当該第2のサービスとが同一のサービスである、項12に記載の方法。
項14:当該サービスを用いてアクセスされたデータと当該第2のサービスを用いてアクセスされたデータとが異なる、項12〜項13に記載の方法。
項15:制作者システムによってホストされたサービスへのアクセスを取得するために当該制作者システムへのアクセスをリースするシステムであって、
1つ以上のプロセッサを含む消費者システムであって、
制作者システムのサービスへのアクセスを求めるリース要求を生成し、
当該リース要求を複数のリースエージェントに提供し、
当該複数のリースエージェントの少なくとも一部から制作者システムの識別情報を受信するように構成されたリースリクエスタをさらに含む消費者システム、
を含み、
当該消費者システムは、当該複数のリースエージェントによって特定された当該制作者システムの少なくとも一部との接続の開始を試みるように構成された接続モジュールをさらに含み、
当該消費者システムは、当該制作者システムの少なくとも一部に属する第1の制作者システムとの接続を当該接続モジュールが正常に確立したことに応答して、当該第1の制作者システムの当該サービスにアクセスするように構成されたリソースリクエスタをさらに含む、システム。
項16:当該リースリクエスタは、当該特定された制作者システムの少なくとも一部のリース時間を受信するようにさらに構成されており、当該リース時間は、当該消費者システムが当該制作者システムの当該サービスにアクセスすることを許可されている時間を含む、項15に記載のシステム。
項17:当該接続モジュールは、当該第1の制作者システムに関連付けられた当該リース時間を当該第1の制作者システムに提供するようにさらに構成されている、項16に記載のシステム。
項18:当該リソースリクエスタは、当該第1の制作者システムの当該リース時間からの残存時間がリース閾値を満たしていることに応答して、当該第1の制作者の当該サービスへのアクセスを求める現在のサービス要求が当該リース時間の期限が切れるまでに完了しない確率を求めるようにさらに構成されており、
当該リースリクエスタは、
当該確率が更新閾値を満たしていると判定したことに応答して、当該第1の制作者システムの当該サービスへのアクセスを求める更新リース要求を生成し、
当該更新リース要求を、当該第1の制作者システムの当該識別情報を提供した当該複数のリースエージェントに含まれる当該リースエージェントに提供するようにさらに構成されている、項16〜項17に記載のシステム。
項19:メタデータであって、当該メタデータの少なくとも一部が当該第1の制作者システムに関するステータス情報を含むメタデータを当該第1の制作者システムから取得し、
当該第1の制作者システムの当該識別情報を提供した当該複数のリースエージェントに含まれる当該リースエージェントに当該ステータス情報の少なくとも一部を提供するように構成されたステータスモジュールをさらに含む、項15〜項18に記載のシステム。
項20:制作者システムによってホストされたサービスへのアクセスを提供するために当該制作者システムへのアクセスをリースするシステムであって、
第1のリースシステムを含み、コンピュータハードウェアを含むコンピュータシステムによって実装された第1のリースエージェントであって、当該第1のリースシステムは、
複数の制作者システムによって提供されるサービスへのアクセスをリースすることを求める第1の要求を消費者システムから受信し、
当該複数の制作者システムの第1のサブセットを含む第1の複数の制作者システムの各制作者システムに関連する制作者ステータス情報に少なくとも部分的に基づき、当該第1の複数の制作者システムから第1の制作者システムを特定し、
当該第1の制作者システムを特定したことに応答して、当該第1の制作者システムの識別情報を当該消費者システムに提供するように構成された、第1のリースエージェントと、
当該サービスへのアクセスをリースすることを求める第2の要求を当該消費者システムから受信し、
当該複数の制作者システムの第2のサブセットを含む第2の複数の制作者システムであって、当該複数の制作者システムの当該第2のサブセットが当該複数の制作者システムの当該第1のサブセットと同一ではない第2の複数の制作者システムの各制作者システムに関連する制作者ステータス情報に少なくとも部分的に基づき、当該第2の複数の制作者システムから第2の制作者システムを特定し、
当該第2の制作者システムを特定したことに応答して、当該第2の制作者システムの識別情報を当該消費者システムに提供し、それによって当該消費者システムが、少なくとも当該第1の制作者システム及び当該第2の制作者システムに当該サービスへのアクセスを要求できるようにすることにより、制作者システムの当該特定を、少なくとも当該第1のリースエージェントと当該第2のリースエージェントとの間に分散させた分散プロセスとするように構成された、
第2のリースシステムを含む第2のリースエージェントと、
を含むシステム。
項21:当該第1のリースシステムは、当該消費者システムに第1のリース時間を提供するようにさらに構成されており、当該第1のリース時間は、当該消費者システムが当該第1の制作者システムにアクセスすることを許可されている時間を含み、当該第2のリースシステムは、当該消費者システムに第2のリース時間を提供するようにさらに構成されており、当該第2のリース時間は、当該消費者システムが当該第2の制作者システムにアクセスすることを許可されている時間を含む、項20に記載のシステム。
項22:当該第1のリースエージェントは、
当該第1の制作者システムの第1の更新済みステータス情報を受信し、
当該第1の更新済みステータス情報に少なくとも部分的に基づき、当該第1の制作者システムの当該制作者ステータス情報を更新するように構成された第1のステータスモジュールをさらに含み、
当該第2のリースエージェントは、
当該第2の制作者システムの第2の更新済みステータス情報を受信し、
当該第2の更新済みステータス情報に少なくとも部分的に基づき、当該第2の制作者システムの当該制作者ステータス情報を更新するように構成された第2のステータスモジュールをさらに含む、項20〜項21に記載のシステム。
項23:当該第1の更新済みステータス情報及び当該第2の更新済みステータス情報は、当該消費者システムから受信される、項22に記載のシステム。
項24:当該第1の更新済みステータス情報は当該第1の制作者システムから受信され、当該第2の更新済みステータス情報は当該第2の制作者システムから受信される、項22に記載のシステム。
項25:当該第1のリースエージェントは、
当該第1の制作者システムの追加リース時間を取得することを求める第1のリース更新要求を当該消費者システムから受信し、
当該第1の制作者システムの制作者ステータス情報に少なくとも部分的に基づき、当該第1のリース更新要求を承認するかどうかを決定し、
当該第1のリース更新要求を承認すると決定したことに応答して、当該第1の制作者システムの第1のリース更新時間を当該消費者システムに提供するようにさらに構成されている、項20〜項24に記載のシステム。
項26:当該第1のリース更新要求を承認しないと決定したことに応答して、当該第1のリースエージェントが、
当該第1の複数の制作者システムの各制作者システムに関連する制作者ステータス情報に少なくとも部分的に基づき、当該第1の複数の制作者システムから第3の制作者システムを特定し、
当該第3の制作者システムを特定したことに応答して、当該第3の制作者システムの識別情報を当該消費者システムに提供するようにさらに構成されている、項25に記載のシステム。
項27:複数のリースエージェントシステム間での制作者システムの分配方法であって、
1つ以上のプロセッサを含む第1のリースエージェントシステムにより、
第1の時間に使用可能な第1の一組の制作者システムを決定すること、
当該第1の時間よりも前に生じた第2の時間に使用可能な第2の一組の制作者システムを特定すること、
当該第1の一組の制作者システムと当該第2の一組の制作者システムとの数の差分を算出すること、
当該差分が閾値を満たしているかどうかを判定すること、並びに
当該差分が当該閾値を満たしていると判定したことに応答して、
各リースエージェントシステムに当該第1の一組の制作者システムの別々のサブセットを割り当てることにより、当該第1の一組の制作者システムを複数のリースエージェントシステム間に分配すること、及び
当該第1のリースエージェントシステム以外の当該複数のリースエージェントシステムの各リースエージェントシステムに対し、当該第1の一組の制作者システムに含まれる、当該リースエージェントシステムに割り当てられた当該制作者システムのサブセットの識別情報を当該各リースエージェントシステムに提供して、当該第1の一組の制作者システムに含まれる種々の制作者システムが種々の消費者システムにサービスを提供できるようにすることにより、当該第1の一組の制作者システムを当該複数のリースエージェントシステム間に当該分配することが、当該第1の一組の制作者システムによって提供される当該サービスを当該種々の消費者システム間に割り振る際のバランスを取ることを可能にすること、
を含む方法。
項28:当該複数のリースエージェントシステムに含まれる一組のリースエージェントシステムに対し、当該第1のリースエージェントシステムが当該第1の一組の制作者システムを分配していることを通知することにより、当該第1のリースエージェントシステムが当該第1の一組の制作者システムを分配している一方で、当該一組のリースエージェントシステムが当該第1の一組の制作者システムの分配を試みないようにすることをさらに含む、項27に記載の方法。
項29:当該第2の一組の使用可能な制作者システム及び当該第2の時間は、非活動期間の後に当該第1のリースエージェントシステムを起動させるときに当該差分が当該閾値を確実に満たす値を含む、項27〜項28に記載の方法。
項30:当該第1の一組の制作者システムは、当該第1の時間に使用可能な全数の制作者システムを含み、当該第2の一組の制作者システムは、当該第2の時間に使用可能な全数の制作者システムを含む、項27〜項29に記載の方法。
項31:当該複数のリースエージェントシステムの少なくとも1つが第3の時間に使用できないとの指示を受信すること、
当該第3の時間に使用可能な第3の一組の制作者システムを特定すること、
当該第3の時間に使用可能な一組のリースエージェントシステムを特定すること、
当該第3の一組の制作者システムを、当該第3の時間に使用可能な当該一組のリースエージェントシステム間に分配すること、及び
当該第3の時間に使用可能な当該一組のリースエージェントシステムの各リースエージェントシステムに対し、当該第3の一組の制作者システムに含まれる制作者システムのサブセットであって、当該第2の一組の制作者システムの当該分配に少なくとも部分的に基づいて決定された制作者システムのサブセットの識別情報を当該リースエージェントシステムに提供すること、をさらに含む、項27〜項30に記載の方法。
項32:当該第3の一組の制作者システムと当該第1の一組の制作者システムとが同一システムである、項31に記載の方法。
項33:当該第1の時間に使用可能な当該第1の一組の制作者システムを当該複数のリースエージェントシステム間に分配することは、当該第1の一組の制作者システムを重複しない制作者システムのサブセットに分割することを含む、項27〜項32に記載の方法。
項34:当該第1のリースエージェントシステムに割り当てられた第1の制作者システムのサブセットに含まれる制作者システムがもはや使用できないと判定すること、
及び使用可能な制作者システムの数を更新して当該制作者システムがもはや使用できないことを反映することであって、当該第1の時間に使用可能な当該第1の一組の制作者システムを決定することが、使用可能な制作者システムの当該数に少なくとも部分的に基づいていること、
をさらに含む、項27〜項33に記載の方法。
項35:当該制作者システムがもはや使用できないと判定することは、当該制作者システムが応答しないとの通知を消費者システムから受信することを含む、項34に記載の方法。
項36:当該制作者システムがもはや使用できないと判定することは、当該第1のリースエージェントシステムによって提供されたステータス要求に対して当該制作者システムが応答しないことを判定することを含む、項34〜項35に記載の方法。
項37:当該第1のリースエージェントシステムに登録することを求める要求を制作者システムから受信すること、
当該第1のリースエージェントシステムに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれているかどうかを判定すること、及び
当該第1のリースエージェントシステムに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれていると判定したことに応答して、当該制作者システムを当該第1のリースエージェントシステムに登録すること、をさらに含む、項27〜項36に記載の方法。
項38:当該第1のリースエージェントシステムに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれていないと判定したことに応答して、当該方法が、
当該制作者システムに割り当てられた当該複数のリースエージェントシステムから第2のリースエージェントシステムを特定すること、及び
当該第2のリースエージェントシステムの識別情報を当該制作者システムに提供すること、をさらに含む、項37に記載の方法。
項39:当該種々の消費者システムに含まれる消費者システムが、当該複数の制作者システムに含まれる別々の制作者システムに別々の時間にアクセスする、項27〜項38に記載の方法。
項40:複数のリースエージェント間に制作者システムを分配するシステムであって、
第1のリースエージェントを含む複数のリースエージェントであって、当該複数のリースエージェントに含まれる各リースエージェントが1つ以上のプロセッサを含み、当該第1のリースエージェントが、第1の時間での一組の使用可能な制作者システムと第2の時間での当該一組の使用可能な制作者システムとの差分が閾値を満たしているかどうかを判定するように構成された分配システムをさらに含む複数のリースエージェントと、
当該分配システムであって、当該差分が当該閾値を満たしていると判定したことに応答して、
当該複数のリースエージェントに含まれる2つ以上のリースエージェントの数に基づき、当該一組の制作者システムを複数の制作者システムのサブセットに分割して、種々のユーザシステムによる当該複数の制作者システムへのアクセスを当該複数の制作者システム間にほぼ均等に分散させるように試み、
当該複数のリースエージェントの各リースエージェントに対し、当該複数の制作者システムのサブセットのうちの1つのサブセットに含まれる制作者システムの識別情報を当該リースエージェントに提供するようにさらに構成されている当該分配システムと、
を含むシステム。
項41:制作者システムのサブセットの数は、当該複数のリースエージェントに含まれる当該2つ以上のリースエージェントの数に対応する、項40に記載のシステム。
項42:当該分配システムは、当該複数の制作者システムのサブセットとは異なる制作者システムのサブセットに含まれる当該制作者システムの識別情報を各リースエージェントに提供するようにさらに構成されている、項40〜項41に記載のシステム。
項43:当該分配システムは、当該第1のリースエージェントを含まない、当該複数のリースエージェントのうちの1つ以上のリースエージェントに対し、当該第1のリースエージェントの当該分配システムが当該1組の制作者システムを分配しているとの警告を発するようにさらに構成されている、項40〜項42に記載のシステム。
項44:当該複数のリースエージェントに含まれる第2のリースエージェントが当該一組の制作者システムを分配しているとの警告を受信したことに応答して、当該第1のリースエージェントの当該分配システムは、当該一組の制作者システムの分配を行わないようにさらに構成されている、項40〜項43に記載のシステム。
項45:当該第1のリースエージェントは、
当該第1のリースエージェントに登録することを求める要求を制作者システムから受信し、
当該第1のリースエージェントに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれているかどうかを判定し、
当該第1のリースエージェントに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれていると判定したことに応答して、当該制作者システムを当該第1のリースエージェントに登録し、
当該第1のリースエージェントに割り当てられた当該制作者システムのサブセットに当該制作者システムが含まれていないと判定したことに応答して、当該制作者システムに割り当てられた当該複数のリースエージェントに含まれる第2のリースエージェントを特定し、当該第2のリースエージェントの識別情報を当該制作者システムに提供するように構成された登録モジュールをさらに含む、項40〜項44に記載のシステム。
項46:複数のリースエージェントシステム間でのリースの分配方法であって、
1つ以上のプロセッサを含む第1のリースエージェントシステムにより、
一組の使用可能な制作者システムを特定すること、
当該一組の使用可能な制作者システムの各制作者システムに使用可能な複数のリースを決定すること、
複数のリースエージェントシステムに含まれる各リースエージェントシステムに、各制作者システムに使用可能な当該複数のリースに含まれるリースのサブセットを割り当てることにより、各制作者システムに使用可能な当該複数のリースを当該複数のリースエージェントシステム間に分配すること、及び
当該複数のリースエージェントシステムの各リースエージェントシステムに対し、当該リースエージェントシステムに割り当てられた当該リースのサブセットを当該リースエージェントシステムに提供することにより、各制作者システムに使用可能な当該複数のリースを当該複数のリースエージェントシステム間に当該分配することが、当該複数のリースエージェントシステム間で作業負荷のバランスを取ることを可能にすること、
を含む方法。
項47:各リースエージェントシステムに重複しないリースのサブセットが割り当てられている、項46に記載の方法。
項48:当該リースのサブセットを当該リースエージェントシステムに提供することは、当該リースエージェントシステムに割り当てられた当該リースのサブセットを当該第1のリースエージェントシステムに提供することを除く、項46〜項47に記載の方法。
項49:当該リースエージェントシステムに割り当てられた当該リースのサブセットを当該リースエージェントシステムに提供することは、当該複数の制作者システムの各制作者システム用に当該リースエージェントシステムに割り当てられた当該複数のリースを、当該リースエージェントシステムに提供することを含む、項46〜項48に記載の方法。
項50:当該リースエージェントシステムに割り当てられた当該リースのサブセットを当該リースエージェントシステムに提供することは、当該リースエージェントシステムに割り当てられた各リースの識別子を当該リースエージェントシステムに提供することを含む、項46〜項49に記載の方法。
項51:各制作者システムに使用可能な当該複数のリースを当該複数のリースエージェントシステム間に分配することは、各制作者システムに使用可能な当該複数のリースを当該複数のリースエージェントシステム間に実質的に均等に分配することを含む、項46〜項50に記載の方法。
項52:当該複数のリースエージェントシステムは、一組のリースエージェントシステムのサブセットを含む、項46〜項51に記載の方法。
項53:当該複数のリースエージェントシステムは、当該第1のリースエージェントシステムを含む、項52に記載の方法。
項54:当該一組の使用可能な制作者システムは、使用可能な制作者システムのサブセットを含む、項46〜項53に記載の方法。
項55:各制作者システムに使用可能な当該複数のリースを当該複数のリースエージェントシステム間に当該分配することは、第2の時間に比べて閾値を変えた第1の時間における当該一組の使用可能な制作者システム間で使用可能な全リース数に応答して発生する、項46〜項54に記載の方法。
項56:サービスへのアクセスを提供する複数の制作者システムからの制作者システムの選択方法であって、
1つ以上のプロセッサを含む第1のリースエージェントシステムにより、
複数の制作者システムのステータス情報を受信することであって、当該複数の制作者システムの各制作者システムが選択重みに関連付けられており、当該ステータス情報の少なくとも一部が、少なくとも1つの消費者システムによる少なくとも1つの制作者システムの当該ステータスの決定を反映していること、
当該受信したステータス情報に少なくとも部分的に基づいて当該複数の制作者システムの制作者ステータス情報を変更することであって、当該変更された制作者ステータス情報が、消費者システムとの対話についての当該複数の制作者システムの性能に関する一連の測定基準を含むこと、
当該一連の測定基準に含まれる第1の測定基準に少なくとも部分的に基づき、当該複数の制作者システムに関連付けられた当該選択重みを変更すること、
当該複数の制作者システムの1つへのアクセスをリースすることを求める要求を消費者システムから受信すること、並びに
当該複数の制作者システムの1つへのアクセスをリースすることを求める当該要求を受信したことに応答して、
当該消費者システムにサービスを提供する当該複数の制作者システムの各制作者システムに関連付けられた対応する選択重みに少なくとも部分的に基づき、当該複数の制作者システムから制作者システムを選択すること、
当該選択された制作者システムの識別情報を、当該複数の制作者システムの1つへのアクセスをリースすることを求める当該要求を提供した消費者システムに提供すること、及び
当該選択された制作者システムに関連する制作者ステータス情報であって、当該制作者ステータス情報の少なくとも一部が第2の消費者システムから取得されている制作者ステータス情報を当該消費者システムに提供すること、
を含む方法。
項57:当該複数の制作者システムが制作者システムのサブセットを含む、項56に記載の方法。
項58:当該複数の制作者システムに関連付けられた当該選択重みを変更することは、当該制作者システムの当該選択によって特定の制作者システムが選択される確率を変える、項56〜項57に記載の方法。
項59:少なくとも1つの消費者システムから当該ステータス情報を受信する、項56〜項58に記載の方法。
項60:当該少なくとも1つの消費者システムは、当該複数の制作者システムの1つへのアクセスをリースすることを求める当該要求を提供した当該消費者システムを含む、項59に記載の方法。
項61:当該複数の制作者システムから当該ステータス情報を受信する、項56〜項60に記載の方法。
項62:第2のリースエージェントシステムから当該ステータス情報を受信する、項56〜項60に記載の方法。
項63:当該複数の制作者システムに含まれる第1の制作者システムに対し、対応する変更後の選択重みが削除閾値を満たしているかどうかを判定すること、及び
当該変更後の選択重みが当該削除閾値を満たしていることに応答して、使用可能な制作者システムのリストであって、選択に使用可能な当該複数の制作者システムに含まれる制作者システムに対応する使用可能な制作者システムの識別情報を含む使用可能な制作者システムのリストから当該第1の制作者システムの識別情報を削除すること、をさらに含む項56〜項63に記載の方法。
項64:当該複数の制作者システムから当該制作者システムを当該選択することは、当該使用可能な制作者システムのリストから当該制作者システムを選択することを含む、項63に記載の方法。
項65:当該使用可能な制作者システムのリストから削除された制作者システムの数を追跡すること、及び
当該数が減少閾値を満たしていることに応答して、当該使用可能な制作者システムを、複数のリースエージェントシステムであって、当該第1のリースエージェントシステムを含む複数のリースエージェントシステム間に再分配すること、をさらに含む項63〜項64に記載の方法。
項66:当該削除閾値は、当該複数の制作者システムの当該第1の測定基準の平均値に基づいている、項63に記載の方法。
項67:当該消費者システムに提供された当該制作者ステータス情報は、当該第1のリースエージェントシステムに使用可能な独立した一組の制作者ステータス情報を含み、当該独立した一組の制作者ステータス情報により、当該消費者システムが、複数のリース用制作者システムから、他のリース用制作者システムと比べて利用されることが少ない制作者システムを選択することが可能となる、項56〜項66に記載の方法。
項68:当該複数の制作者システムに含まれる当該制作者システムを選択することは、第2の一組の制作者システムよりも負荷が低い第1の一組の制作者システムのうちの1つを選択することをさらに含む、項56〜項67に記載の方法。
項69:当該選択された制作者システムは、最低負荷とは関連しておらず、それによって負荷変動の発生頻度を減少させる、項68に記載の方法。
項70:サービスへのアクセスを提供する複数の制作者システムから制作者システムを選択するシステムであって、
複数のリースエージェントのうちの第1のリースエージェントであって、ステータスモジュール及びリースシステムを実装するように構成された1つ以上のプロセッサを含む第1のリースエージェントを含み、
当該ステータスモジュールは、
複数の制作者システムであって、当該複数の制作者システムに含まれる各制作者システムが選択重みに関連付けられている複数の制作者システムのうちの第1の制作者システムのステータス情報を受信し、
当該受信したステータス情報に少なくとも部分的に基づき、当該第1の制作者システムに関連付けられた当該選択重みを変更するように構成され、
当該リースシステムは、
当該複数の制作者システムの1つにアクセスすることを求める要求を受信し、
当該要求に対してサービスを提供する当該複数の制作者システムの各制作者システムに関連付けられた対応する選択重みに少なくとも部分的に基づき、当該第1の制作者システムを含む当該複数の制作者システムから制作者システムを選択するように構成されている、
システム。
項71:当該ステータス情報は、当該リースシステムによって当該第1のリースエージェントにて受信され、当該リースシステムは、当該ステータス情報を当該ステータスモジュールに提供するようにさらに構成されている、項70に記載のシステム。
項72:当該ステータスモジュールは、当該第1の制作者システムが当該第1のリースエージェントに割り当てられているかどうかを判定するようにさらに構成されており、
当該第1の制作者が当該第1のリースエージェントに割り当てられていないと判定したことに応答して、当該ステータスモジュールは、
当該第1の制作者に割り当てられている第2のリースエージェントを特定し、
当該受信されたステータス情報を当該第2のリースエージェントに提供するようにさらに構成されている、項70〜項71に記載のシステム。
項73:当該ステータスモジュールは、
当該変更後の選択重みが削除閾値を満たしているかどうかを判定し、
当該変更後の選択重みが当該削除閾値を満たしていることに応答して、当該複数の制作者システムから当該第1の制作者システムを分離するようにさらに構成されている、項70〜項72に記載のシステム。
項74:当該第1のリースエージェントは、減少閾値を満たしている当該複数の制作者システムからいくつかの制作者システムが分離されたのに応答して、当該複数の制作者システムを当該複数のリースエージェント間に再分配するように構成された分配システムをさらに含む、項73に記載のシステム。
項75:当該リースシステムは、当該複数の制作者システムの1つにアクセスすることを求める当該要求を提供した消費者システムに当該制作者システムの識別情報を提供するようにさらに構成されている、項70〜項74に記載のシステム。
項76:当該選択された制作者システムは当該第1の制作者システムを含む、項70〜項75に記載のシステム。
項77:非一時的な物理的コンピュータ記憶装置であって、1つ以上のプロセッサによって実行されると、少なくとも、
複数の制作者システムのうちの第1の制作者システムのステータス情報を第1のリースエージェントにて受信したことに応答して、当該第1の制作者が、第1の制作者システムのサブセットであって、当該第1のリースエージェントに関連付けられた第1の制作者システムのサブセットのメンバーであるかどうかを判定することであって、当該複数の制作者システムに含まれる各制作者システムが選択重みに関連付けられ、当該複数の制作者システムはいくつかの制作者システムのサブセットに分割されている、判定すること、
当該第1の制作者システムが当該第1の制作者システムのサブセットのメンバーであると判定したことに応答して、当該第1の制作者システムに関連付けられた当該選択重みを変更すること、及び
制作者システムへのアクセスを求める要求を受信したことに応答して、当該要求の提供者にサービスを提供する当該制作者システムのサブセットに含まれる当該制作者システムに関連付けられた当該選択重みに少なくとも部分的に基づき、当該第1の制作者システムのサブセットから第2の制作者システムを選択すること、
により、サービスへのアクセスを提供する当該複数の制作者システムから制作者システムを選択するようにコンピューティングシステムに命令するコンピュータ実行可能な命令を含む、非一時的な物理的コンピュータ記憶装置。
項78:当該第2の制作者システムと当該第1の制作者システムとが同一である、項77に記載の非一時的な物理的コンピュータ記憶装置。
項79:当該第1の制作者システムが当該第1の制作者システムのサブセットのメンバーではないと判定したことに応答して、当該方法が、
当該第1の制作者システムを含む第2の制作者システムのサブセットを特定すること、
当該第2の制作者システムのサブセットに関連付けられた第2のリースエージェントを特定すること、及び
当該ステータス情報を当該第2のリースエージェントに提供すること、をさらに含む、項77〜項78に記載の非一時的な物理的コンピュータ記憶装置。
項80:オーバーレイネットワーク内の制作者仮想マシンによって提供されるサービスへのアクセス方法であって、
1つ以上の消費者仮想マシンをホストするように構成された、1つ以上のプロセッサを含む消費者システムホストであって、当該消費者仮想マシンの少なくとも1つが第1のオーバーレイネットワークに関連付けられている消費者システムホストにより、
制作者システムのサービスへのアクセスを求める要求を当該消費者システムホストによってホストされた消費者仮想マシンから受信することであって、当該要求は、当該消費者仮想マシンに関連付けられた消費者仮想マシンアドレス、及び宛先仮想アドレスを含む内部ヘッダを含む、受信すること、
当該消費者仮想マシンに関連付けられたリースプールであって、当該消費者仮想マシンのためにリースされる一組のリース用制作者仮想マシンを含むリースプールにアクセスすること、
当該サービスにアクセスするためのリース用制作者仮想マシンを当該リースプールから選択すること、
当該内部ヘッダの当該宛先仮想アドレスを、当該リース用制作者仮想マシンに関連付けられた制作者仮想マシンアドレスに置き換えること、
当該リース用制作者仮想マシンに関連付けられた制作者システムホストであって、1つ以上の制作者仮想マシンをホストするように構成され、当該制作者仮想マシンの少なくとも1つが、当該第1のオーバーレイネットワークに関連付けられた制作者システムホストを特定すること、
当該制作者システムホストに関連付けられた制作者システムホストアドレス及び当該消費者システムホストに関連付けられた消費者システムホストアドレスを含む外部ヘッダを用いて当該要求をカプセル化すること、並びに
ネットワークを介して当該制作者システムホストに当該要求を提供することにより、当該制作者システムホストが当該要求を処理することを可能にすること、
を含む方法。
項81:当該リース用制作者仮想マシンを選択することは、
少なくとも1つの使用可能なリース用制作者仮想マシンが当該リースプールに含まれているどうかを判定すること、及び
少なくとも1つの使用可能なリース用制作者仮想マシンが当該リースプールに含まれていると判定したことに応答して、当該使用可能なリース用制作者仮想マシンの1つを選択し、当該選択された使用可能なリース用制作者仮想マシンを当該リースプールから削除することを含む、項80に記載の方法。
項82:使用可能なリース用制作者仮想マシンが当該リースプールに含まれていないと判定したことに応答して、当該方法が、
当該消費者仮想マシンに代わり、当該第1のオーバーレイネットワークに含まれる一組の制作者仮想マシンのリースを取得すること、
当該一組のリース用制作者仮想マシンに含まれる各制作者仮想マシンとの接続を開始すること、及び
正常に確立された各接続について、対応する当該制作者仮想マシンを当該リースプールに追加すること、をさらに含み、
当該リース用制作者仮想マシンを選択することは、当該リースプールに追加された当該制作者仮想マシンの1つを選択し、当該選択された制作者仮想マシンを当該リースプールから削除すること、をさらに含む、項81に記載の方法。
項83:当該一組の制作者仮想マシンのリースを取得することは、
当該第1のオーバーレイネットワークに含まれる制作者仮想マシンのリースを取得することを求める要求を当該消費者仮想マシンの代わりに生成すること、
制作者仮想マシンの当該リースを取得することを求める当該要求を一組のリースエージェントに提供すること、及び
当該一組のリースエージェントに含まれる当該リースエージェントの少なくとも一部に対し、制作者仮想マシンのリース情報を受信することによって当該制作者仮想マシンとの接続を開始することを可能にすることを含む、項82に記載の方法。
項84:当該一組のリースエージェントは、当該ネットワーク内のリースエージェントのサブセットを含む、項83に記載の方法。
項85:サービス要求に対する当該制作者システムホストからの応答を受信すること、
当該応答の外部ヘッダを除去することによって当該サービス応答を非カプセル化して、当該応答の内部ヘッダにアクセスすること、
当該応答の当該内部ヘッダに基づき、当該消費者システムホストによってホストされた当該消費者仮想マシンの1つである受信先消費者仮想マシンを決定すること、及び
当該非カプセル化されたサービス応答を当該受信先消費者仮想マシンに提供すること、をさらに含む、項80〜項84に記載の方法。
項86:当該受信先消費者仮想マシンと当該消費者仮想マシンとが同一である、項85に記載の方法。
項87:当該応答の当該内部ヘッダに基づき、当該応答に関連する送信元制作者仮想マシンに関連付けられた送信元仮想アドレスを特定すること、及び
当該送信元制作者仮想マシンに関連付けられた当該内部ヘッダに含まれるアドレスを、当該送信元仮想アドレスに置き換えること、をさらに含む、項85〜項86に記載の方法。
項88:当該送信元制作者仮想マシンは、当該選択されたリース用制作者仮想マシンに対応し、当該送信元仮想アドレスは、当該宛先仮想アドレスに対応し、当該受信先消費者仮想マシンは、当該消費者仮想マシンに対応する、項87に記載の方法。
項89:当該消費者仮想マシンの少なくとも1つは、第2のオーバーレイネットワークに関連付けられている、項80〜項88に記載の方法。
項90:当該制作者仮想マシンの少なくとも1つは、第2のオーバーレイネットワークに関連付けられている、項80〜項89に記載の方法。
項91:当該サービスへのアクセスを求める第2の要求を受信すること、
当該リース用制作者仮想マシンの負荷が負荷閾値を満たしているかどうかを判定すること、並びに、
当該リース用制作者仮想マシンの当該負荷が当該負荷閾値を満たしていると判定したことに応答して、
当該サービスにアクセスするための第2のリース用制作者仮想マシンを当該リースプールから選択すること、及び
当該第2のリース用制作者仮想マシンをホストする第2の制作者システムホストに当該第2の要求を提供すること、をさらに含む、項80〜項90に記載の方法。
項92:当該リース用制作者仮想マシンの当該負荷が当該負荷閾値を満たしていると判定したことに応答して、当該方法が、当該リース用制作者仮想マシンとの接続を終了させることをさらに含む、項91に記載の方法。
項93:オーバーレイネットワーク内の制作者によって提供されるサービスにアクセスするためのシステムであって、
1つ以上のプロセッサを含み、1つ以上の消費者をホストするように構成された消費者システムホストであって、
制作者から制作者システムホストへのマッピングを記憶するように構成されたマッピングリポジトリ、及び
オーバーレイネットワークプロキシであって、
当該消費者システムホストによってホストされた消費者から、制作者のサービスへのアクセスを求める要求を受信し、
当該消費者のためにリースされる、当該サービスにアクセスするためのリース用制作者を選択し、
当該マッピングリポジトリにアクセスして、当該リース用制作者に関連付けられた制作者システムホストであって、1つ以上の制作者をホストするように構成された制作者システムホストを特定し、
当該制作者システムホストに当該要求を送信するように構成されたオーバーレイネットワークプロキシ、を含む消費者システムホスト、
を含むシステム。
項94:当該マッピングリポジトリは、当該消費者に関連付けられたリースプールであって、当該消費者のためにリースされる一組のリース用制作者を含むリースプールを記憶するようにさらに構成されており、
当該オーバーレイネットワークプロキシは、
少なくとも1つの使用可能なリース用制作者が当該リースプールに含まれているどうかを判定し、
少なくとも1つの使用可能なリース用制作者が当該リースプールに含まれていると判定したことに応答して、当該サービスにアクセスするための当該リース用制作者を当該使用可能なリース用制作者から選択するようにさらに構成されている、項93に記載のシステム。
項95:少なくとも1つの使用可能なリース用制作者が当該リースプールに含まれていないと判定したことに応答して、当該オーバーレイネットワークプロキシは、
制作者のリースを取得することを求める要求を当該消費者に代わって生成し、
当該制作者のリースを取得することを求める当該要求を一組のリースエージェントに提供し、
当該一組のリースエージェントに含まれる当該リースエージェントの少なくとも一部のために、制作者のリース情報を受信するようにさらに構成されている、項94に記載のシステム。
項96:当該マッピングリポジトリは、当該消費者に関連付けられた当該リースプール内に当該リース情報を記憶するようにさらに構成されている、項95に記載のシステム。
項97:当該オーバーレイネットワークプロキシは、
当該要求に対する当該制作者ホストシステムからの応答を受信し、
当該応答の内部ヘッダに基づいて当該消費者を含む受信先消費者を決定し、
当該消費者に当該応答を提供するようにさらに構成されている、項93〜項95に記載のシステム。
項98:当該オーバーレイネットワークプロキシは、
当該リース用制作者に関連付けられた送信元仮想アドレスを特定し、
当該消費者に当該応答を提供する前に、当該リース用制作者に関連付けられた当該内部ヘッダに含まれるアドレスを当該送信元仮想アドレスに置き換えるようにさらに構成されている、項97に記載のシステム。
項99:当該オーバーレイネットワークプロキシは、当該制作者システムホストに関連付けられた制作者システムホストアドレス及び当該消費者システムホストに関連付けられた消費者システムホストアドレスを含む外部ヘッダを用いて当該要求をカプセル化するようにさらに構成されている、項93〜項97に記載のシステム。
項100:非一時的な物理的コンピュータ記憶装置であって、1つ以上のプロセッサによって実行されると、少なくとも、
宛先仮想アドレスを含み、制作者システムのサービスへのアクセスを求める要求を、消費者システムホストによってホストされた消費者仮想マシンから受信したことに応答して、当該消費者仮想マシンに関連付けられたリースプールであって、当該消費者仮想マシンのためにリースされる制作者仮想マシンに対する接続情報を含むリースプールから、当該サービスにアクセスするためのリース用制作者仮想マシンを選択すること、
当該要求のヘッダ内の当該宛先仮想アドレスを、当該リース用制作者仮想マシンに関連付けられた制作者仮想マシンアドレスに置き換えること、
当該リース用制作者仮想マシンに関連付けられた制作者システムホストを決定すること、及び
当該制作者システムホストに送信すべき当該要求を当該リース用制作者仮想マシンに提供することにより、当該リース用制作者仮想マシンが、当該サービスへのアクセスを求める当該要求を処理することを可能にすること、
により、オーバーレイネットワーク内の制作者仮想マシンによって提供されるサービスにアクセスするようにコンピューティングシステムに命令するコンピュータ実行可能な命令を含む、非一時的な物理的コンピュータ記憶装置。
項101:当該消費者仮想マシンに関連付けられた当該リースプールから当該リース用制作者仮想マシンを選択することは、
当該消費者仮想マシンによって現在使用されていない少なくとも1つのリース用制作者仮想マシンに対する接続情報が当該リースプールに含まれているどうかを判定すること、並びに
当該消費者仮想マシンによって現在使用されていない少なくとも1つのリース用制作者仮想マシンが当該リースプールに含まれていないと判定したことに応答して、当該コンピュータ実行可能な命令が、
当該消費者仮想マシンに代わり、オーバーレイネットワークに含まれる一組の制作者仮想マシンのリースを取得すること、
当該一組のリース用制作者仮想マシンに含まれる各制作者仮想マシンとの接続を開始すること、及び
正常に確立された各接続について、対応する当該制作者仮想マシンに対する接続情報を当該リースプールに追加することを当該コンピューティングシステムに命令すること、をさらに含む、項100に記載の非一時的な物理的コンピュータ記憶装置。
項102:当該消費者仮想マシンに関連付けられた当該リースプールから当該リース用制作者仮想マシンを選択することは、当該リースプールに接続情報が追加された当該制作者仮想マシンの1つを選択することをさらに含む、項101に記載の非一時的な物理的コンピュータ記憶装置。
用語
本開示全体を通じて、いくつかのコンピューティングシステムについて説明してきた。これらのシステムに関する記述は、本開示の教示または適用性を限定することを意図するものではない。例えば、本明細書で説明されたユーザシステムとしては、一般に、いくつか例を挙げると、デスクトップ機、ラップトップ機、ビデオゲームプラットフォーム、テレビ用セットトップボックス、テレビ(例えば、インターネットTV)、コンピュータ化された機器、及び無線モバイル端末(例えば、スマートフォン、PDA、タブレットなど)などの任意の1つ以上のコンピューティング装置を挙げることができる。さらに、本明細書で説明されたユーザシステムは、異なるアプリケーションを含む、あるいは異なるように構成される各種の装置とすることが可能である。加えて、本明細書で説明されたユーザシステムは、任意の種類のオペレーティングシステム(operating system:OS)を含むことができる。例えば、本明細書で説明されたモバイルコンピューティングシステムは、Android(登録商標)OS、Windows(登録商標)OS、Mac(登録商標)OS、LinuxまたはUnixベースのOSなどを実装することができる。
さらに、例示したシステムの様々な構成要素の処理を、複数のマシン、ネットワーク及び他のコンピューティングリソースにわたって分散させることができる。加えて、システムの2つ以上の構成要素を、より少ない構成要素に統合することができる。例えば、リースエージェント102の一部として例示された様々なシステムを、複数のコンピューティングシステムにわたって分散させることができ、または、1つのコンピューティングシステムに統合することができる。さらに、例示したシステムの様々な構成要素を、専用のコンピュータハードウェア内ではなく、1つ以上の仮想マシン内に実装することができる。同様に、図示したデータリポジトリは、例えば、ストレージエリアネットワークまたは他の分散ストレージシステムなどの、物理的及び/または論理的なデータ記憶装置を表すことができる。さらに、いくつかの実施形態では、図示した構成要素間の接続は、ハードウェア間の実際の接続ではなく、可能なデータフロー経路を表す。可能な接続についていくつかの実施例を示したが、図示した構成要素のサブセットはいずれも、様々な実装における他の何らかの構成要素のサブセットと通信することができる。
実施形態に応じて、本明細書で説明された任意のアルゴリズム、方法またはプロセスのある行為、イベントまたは機能を、異なる順序で実行することができ、追加、併合または完全に省略することができる(例えば、説明した行為またはイベントの全てが、アルゴリズムを実施するために必要となるわけではない)。さらに、ある実施形態では、行為またはイベントを、例えば、マルチスレッド処理、割り込み処理、もしくは複数のプロセッサもしくはプロセッサコアによって、または他の並列アーキテクチャ上で、シーケンシャルではなく同時に実行することができる。
例示した様々なシステムのそれぞれは、本明細書で説明された様々な機能を実行するようにプログラムされ、またはそれらの機能を実行するように構成されたコンピューティングシステムとして実装されてもよい。このコンピューティングシステムは、説明された機能を実行するためにネットワークを介して通信及び連携する複数の別個のコンピュータまたはコンピューティング装置(例えば、物理サーバ、ワークステーション、記憶装置アレイなど)を含んでもよい。このような各コンピューティング装置は、通常、メモリまたは他の非一時的コンピュータ可読記憶媒体に記憶されたプログラム命令またはモジュールを実行するプロセッサ(または複数のプロセッサ)を含む。本明細書に開示された様々な機能は、かかるプログラム命令を用いて具現化され得るが、開示された機能の一部または全ては、その代わりに、コンピュータシステムの特定用途向け回路(例えば、ASICまたはFPGA)に実装されてもよい。コンピューティングシステムが複数のコンピューティング装置を含む場合、これらの装置は、同じ場所に配置してもよいが、必ずしもそのようにする必要はない。開示された方法及びタスクの結果は、ソリッドステートメモリチップ及び/または磁気ディスクなどの物理的記憶装置を異なる状態に変換することによって永続的に記憶され得る。説明された各プロセスは、関連するサーバコードを用いてプログラムされた1つ以上の物理サーバなどの、1つ以上のコンピューティング装置によって実装されてもよい。
本明細書で使用される条件付きの文言、とりわけ、「できる(can)」、「する場合がある(might)」、「し得る(may)」、「例えば(e.g.)」などは、別段の定めのない限り、または、使用された文脈で解釈されない限り、一般に、ある特徴、要素及び/または状態を、ある実施形態では含むが、他の実施形態では含まないことを伝えるように意図されるものである。従って、このような条件付きの文言は、一般に、特徴、要素及び/または状態が1つ以上の実施形態に全て必要であることを示すように意図されるものでもなく、これらの特徴、要素及び/または状態が含まれているかどうか、または、任意の特定の実施形態において実行されるものであるかどうかを、著者の指摘もしくは示唆の有無に関わらず、決定する論理を1つ以上の実施形態が必ず含むことを示すように意図されるものでもない。用語「備える(comprising)」「含む(including)」「有する(having)」などは同義語であり、包括的に、制限されない様式で使用され、追加の要素、特徴、行為、操作などを除外しない。また、用語「または(or)」は、包括的な意味で使用される(すなわち、排他的な意味では使用されない)。従って、例えば、リストにある要素を接続するのに使用されるとき、用語「または(or)」は、そのリスト内の要素の1つ、一部または全てを意味する。加えて、冠詞「a」及び「an」は、特に指示がない限り、「1つ以上」または「少なくとも1つ」を意味するように解釈されるべきである。
語句「X、Y及びZのうちの少なくとも1つ」などの接続語は、別段の定めのない限り、一般に、項目、用語などがX、YまたはZのいずれかであり得ることを伝えるために、使用される文脈で通常は解釈される。従って、かかる接続語は、一般に、ある実施形態が、X、Y及びZのそれぞれが存在するために、Xの少なくとも1つ、Yの少なくとも1つ及びZの少なくとも1つを必要とすることを示すように意図されるものではない。
上記の詳細な説明では、様々な実施形態に適用される新規な特徴を図示し、説明し、指摘してきたが、本開示の思想から逸脱することなく、例示した装置またはアルゴリズムの形態及び詳細において様々な省略、置換及び変更をなすことができることが理解されよう。従って、前述の説明においては、いずれかの特定の特徴、特性、ステップ、モジュールまたはブロックが必要または不可欠であることを示すことは何ら意図されていない。理解されるであろうが、本明細書で説明されたプロセスは、ある特徴を他の特徴とは別に使用または実施できるため、本明細書に記載された特徴及び利点の全てを提供しない形態内で具現化することができる。保護の範囲は、前述の説明によってではなく、添付された特許請求の範囲によって定められる。特許請求の範囲の意味及び均等範囲に属する全ての変更は、それらの範囲内に包含される。

Claims (15)

  1. オーバーレイネットワーク内の制作者によって提供されるサービスにアクセスするためのシステムであって、
    1つ以上のプロセッサを含み、1つ以上の消費者をホストするように構成された消費者システムホストであって、
    制作者から制作者システムホストへのマッピングを記憶するように構成されたマッピングリポジトリ、及び
    オーバーレイネットワークプロキシであって、
    前記消費者システムホストによってホストされた消費者から、制作者のサービスへのアクセスを求める要求を受信し、
    前記消費者のためにリースされる、前記サービスにアクセスするためのリース用制作者を選択し、
    前記マッピングリポジトリにアクセスして、前記リース用制作者に関連付けられた制作者システムホストであって、1つ以上の制作者をホストするように構成された制作者システムホストを特定し、
    前記制作者システムホストに前記要求を送信するように構成されたオーバーレイネットワークプロキシを含む消費者システムホスト、
    を含むシステム。
  2. 前記マッピングリポジトリは、前記消費者に関連付けられたリースプールであって、前記消費者のためにリースされる一組のリース用制作者を含むリースプールを記憶するようにさらに構成されており、
    前記オーバーレイネットワークプロキシは、
    少なくとも1つの使用可能なリース用制作者が前記リースプールに含まれているどうかを判定し、
    少なくとも1つの使用可能なリース用制作者が前記リースプールに含まれていると判定したことに応答して、前記サービスにアクセスするための前記リース用制作者を前記使用可能なリース用制作者から選択するようにさらに構成されており、
    少なくとも1つの使用可能なリース用制作者が前記リースプールに含まれていないと判定したことに応答して、前記オーバーレイネットワークプロキシは、
    制作者のリースを取得することを求める要求を前記消費者に代わって生成し、
    前記制作者のリースを取得することを求める前記要求を一組のリースエージェントに提供し、
    前記一組のリースエージェントに含まれる前記リースエージェントの少なくとも一部のために、制作者のリース情報を受信するようにさらに構成されている、請求項1に記載のシステム。
  3. 前記マッピングリポジトリは、前記消費者に関連付けられた前記リースプール内に前記リース情報を記憶するようにさらに構成されている、請求項2に記載のシステム。
  4. 前記オーバーレイネットワークプロキシは、
    前記要求に対する前記制作者ホストシステムからの応答を受信し、
    前記応答の内部ヘッダに基づいて前記消費者を含む受信先消費者を決定し、
    前記消費者に前記応答を提供し、
    前記リース用制作者に関連付けられた送信元仮想アドレスを特定し、
    前記消費者に前記応答を提供する前に、前記リース用制作者に関連付けられた前記内部ヘッダに含まれるアドレスを前記送信元仮想アドレスに置き換えるようにさらに構成されている、請求項1に記載のシステム。
  5. 前記オーバーレイネットワークプロキシは、前記制作者システムホストに関連付けられた制作者システムホストアドレス及び前記消費者システムホストに関連付けられた消費者システムホストアドレスを含む外部ヘッダを用いて前記要求をカプセル化するようにさらに構成されている、請求項1に記載のシステム。
  6. 非一時的な物理的コンピュータ記憶装置であって、1つ以上のプロセッサによって実行されると、少なくとも、
    宛先仮想アドレスを含み、制作者システムのサービスへのアクセスを求める要求を、消費者システムホストによってホストされた消費者仮想マシンから受信したことに応答して、前記消費者仮想マシンに関連付けられたリースプールであって、前記消費者仮想マシンのためにリースされる制作者仮想マシンに対する接続情報を含むリースプールから、前記サービスにアクセスするためのリース用制作者仮想マシンを選択すること、
    前記要求のヘッダ内の前記宛先仮想アドレスを、前記リース用制作者仮想マシンに関連付けられた制作者仮想マシンアドレスに置き換えること、
    前記リース用制作者仮想マシンに関連付けられた制作者システムホストを決定すること、及び
    前記制作者システムホストに送信すべき前記要求を前記リース用制作者仮想マシンに提供することにより、前記リース用制作者仮想マシンが、前記サービスへのアクセスを求める前記要求を処理することを可能にすること、
    により、オーバーレイネットワーク内の制作者仮想マシンによって提供されるサービスにアクセスするようにコンピューティングシステムに命令するコンピュータ実行可能な命令を含む、非一時的な物理的コンピュータ記憶装置。
  7. 前記消費者仮想マシンに関連付けられた前記リースプールから前記リース用制作者仮想マシンを選択することは、
    前記消費者仮想マシンによって現在使用されていない少なくとも1つのリース用制作者仮想マシンに対する接続情報が前記リースプールに含まれているどうかを判定することを含み、
    前記消費者仮想マシンによって現在使用されていない少なくとも1つのリース用制作者仮想マシンが前記リースプールに含まれていないと判定したことに応答して、前記コンピュータ実行可能な命令は、
    前記消費者仮想マシンに代わり、オーバーレイネットワークに含まれる一組の制作者仮想マシンのリースを取得すること、
    前記一組のリース用制作者仮想マシンに含まれる各制作者仮想マシンとの接続を開始すること、及び
    正常に確立された各接続について、対応する前記制作者仮想マシンに対する接続情報を前記リースプールに追加することを前記コンピューティングシステムに命令すること、をさらに含む、請求項6に記載の非一時的な物理的コンピュータ記憶装置。
  8. オーバーレイネットワーク内の制作者仮想マシンによって提供されるサービスへのアクセス方法であって、
    1つ以上の消費者仮想マシンをホストするように構成された、1つ以上のプロセッサを含む消費者システムホストであって、前記消費者仮想マシンの少なくとも1つが第1のオーバーレイネットワークに関連付けられている消費者システムホストにより、
    制作者システムのサービスへのアクセスを求める要求を、前記消費者システムホストによってホストされた消費者仮想マシンから受信することであって、前記要求は、前記消費者仮想マシンに関連付けられた消費者仮想マシンアドレス、及び宛先仮想アドレスを含む内部ヘッダを含む、受信すること、
    前記消費者仮想マシンに関連付けられたリースプールであって、前記消費者仮想マシンのためにリースされる一組のリース用制作者仮想マシンを含むリースプールにアクセスすること、
    前記サービスにアクセスするためのリース用制作者仮想マシンを前記リースプールから選択すること、
    前記内部ヘッダの前記宛先仮想アドレスを、前記リース用制作者仮想マシンに関連付けられた制作者仮想マシンアドレスに置き換えること、
    前記リース用制作者仮想マシンに関連付けられた制作者システムホストであって、1つ以上の制作者仮想マシンをホストするように構成され、前記制作者仮想マシンの少なくとも1つが、前記第1のオーバーレイネットワークに関連付けられた制作者システムホストを特定すること、
    前記制作者システムホストに関連付けられた制作者システムホストアドレス及び前記消費者システムホストに関連付けられた消費者システムホストアドレスを含む外部ヘッダを用いて前記要求をカプセル化すること、並びに
    ネットワークを介して前記制作者システムホストに前記要求を提供することにより、前記制作者システムホストが前記要求を処理することを可能にすること、
    を含む方法。
  9. 前記リース用制作者仮想マシンを選択することは、
    少なくとも1つの使用可能なリース用制作者仮想マシンが前記リースプールに含まれているどうかを判定すること、及び
    少なくとも1つの使用可能なリース用制作者仮想マシンが前記リースプールに含まれていると判定したことに応答して、前記使用可能なリース用制作者仮想マシンの1つを選択し、前記選択された使用可能なリース用制作者仮想マシンを前記リースプールから削除すること、を含み、
    使用可能なリース用制作者仮想マシンが前記リースプールに含まれていないと判定したことに応答して、前記方法は、
    前記消費者仮想マシンに代わり、前記第1のオーバーレイネットワークに含まれる一組の制作者仮想マシンのリースを取得すること、
    前記一組のリース用制作者仮想マシンに含まれる各制作者仮想マシンとの接続を開始すること、及び
    正常に確立された各接続について、対応する前記制作者仮想マシンを前記リースプールに追加すること、をさらに含み、
    前記リース用制作者仮想マシンを選択することは、前記リースプールに追加された前記制作者仮想マシンの1つを選択し、前記選択された制作者仮想マシンを前記リースプールから削除することをさらに含み、
    前記一組の制作者仮想マシンのリースを取得することは、
    前記第1のオーバーレイネットワークに含まれる制作者仮想マシンのリースを取得することを求める要求を前記消費者仮想マシンの代わりに生成すること、
    制作者仮想マシンの前記リースを取得することを求める前記要求を一組のリースエージェントに提供すること、及び
    前記一組のリースエージェントに含まれる前記リースエージェントの少なくとも一部に対し、制作者仮想マシンのリース情報を受信することによって前記制作者仮想マシンとの接続を開始することを可能にすることを含む、請求項8に記載の方法。
  10. サービス要求に対する前記制作者システムホストからの応答を受信すること、
    前記応答の外部ヘッダを除去することによって前記サービス応答を非カプセル化して、前記応答の内部ヘッダにアクセスすること、
    前記応答の前記内部ヘッダに基づき、前記消費者システムホストによってホストされた前記消費者仮想マシンの1つである受信先消費者仮想マシンを決定すること、
    前記非カプセル化されたサービス応答を前記受信先消費者仮想マシンに提供すること、
    前記応答の前記内部ヘッダに基づき、前記応答に関連する送信元制作者仮想マシンに関連付けられた送信元仮想アドレスを特定すること、及び
    前記送信元制作者仮想マシンに関連付けられた前記内部ヘッダに含まれるアドレスを、前記送信元仮想アドレスに置き換えること、をさらに含む、請求項8に記載の方法。
  11. 前記送信元制作者仮想マシンは、前記選択されたリース用制作者仮想マシンに対応し、前記送信元仮想アドレスは、前記宛先仮想アドレスに対応し、前記受信先消費者仮想マシンは、前記消費者仮想マシンに対応する、請求項10に記載の方法。
  12. 前記消費者仮想マシンの少なくとも1つは、第2のオーバーレイネットワークに関連付けられている、請求項8に記載の方法。
  13. 前記制作者仮想マシンの少なくとも1つは、第2のオーバーレイネットワークに関連付けられている、請求項8に記載の方法。
  14. 前記サービスへのアクセスを求める第2の要求を受信すること、
    前記リース用制作者仮想マシンの負荷が負荷閾値を満たしているかどうかを判定すること、並びに
    前記リース用制作者仮想マシンの前記負荷が前記負荷閾値を満たしていると判定したことに応答して、
    前記サービスにアクセスするための第2のリース用制作者仮想マシンを前記リースプールから選択すること、及び
    前記第2のリース用制作者仮想マシンをホストする第2の制作者システムホストに前記第2の要求を提供すること、をさらに含む、請求項8に記載の方法。
  15. 前記リース用制作者仮想マシンの前記負荷が前記負荷閾値を満たしていると判定したことに応答して、前記方法が、前記リース用制作者仮想マシンとの接続を終了させること、をさらに含む、請求項14に記載の方法。
JP2016523862A 2013-06-26 2014-06-24 リースエージェントシステム間での制作者システムの分配 Active JP6243528B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US13/927,929 2013-06-26
US13/927,892 US9350801B2 (en) 2013-06-26 2013-06-26 Managing client access to a plurality of computing systems
US13/927,929 US9369518B2 (en) 2013-06-26 2013-06-26 Producer system partitioning among leasing agent systems
US13/927,892 2013-06-26
US13/927,933 US9843631B2 (en) 2013-06-26 2013-06-26 Producer system selection
US13/927,933 2013-06-26
US13/927,995 US9780993B2 (en) 2013-06-26 2013-06-26 Producer computing system leasing on behalf of consumer computing system
US13/927,995 2013-06-26
PCT/US2014/043946 WO2014210058A2 (en) 2013-06-26 2014-06-24 Producer system partitioning among leasing agent systems

Publications (2)

Publication Number Publication Date
JP2016527780A true JP2016527780A (ja) 2016-09-08
JP6243528B2 JP6243528B2 (ja) 2017-12-06

Family

ID=51212983

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2016523862A Active JP6243528B2 (ja) 2013-06-26 2014-06-24 リースエージェントシステム間での制作者システムの分配
JP2016523859A Active JP6165978B2 (ja) 2013-06-26 2014-06-24 リースエージェントシステム間での制作者システムの分配
JP2016521906A Active JP6200080B2 (ja) 2013-06-26 2014-06-24 複数のコンピューティングシステムへのクライアントアクセスの管理

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2016523859A Active JP6165978B2 (ja) 2013-06-26 2014-06-24 リースエージェントシステム間での制作者システムの分配
JP2016521906A Active JP6200080B2 (ja) 2013-06-26 2014-06-24 複数のコンピューティングシステムへのクライアントアクセスの管理

Country Status (5)

Country Link
EP (3) EP3014441A2 (ja)
JP (3) JP6243528B2 (ja)
CN (3) CN105593820B (ja)
CA (3) CA2916265C (ja)
WO (3) WO2014210053A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024069846A1 (ja) * 2022-09-29 2024-04-04 楽天モバイル株式会社 仮想化ネットワーク機能のためのリソース割り当ての動的な変更

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9780993B2 (en) 2013-06-26 2017-10-03 Amazon Technologies, Inc. Producer computing system leasing on behalf of consumer computing system
US9350801B2 (en) 2013-06-26 2016-05-24 Amazon Technologies, Inc. Managing client access to a plurality of computing systems
US9843631B2 (en) 2013-06-26 2017-12-12 Amazon Technologies, Inc. Producer system selection
US9369518B2 (en) 2013-06-26 2016-06-14 Amazon Technologies, Inc. Producer system partitioning among leasing agent systems
US10592064B2 (en) 2013-09-17 2020-03-17 Amazon Technologies, Inc. Approaches for three-dimensional object display used in content navigation
CN111386542B (zh) * 2017-11-27 2022-03-04 北京嘀嘀无限科技发展有限公司 用于分配按需服务请求的系统和方法
US20230071047A1 (en) * 2021-09-08 2023-03-09 Microstrategy Incorporated Systems and methods for virtual machine resource distribution

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013026049A1 (en) * 2011-08-17 2013-02-21 Nicira, Inc. Distributed logical l3 routing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9508283D0 (en) * 1995-02-07 1995-06-14 British Telecomm Information services provision and management
US6965974B1 (en) * 1997-11-14 2005-11-15 Agere Systems Inc. Dynamic partitioning of memory banks among multiple agents
JP3711866B2 (ja) * 2000-04-10 2005-11-02 日本電気株式会社 プラグアンドプレイ機能を有するフレームワークおよびその再構成方法
JP2006235837A (ja) * 2005-02-23 2006-09-07 Nec Corp 負荷分散システム、負荷分散装置管理サーバ、負荷分散装置の切り替え方法及びプログラム
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
US8635349B2 (en) * 2007-02-20 2014-01-21 Oracle America, Inc. Method and system for managing computing resources using an electronic broker agent
US9106540B2 (en) * 2009-03-30 2015-08-11 Amazon Technologies, Inc. Providing logical networking functionality for managed computer networks
US8615764B2 (en) * 2010-03-31 2013-12-24 International Business Machines Corporation Dynamic system scheduling
US8364819B2 (en) * 2010-05-28 2013-01-29 Red Hat, Inc. Systems and methods for cross-vendor mapping service in cloud networks
JP2012234236A (ja) * 2011-04-28 2012-11-29 Hitachi Ltd 負荷分散システム
US9137304B2 (en) * 2011-05-25 2015-09-15 Alcatel Lucent Method and apparatus for achieving data security in a distributed cloud computing environment
CN102955456A (zh) * 2011-08-26 2013-03-06 北京安翔动力科技有限公司 一种基于总线通讯的小型无人飞行器控制系统
CN103049245B (zh) * 2012-10-25 2015-12-02 浪潮电子信息产业股份有限公司 一种基于中央处理器cpu多核平台的软件性能优化方法
CN103870580A (zh) * 2014-03-24 2014-06-18 深圳市众鸿科技股份有限公司 一种基于对象的动态属性云管理平台及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013026049A1 (en) * 2011-08-17 2013-02-21 Nicira, Inc. Distributed logical l3 routing
JP2014526225A (ja) * 2011-08-17 2014-10-02 ニシラ, インコーポレイテッド 論理l3ルーティング

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024069846A1 (ja) * 2022-09-29 2024-04-04 楽天モバイル株式会社 仮想化ネットワーク機能のためのリソース割り当ての動的な変更

Also Published As

Publication number Publication date
CA2916258A1 (en) 2014-12-31
JP2016526723A (ja) 2016-09-05
CA2916258C (en) 2019-01-29
JP6200080B2 (ja) 2017-09-20
CN105612539B (zh) 2020-05-05
CA2916261A1 (en) 2014-12-31
CN105593820A (zh) 2016-05-18
CN105556472B (zh) 2019-07-26
WO2014210054A2 (en) 2014-12-31
WO2014210054A3 (en) 2015-02-26
WO2014210053A2 (en) 2014-12-31
JP6165978B2 (ja) 2017-07-19
JP6243528B2 (ja) 2017-12-06
EP3014537A2 (en) 2016-05-04
JP2016527623A (ja) 2016-09-08
CA2916265A1 (en) 2014-12-31
WO2014210058A2 (en) 2014-12-31
CA2916265C (en) 2018-04-10
CA2916261C (en) 2018-04-10
WO2014210058A3 (en) 2015-02-26
WO2014210053A3 (en) 2015-02-26
EP3014442A2 (en) 2016-05-04
EP3014441A2 (en) 2016-05-04
CN105556472A (zh) 2016-05-04
CN105612539A (zh) 2016-05-25
CN105593820B (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
JP6165978B2 (ja) リースエージェントシステム間での制作者システムの分配
US10044550B2 (en) Secure cloud management agent
US9350801B2 (en) Managing client access to a plurality of computing systems
US11128698B2 (en) Producer system registration
US9369518B2 (en) Producer system partitioning among leasing agent systems
US10924542B2 (en) Content delivery system
JP2008041093A (ja) 多数の論理パーティションにわたって仮想入力/出力操作を分散させるためのシステム及び方法
US9780993B2 (en) Producer computing system leasing on behalf of consumer computing system
US20230069240A1 (en) Dynamic cloning of application infrastructures
US8543680B2 (en) Migrating device management between object managers
US10700925B2 (en) Dedicated endpoints for network-accessible services
US10481963B1 (en) Load-balancing for achieving transaction fault tolerance
JP2013214316A (ja) 分散装置
US11153391B2 (en) Connecting application instances to client devices

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171109

R150 Certificate of patent or registration of utility model

Ref document number: 6243528

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250