(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
本明細書は、サービス/アプリケーション・コンポーネントの効率的で柔軟な配置を可能にするコンピューティング・デバイス(ノードとも呼ばれる)のクラウドを提供することの技術的な問題に対処する。特に、本明細書は、コンピューティング・デバイスのクラウド内にアプリケーション・コンポーネントを配置する効率的な方式を提供することの技術的な問題に対処する。
【0005】
O.Niehorsterら、「Autonomic Resource Management With Support Vector Machines」、Grid Computing、12
th IEEE/ACM International Conference on、IEEE、2011年9月21日、157〜164頁は、クラウド・サービスを管理するための人間による介入の度合いを減らすソフトウェア・ソリューションについて記載している。
【課題を解決するための手段】
【0006】
一態様によれば、分散型クラウド・コンピューティングのために適合されたコンピューティング・デバイス(コンピューティング・ノードまたはノードとも呼ばれる)が説明される。コンピューティング・デバイスは、対応する複数のアプリケーションの1つまたは複数のコンポーネントに関する複数のコンポーネント配置要求を受信するように適合されることが可能である。さらに、コンピューティング・デバイスは、複数のコンポーネント配置要求から複数の特徴ベクトルをそれぞれ決定するように適合されることが可能である。それらの複数の特徴ベクトルのうちの1つの特徴ベクトルは、それぞれのコンポーネント配置要求のさまざまな属性(またはさまざまな側面)を記述するベクトル次元を含む。したがって、特徴ベクトルは、対応するコンポーネント配置要求の構造化されたモデルとして理解されることが可能である。
【0007】
加えて、コンピューティング・デバイスは、複数のコンポーネント配置要求に関する複数の配置決定をそれぞれ決定するように適合されることが可能である。1つの配置決定は、それぞれのアプリケーションの1つまたは複数のコンポーネントが配置されている1つまたは複数の実行コンピューティング・デバイスの表示を含む。特に、コンピューティング・デバイスは、その他のコンピューティング・デバイスから制御メッセージを受信するように、ならびにそれらの受信された制御メッセージに基づいて複数の配置決定(および場合によっては、特徴ベクトル)を決定するように適合されることが可能である。
【0008】
したがって、コンピューティング・デバイスは、複数の特徴ベクトルおよび対応する複数の配置決定を含むトレーニング・データを収集するように適合されることが可能である。特に、コンピューティング・デバイスは、コンポーネント配置要求内に、および配置決定内に含まれている情報を構造化し、それによって、機械学習のために使用されることが可能であるトレーニング・データを提供し、それによって、その後のコンポーネント配置要求の加速された配置を可能にするように適合されることが可能である。
【0009】
機械学習のコンテキストにおいては、コンピューティング・デバイスは、複数の特徴ベクトルをクラスタ化し、それによって1つまたは複数のクラスタを生み出すように適合されることが可能である。クラスタ化は、機械学習アルゴリズム、例えばサポート・ベクター・マシン・アルゴリズムを使用して実行されることが可能である。それぞれのクラスタは、典型的には、デフォルトのコンポーネント配置要求のさまざまな属性を記述するデフォルトの特徴ベクトルを含む。言い換えれば、クラスタは、デフォルトの特徴ベクトルによって表されることが可能である。さらに、コンピューティング・デバイスは、1つまたは複数のクラスタのそれぞれに関してデフォルトの配置決定を決定するように適合されることが可能である。1つまたは複数のデフォルトの特徴ベクトルおよびそれぞれの1つまたは複数のデフォルトの配置決定は、コンピューティング・デバイスのデータベース内に格納されることが可能である。特に、1つまたは複数のデフォルトの特徴ベクトルおよびそれぞれの1つまたは複数のデフォルトの配置決定は、その後の配置決定のために使用されることが可能である。
【0010】
コンピューティング・デバイスは、機械学習のコンテキストにおいてベクトル次元の数を減らすように適合されることが可能であり、すなわち、コンピューティング・デバイスは、ベクトル空間の次元を減らし、それによって、その後のコンポーネント配置要求を処理するための全体的な複雑さを減らすように適合されることが可能である。特に、コンピューティング・デバイスは、複数の特徴ベクトルの第1のベクトル次元が、相関しきい値よりも小さい対応する複数の配置決定との相関を有すると判定するように適合されることが可能である。言い換えれば、コンピューティング・デバイスは、配置決定にほとんどからまったくまでの影響を及ぼさない第1のベクトル次元を決定することができる。そのような第1のベクトル次元が決定された場合、その第1のベクトル次元が複数の特徴ベクトルから除去されることが可能である。
【0011】
ベクトル次元は、アプリケーション・コンポーネントによって処理されるデータのシンクおよび/もしくはソースのロケーション、アプリケーションによって処理される複数のシンクおよび/もしくはソース、アプリケーション・コンポーネントによって必要とされるコンピューティング・リソース(それらのコンピューティング・リソースは、プロセッサ・リソース、メモリ・リソース、帯域幅リソースのうちの1つもしくは複数であることが可能である)、アプリケーション・コンポーネントによって必要とされる接続属性(それらの接続属性は、帯域幅、待ち時間、最大ビット誤り率のうちの1つもしくは複数であることが可能である)、ならびに/またはアプリケーションの1つもしくは複数のコンポーネントのグラフ構造(そのグラフ構造は、アプリケーションの1つもしくは複数のコンポーネントどうしがどのように連結されているかを示すことができる)のうちの1つまたは複数を示すことができる。ベクトル次元は、それらのベクトル次元を互いに比較可能にするための適切なメトリックを有することができる。
【0012】
コンピューティング・デバイスは、新しいコンポーネント配置要求を処理するために、格納されているデフォルトの特徴ベクトルおよび対応するデフォルトの配置決定を利用するように適合されることが可能である。特に、コンピューティング・デバイスは、新しいアプリケーションの1つまたは複数のコンポーネントの配置に関する新しいコンポーネント配置要求を受信するように適合されることが可能である。(上述の機械学習フェーズのコンテキストにおいて行われるのと同様の様式で)新しいコンポーネント配置要求から新しい特徴ベクトルが決定されることが可能である。次いで、コンピューティング・デバイスは、コンピューティング・デバイスにおいて格納されている1つまたは複数のデフォルトの特徴ベクトルに基づいて新しいアプリケーションの1つまたは複数のコンポーネントをどこに配置するかを決定することができる。特に、コンピューティング・デバイスは、1つまたは複数のデフォルトの配置決定のうちの1つと同じ(または同様の様式)で新しい配置要求が処理されることが可能であるかどうかを判定するために、新しい特徴ベクトルを1つまたは複数のデフォルトの特徴ベクトルと比較することができる。
【0013】
コンピューティング・デバイスは、1つまたは複数のデフォルトの特徴ベクトルからの新しい特徴ベクトルの最短距離を決定するように適合されることが可能である。新しい特徴ベクトルと、デフォルトの特徴ベクトルとの間の距離は、ベクトル次元のそれぞれのメトリックに基づいて決定されることが可能である。例として、距離は、新しい特徴ベクトルおよび1つまたは複数のデフォルトの特徴ベクトルのうちの1つのそれぞれのベクトル次元の重み付けされた差に基づいて決定されることが可能である。最短距離が最小しきい値を下回る場合、コンピューティング・デバイスは、新しい特徴ベクトルから最短距離にあるデフォルトの特徴ベクトルに対応するデフォルトの配置決定に基づいて新しいアプリケーションの1つまたは複数のコンポーネントをどこに配置するかを決定することができる。特に、コンピューティング・デバイスは、デフォルトの配置決定内に示されている実行コンピューティング・デバイスにコンポーネント配置要求を渡すことができる。
【0014】
上で概要を説明されているように、本明細書は、複数のコンピューティング・デバイスを含むメディア・クラウドに関する。さらに本明細書は、分散型の配置方式に関し、その方式では、それぞれのコンピューティング・デバイスは、新しいアプリケーションの1つまたは複数のコンポーネントの配置に関して個々の決定を行うように構成されている。配置決定は、(機械学習を使用して)前の配置決定から導出されたデフォルトの配置決定に基づいて行われることが可能である。代替として、または追加として、コンピューティング・デバイスは、個々の配置決定を行うために、コンピューティング・デバイスにおいて利用可能なトポロジーの情報および/またはリソース情報を利用するように適合されることが可能である。
【0015】
コンピューティング・デバイスは、第1のトポロジーのエリア(topological area)内に位置付けられる可能性がある。通常、複数のそのようなコンピューティング・デバイスを含む分散型クラウド(本明細書においてはメディア・クラウドと呼ばれる)は、複数のトポロジーのエリアに分けられる(それらのエリアは1つまたは複数の領域にさらに細分される可能性がある)。コンピューティング・デバイスは、第1のトポロジーのエリア以外の複数のトポロジーのエリア内にそれぞれ位置付けられる複数の基準コンピューティング・デバイス(reference computing device)を示すトポロジーのリスト(topological list)を含む。言い換えると、コンピューティング・デバイスは、分散型クラウドのその他のエリア(または領域)のそれぞれの中に位置付けられた少なくとも1つの基準コンピューティング・デバイスの指示(例えば、ネットワーク識別子)を提供するトポロジーのリストを保有する。トポロジーのリストは、その他のエリア(または領域)毎に1つまたは2つの基準コンピューティング・デバイスを含む可能性がある。通常は、基準コンピューティング・デバイスは、各コンピューティング・デバイスが領域に対する異なるアンカー・ポイント(anchor point)を有することを保証し、それによって単一障害点を取り除くために、領域内のコンピューティング・デバイスの利用可能なリストからランダムに選択される。
【0016】
コンピューティング・デバイスは、コンピューティング・デバイス、およびコンピューティング・デバイスの近隣に位置付けられた少なくとも1つの近隣のコンピューティング・デバイスの利用可能なコンピューティング・リソースを示すローカル・リソース・リストをさらに含む可能性がある。コンピューティング・デバイスの近隣は、少なくとも1つの近隣のコンピューティング・デバイスによって満たされる必要がある1つまたは複数の近隣の条件によって定義される可能性がある。1つまたは複数の近隣の条件は、コンピューティング・デバイスと少なくとも1つの近隣のコンピューティング・デバイスとの間の最大往復遅延時間を含む可能性がある。代替的にまたは追加的に、1つまたは複数の近隣の条件は、少なくとも1つの近隣のコンピューティング・デバイスが第1のトポロジーのエリア、つまり、同じトポロジーのエリア内に位置付けられているという条件を含む可能性がある。
【0017】
最短距離が最小しきい値よりも大きいと判定すると(すなわち、コンピューティング・デバイスが前の配置決定に依存することができないと判定すると)、コンピューティング・デバイスは、トポロジーのリスト(のみ)に基づいて、新しいアプリケーションの1つまたは複数のコンポーネントが、第1のトポロジーのエリアに置かれるべきであるか、または第1のトポロジーのエリア以外の複数のトポロジーのエリアのうちの1つに置かれるべきであるかを判定するように適合されることが可能である。概して、新しいコンポーネント配置要求は、コンポーネント/アプリケーションのシンクまたはソースの好ましい場所に関する情報を含む。例として、1つまたは複数のコンポーネントのシンクまたはソースの好ましい場所に関する情報は、1つまたは複数のコンポーネント、および1つまたは複数のコンポーネントが連係して動作しているアプリケーションのその他のコンポーネントの要件の記述から導出され得る。コンピューティング・デバイスは、好ましい場所をそのコンピューティング・デバイス自身の場所およびメディア・クラウドのトポロジーのエリアの場所と比較することができる。
【0018】
1つまたは複数のコンポーネントが第1のトポロジーのエリア以外の複数のトポロジーのエリアのうちの1つに置かれるべきであると判定される場合、コンピューティング・デバイスは、第1のトポロジーのエリア以外の複数のトポロジーのエリアのそれぞれのトポロジーのエリアの基準コンピューティング・デバイスにコンポーネント配置要求を渡すように適合される可能性がある。言い換えると、別のトポロジーのエリアが好ましい場所により近いと判定される場合、配置要求は、別のトポロジーのエリアの基準コンピューティング・デバイスに(または基準コンピューティング・デバイスのうちの1つに)渡され、基準コンピューティング・デバイス(つまり、基準コンピューティング・デバイスへの指示)は、コンピューティング・デバイスのトポロジーのリストから得られる。したがって、コンピューティング・デバイスは、別のコンピューティング・デバイスまたは上位レベルのネットワーク管理エンティティと調整することを必要とせずに、そのコンピューティング・デバイスのトポロジーのリストに基づいてトポロジー管理タスクを実行するように適合される可能性がある。言い換えると、トポロジー管理タスクは、コンピューティング・デバイスによって自律的に実行される可能性がある。
【0019】
1つまたは複数のコンポーネントが第1のトポロジーのエリアに配置されるべきであると判定される場合、コンピューティング・デバイスは、ローカル・リソース・リストから、新しいアプリケーションの1つまたは複数のコンポーネントを実行するためのコンピューティング・リソースを有する選択されたコンピューティング・デバイスを特定するように適合される可能性がある。言い換えると、コンピューティング・デバイスが、コンポーネントの好ましい場所が第1のトポロジーのエリア内に(またはコンピューティング・デバイスの領域内に)あることを判定する場合、コンピューティング・デバイスは、別のコンピューティング・デバイスまたは上位レベルのネットワーク管理エンティティと調整することを必要とせずに、そのコンピューティング・デバイスのローカル・リソース・リスト内の利用可能なリソース情報に基づいてリソース管理タスクを実行する可能性がある。これは、リソース管理タスクがコンピューティング・デバイスによって自律的に実行される可能性があることを意味する。
【0020】
デフォルトの配置決定が特定された場合、およびデフォルトの配置決定内で特定された実行コンピューティング・デバイスに新しい配置要求が渡された場合、トポロジーのリストおよび/またはローカル・リソース・リストに基づく新しい配置要求の上述の処理が使用されることも可能であるということに留意されたい。特に、実行コンピューティング・デバイスは、新しいアプリケーションの1つまたは複数のコンポーネントの処理をさらに最適化するために、自分のトポロジーのリストおよび/または自分のローカル・リソース・リストを利用することができる。
【0021】
コンピューティング・デバイスは、ポイントツーマルチポイント、ポイントツーポイント、またはマルチポイントツーマルチポイントのアプリケーションのデフォルトのアプリケーション・サーバであることが可能である。そのようなデフォルトのアプリケーション・サーバは、ポイントツーマルチポイント、ポイントツーポイント、またはマルチポイントツーマルチポイントのアプリケーションをセットアップするための複数のコンピューティング・デバイスのクラウド内のデフォルトのアクセス・ポイントであることが可能である。そのようなデフォルトのアプリケーション・サーバに関する例は、例えば、特定のトポロジーのエリア内の中央ビデオ会議サーバ、特定のトポロジーのエリア内の中央放送サーバ、および/または特定のトポロジーのエリア内の中央コール処理サーバである。
【0022】
別の態様によれば、デフォルトの配置決定のデータベースを決定するための方法、および/または新しいアプリケーションの1つもしくは複数のコンポーネントをコンピューティング・デバイスのクラウドのうちの1つのコンピューティング・デバイス上に配置するための方法が説明される。方法は、対応する複数のアプリケーションの1つまたは複数のコンポーネントに関する複数のコンポーネント配置要求を受信するステップを含む。方法は、複数のコンポーネント配置要求から複数の特徴ベクトルをそれぞれ決定するステップに進み、それぞれの特徴ベクトルは、それぞれのコンポーネント配置要求のさまざまな属性を記述するベクトル次元を含む。さらに方法は、複数のコンポーネント配置要求に関する複数の配置決定をそれぞれ決定するステップに進み、それぞれの配置決定は、それぞれのアプリケーションの1つまたは複数のコンポーネントが配置されている1つまたは複数の実行コンピューティング・デバイスの表示を含む。したがって方法は、機械学習を可能にするために(複数の特徴ベクトルによって表される)トレーニング配置要求および配置決定のセットを決定するステップを含む。方法は、複数の特徴ベクトルをクラスタ化し、それによって1つまたは複数のクラスタを生み出すステップを含み、それぞれのクラスタは、デフォルトのコンポーネント配置要求のさまざまな属性を記述するデフォルトの特徴ベクトルを含む。加えて、1つまたは複数のクラスタのそれぞれに関して、デフォルトの配置決定が決定される。1つまたは複数のデフォルトの特徴ベクトルおよびそれぞれの1つまたは複数のデフォルトの配置決定は、コンピューティング・デバイスのデータベース内に格納される。したがって、デフォルトの配置決定のデータベースが決定されることが可能である。さらに、データベース内に格納されている1つまたは複数のデフォルトの特徴ベクトルおよびそれぞれの1つまたは複数のデフォルトの配置決定は、新しいアプリケーションの1つまたは複数のコンポーネントを配置するために使用されることが可能である。
【0023】
さらなる態様によれば、ソフトウェア・プログラムが説明される。ソフトウェア・プログラムは、プロセッサでの実行のために適合され、コンピューティング・デバイスで実行されるときに、本明細書において概要を説明される方法のステップを実行するように適合される可能性がある。
【0024】
別の態様によれば、ストレージ媒体が説明される。ストレージ媒体は、プロセッサでの実行のために適合され、コンピューティング・デバイスで実行されるときに本明細書において概要を説明される方法のステップを実行するように適合されたソフトウェア・プログラムを含み得る。
【0025】
さらなる態様によれば、コンピュータ・プログラム製品が説明される。コンピュータ・プログラムは、コンピュータで実行されるときに本明細書において概要を説明される方法のステップを実行するための実行可能命令を含み得る。
【0026】
本明細書において概要を説明される方法およびシステムの好ましい実施形態を含む方法およびシステムは、単体で、または本明細書において開示されるその他の方法およびシステムと組み合わせて使用され得ることに留意されたい。さらに、本明細書において概要を説明される方法およびシステムのすべての態様は、任意に組み合わされ得る。特に、請求項の特徴は、互いに任意に組み合わされ得る。
【0027】
本発明が、添付の図面を参照して以下で例示的に説明される。
【発明を実施するための形態】
【0029】
今日まで、ネットワークの増大する転送容量の需要は、主に、技術の飛躍的進歩かまたは新しいインフラストラクチャの要素の設置かのどちらかによってネットワークの設置される帯域幅を広げることによって達せられている。しかし、増大する容量の需要に影響されるネットワークのこの発展は、少なくとも無理のないコストでは継続すると期待され得ないという大きな懸念がある。将来のネットワークの改良がますます難しくなるので、増大する容量の需要を満たすための代替的な手法が必要とされている。ネットワーク容量の増大する需要に対処する十分に確立された手法は、ネットワークに「上位層の(higher layer)」インテリジェンスを追加することである。追加される「上位層の」インテリジェンスは、例えば、トラフィックを局所化することによって全体的なトラフィックを削減し、したがって、利用可能な転送量を増やすことを目標とする。「上位層の」インテリジェンスのこの概念の最初の成功は、コンテンツ・デリバリ・ネットワーク(CDN)の導入であった。CDNは、基本的に、インターネットにおいて放送配信の特徴を含む(メディア)サービスの大規模な採用を可能にする。
【0030】
しかし、メディア・ストリームがインターネット内のどこかで、すなわち、クラウドで処理を受けることを要し、それによって、例えば、IP−TVをパーソナライズされた「多視点」ビデオ・サービスに発展させることを可能にする(例えば、Ishfaq Ahmad、「Multi−View Video:Get Ready for Next−Generation Television」、IEEE Distributed Systems Online、第8巻、第3号、2007年、論文番号0703−o3006参照)か、または「OnLive」(例えば、OnLive、http://www.onlive.com/参照)のようなクラウドに基づくゲーム・サービスを可能にする必要があるパーソナライズされたメディア・ストリームへの潮流が起こりつつある。CDNは同じコンテンツを多数の受信者に効率的に配信するために構築されるが、ネットワーク内での処理を必要とする個別化されたコンテンツ・ストリームの新しい潮流は、インターネット・インフラストラクチャを課題としている。
【0031】
今日のアプリケーションおよび対応するクラウド・インフラストラクチャは、概して、データが、アプリケーションが実行される専用の場所(すなわち、データセンター)にネットワークを通じて移動させられるように設計される。将来のインターネット設計にこのクラウド・コンピューティングのパラダイムを残すことは、メディア・ストリームの処理機能が置かれている「任意の」データセンターに転送される必要がある膨大な量のトラフィックをもたらすこととなる。本明細書では、指定されたデータセンターでの集中型のアプリケーション処理のこのパラダイムを変更することが提案される。特に、アプリケーションの要件に従ってアプリケーションまたはアプリケーションの一部の移動を施行するインテリジェントなインフラストラクチャが提案される。そのような方式は、トラフィックを局所化することによってネットワークからの不必要な「長距離」トラフィックをオフロードすることができ、したがって、将来のネットワークにおける転送容量の限られた可用性の問題を克服するのに役立つ。
【0032】
今日のクラウド・インフラストラクチャでも、コンピューティング・インフラストラクチャをインターネットにオフロードすることが、欠かせないものとなっている。Amazon EC2、Rackspace、またはMicrosoft Azureのようなクラウド・コンピューティング・プロバイダは、自身のインフラストラクチャまたはプラットフォームを、FacebookまたはAnimotoのようなインターネットに基づくサービスの極めて動的なニーズをサポートする、自動化されたスケーラビリティおよび即座の展開のような特徴を提供するサービスとして提供する。
【0033】
しかし、今日の手法は、大きなコストがかかり、トラフィックを局所的に保つのではなくより多くのトラフィックが(クラウド・コンピューティング・プロバイダによって提供される)集中型のデータセンターにルーティングされるのでコア・ネットワークに対する全体的な負荷を増やす。集中型のデータセンターは、データを処理し、そのデータを要求元に送り返す。これはこれまでの要求/応答に基づくウェブ・サービスに関しては実現できそうであるが、この集中型の手法は、パーソナライズされたMultiViewビデオのレンダリングのような巨大なメディア中心のリアルタイム・アプリケーションのための実際のインターネット・アーキテクチャの設計をだめにする可能性がある。
【0034】
インターネットが、開発者およびエンド・ユーザがそれらの開発者およびエンド・ユーザのパーソナライズされたアプリケーションを統合されたネットワークおよびコンピューティング・インフラストラクチャで実行することを可能にするサービス指向のコンピューティング・パラダイムを直接サポートする固有の能力を組み込むことが、提案される。
【0035】
自律的なサービスが、そのようなアプリケーションが構築され得るコンポーネントであるべきである。自律的なサービスは、そのマシン上でのそれらのサービスの物理的なインスタンス化によってアドレス指定される特定のホスト・インフラストラクチャ・ハードウェアに拘束されるべきでなく、分散型のコンピューティング・リソース上に動的に展開され、データ・フローのソースとシンクとの間でデータ・フローに対して並べて配置(collocate)され得る移動可能なオブジェクトになるべきである。
【0036】
自律的なサービスは、サービスの動的な組み立てと、ワークフローまたはコンテキスト(context)の条件が変わる場合のサービスの潜在的な適合または再配置とを可能にするために、サービスの明確に定義された(well−defined)抽象化モデルを利用する可能性がある。サービス・コンポーネントの疎結合が、要求に応じてサービスのワークフローの相互接続を可能にすべきであり、(サービスおよびそれらのサービスのインターフェースが何らかの意味的なサービスの記述を有するとすれば)サービスの組み立てを修正することによって、ユーザに同じ関連するデータを提供するために必要とされるワークフローの適合を容易にすべきである。
【0037】
ユーザの視点から見ると、通常、クラウドは、集中型のサーバのように振る舞う。それにもかかわらず、通常、クラウドは、一貫した方法で、空きリソースの集約されたまたは分散された集合を利用する。計算負荷およびネットワーク・リソースを監視することによって、インスタンスを動的に拡大および縮小し、必ずしもデータ・パスにQoS(サービス品質)管理メカニズムを適用することなくネットワーク負荷を管理することができる。
【0038】
特にメディア・アプリケーションにおいて、そのようなコンポーネントは、別のデータ・ストリームを生成するためにデータを消費するデータ変換サービス、すなわち、エンティティとして実装される可能性がある。言い換えると、メディア・アプリケーションは、一連のデータ変換サービスとしてモデル化され得る。したがって、ビデオ・カメラは、ビデオ・データを生成したデータ・ソースである。ビデオ・コーデック、スケーリング・コンポーネント、またはフレーム化コンポーネントのようなビデオ処理コンポーネントは、メディア・ストリームを、例えば、モバイル端末またはTVディスプレイのためのふさわしいフォーマットに適合するためのデータの変換を可能にする可能性がある。画像認識は、ビデオ信号からオブジェクトを特定することができ、それらのオブジェクトは、シーンの3Dモデルを生成するために異なるソースからマージされる可能性がある。
【0039】
そのようなデータ変換モデルおよびカメラの元のビデオ・ストリームを用いて、ユーザのための新しいパーソナライズされた像がレンダリングされ、ディスプレイに送信される可能性がある。そのようなサービスは、有向グラフによって表される可能性があり、展開時にインスタンス化されることになる。インスタンス化プロセス中に、必要とされるリソースが、利用可能なリソース・プールから選択される。必要とされるリソースをインスタンス化プロセス中に選択することの結果として、ネットワークに対してサービスによって課されるトラフィック全体が削減される。言い換えると、リソース選択プロセスは、ネットワークに対してサービスによって課されるトラフィック全体を削減することを目的とする可能性がある。リソース選択プロセスは、サービスの消費者のQoE(体感品質)の点を最適化することをさらに考慮する可能性がある。
【0040】
さまざまなサービスの特徴を有するアプリケーションは、メディア・クラウド(MC)の概念から恩恵を受ける程度が異なる可能性がある。大きな恩恵は、特定の期間にわたり連続的なデータの安定したフローを必要とするアプリケーション、または処理のために大量のデータの転送を必要とするアプリケーションで実現され得る。一方、ごく限られたデータの転送しか必要としないアプリケーションに関しては、サービスの転送のオーバーヘッドおよびインスタンス化のコストが、得られる恩恵を上回る可能性がある。したがって、データに関連する「メタ情報」の取得を可能にするメカニズムを提供することが、MCの概念で有益である可能性がある。データに関連するそのような「メタ情報」は、データが一定のメディア(例えば、ビデオ)ストリームであるか、またはサービスの実行前に転送される必要がある限られた量のデータ(例えば、データ・ファイル)に過ぎない場合、データがどこにあるか、サービスの実行のためにどれだけのデータが転送される必要があるかに関する情報を提供する可能性がある。
【0041】
ネットワーク・アーキテクチャによって本質的にメディア・クラウドの筋書きをサポートするために、既存のインターネット・アーキテクチャのいくつかの基本的な原理が再考されるべきである。第1に、コンテンツ・ネットワーキングのよく知られている原理が、本明細書に記載のMCの手法をサポートするように拡張されるべきである。コンテンツ・ネットワークは、データの局所性を探る、つまり、ソースにおけるデータに対する要求を満たすのではなく、データのローカルのキャッシュされたコピーが配信される。コンテンツを直接アドレス指定し、コンテンツが生成された場所をルーティングの決定のために使用するのではなくこの情報をルーティングの目的に使用する方式が、提案され得る。
【0042】
上述の方式の拡張は、コンテンツをアドレス指定すべきであるだけでなく、さらに、要求されたデータを提供することができるサービスをアドレス指定し、必要な変換を行うための処理パイプラインをインスタンス化すべきである。単一のドメイン内のすべてのユーザに集中型の処理を実行する代わりに、メディア・フローは、利用できる場合、ネットワーク・レイヤの固有の「マルチキャスト」能力を利用して適切な場所で組み合わされるか、または分割される可能性がある。これは、マルチキャストが、「マルチキャスト」がネットワークでサポートされるかどうかを知らないサービスの開発者によって明示的に組み込まれる必要があり、したがって、オーバーレイ・メカニズムによってのみ実現され得る既存の方式よりも有益である。
【0043】
異なるサービス・コンポーネント間で交わされる(メディア)フローのトラフィック・パターンが正確に予測される場合、本明細書に記載のMC対応ネットワークは、パケット毎にルーティングの決定を実行する代わりに、直接、そのようなフロー・パターンに対して動作することができる。したがって、MC対応ネットワークは、サービス・コンポーネント間で交わされるメディア・ストリームの利用可能なメタ情報をネットワークに提供することによって効率的なフローに基づくスイッチングを可能にすることができる。この情報は、そのようなMC対応ネットワークの制御プレーンが全体的なスループットを向上させることを可能にすることができる。
【0044】
MC方式は、フローに基づくスイッチング・パラダイムが、概して、フロー制御ハンドラにおいてより大きな動的さをサポートすることを代償として実現されることをやはり考慮し得る。そのような代償を「制限する」ために、MC対応ネットワークは、同じデータセンターで実行されるサービス・コンポーネント間のパスを共有している複数のデータ・ストリームを集約する能力を提供すべきである。データセンター間のジョイント・ストリーム(joint stream)の集約された粒度(granularity)を導入することによって、コア・ネットワーク自体の制御の複雑性が制限され得る。
【0045】
MCを提供するときのネットワークに対するさらなる要件は、もはやマシンではなくサービス(すなわち、サービス・コンポーネント)であるメディア・フローのエンドポイントの途切れることのない再配置がサポートされるようにしてフローがネットワークで処理されるべきであることである。したがって、MC対応ネットワークに関しては、ソケット・インターフェースのようなクライアントのAPIが修正される必要がある可能性がある。MC対応サービスは、概してデータの(1つまたは複数の)入力ストリームに対して動作して、このサービスの後続のコンシューマ・コンポーネント(consumer component)にその後配信される自身の出力データを生成する自己充足的なコンポーネントから構築されるので、通信を目的とする専用のソケットの使用はもはや十分ではない可能性があり、新しいパラダイムが将来のインターネットに関連して考えられる必要がある可能性がある。
【0046】
典型的には、通常のクラウド・アプリケーションの処理リソースは、サービス・ランタイムの前に割り振られなければならない。このマッピングは、どのデータセンターが特定のアプリケーションをホストすべきかを決定するという手動による管理タスクである場合が最も多い。結果として、処理されるデータの源のロケーションにかかわらず、処理されるデータは、典型的には、自分の事前に割り振られたデータセンターへ送信され、そこで処理され、自分の送り先へ送り出されなければならない。そのような静的な配置方式は、ランタイムにおいてサービス実行を動的に適合させることによってサービス・パフォーマンスおよびリソース利用を改善する、分散型のメディア・アプリケーション展開の利点を活用するには十分でない。例えば、グローバル・ビデオ会議サービスは、そのビデオ会議サービスのユーザの使用パターンに従って拡大および縮小すること、またはより適切なロケーションへ移動することを可能にされることが可能である。リソースのこの適合は、MC内でビデオ会議サービスのアプリケーション・コンポーネントを作成することによって、取り下げることによって、または移動させることによって達成されることが可能である。本明細書は、アプリケーション・コンポーネントに関するそのような配置および再配置の決定を効率よく提供し、その一方で、サービス・スケーリングおよびコンポーネントの局所性について考慮する複雑なサービス・ロジック(ミドルウェア)を回避することを対象としている。
【0047】
少なくともユーザ毎のコンポーネントの粒度で機能する真に分散型のサービス展開に関しては、教育されたコンポーネント配置決定は、典型的には、サービス・ランタイム中にのみ達成されることが可能である。その時点においてのみ、関連するメディア・ストリームのデータ・ソースおよびデータ・シンクがわかり、ひいては、メディア処理コンポーネントが、すぐ近くの処理リソース・ロケーションに割り振られることが可能であり、それにより、トラフィックをローカルに保持することによって、エンドツーエンドのサービス待ち時間が少なくなり、ネットワークがオフロードされる結果となる。変わりゆくサービス・プロファイルおよび変動するトラフィック・パターンは、サービス・ランタイム中にコンポーネントに関するリソース再割り振りを必要とする可能性さえある。したがって効率的なコンポーネント配置は、典型的には、アプリケーション・コンポーネントがインスタンス化されるときの単発のマッピング決定を必要とするだけでなく、典型的には、リソース割り振りの継続的な評価も必要とする。
【0048】
本明細書に記載のメディア・クラウドは、典型的には、軽量のアプリケーション・コンポーネント(すなわち、相対的に小さなデータ・サイズを有するアプリケーション・コンポーネント)を使用し、効果的なメディア処理に適合されているフローベースのプログラミング・モデルに準拠する分散型のオーケストレーション・ミドルウェアを提供する。アプリケーション・コンポーネントの小さなサイズに起因して、コンポーネントは、実行時間中に柔軟に展開可能であり、最も低いコストで最も高いユーザ経験を提供するためにアプリケーション・コンポーネントが最も効果的に稼働するロケーションに配置されることが可能である。
【0049】
アプリケーション・コンポーネントは、内部の機能ロジックを外部のアプリケーション・ロジックから切り離すことができる。典型的には、アプリケーション・コンポーネントは、ストリーミングされるメディアの新しいインスタンスの着信によって、例えば、ビデオ・フレームの着信によってトリガーされる。それに応じて、メッセージが、アプリケーション・コンポーネントを実行環境に接続する決定されたコネクタ(メディア・クラウドにおいては、「ポート」と呼ばれる)を介して適切なアプリケーション・コンポーネントへ配信される。新しいビデオ・フレームが受信された場合、そのビデオ・フレーム上で機能するアプリケーション・コンポーネントは、例えば、その受信されたフレームをRGB(Red−Green−Blue)色空間からグレースケール・イメージへ変換し、2つの入力ストリームからのフレームどうしを単一の出力イメージへとマージし、または顔検知を実行する。
【0050】
アプリケーション・コンポーネントは、自分のオペレーションを終了して結果を生成したときには常に、処理されたデータを、アプリケーション・コンポーネントによって生成されたデータの潜在的な消費者へ転送するために実行環境を呼び出す。その実行環境は、生成された出力の消費者を特定および決定し、データ転送を処理する。実行環境によるこの処理は、アプリケーション・コンポーネントから外部バインディングを隠し、実行時間においてさえ、全体的なアプリケーションの動的なバインディングおよび再構成を可能にする。送信者および受信者が整合した方法でメッセージを解釈していることを確実にするために、さまざまなポート・タイプが考慮されることが可能である。
【0051】
本明細書に記載のMCコンテキスト内では、全体的なアプリケーション・ロジックは、アプリケーション・コンポーネントを作成または解任する、およびアプリケーション・コンポーネントどうしの間の接続を構築または解除する制御コンポーネントによって確立される。制御コンポーネントは、典型的にはメディア・パスに関与しないが、構成パラメータを提供し、制御コマンドを自分の子コンポーネントへ送信し、またはエラー・メッセージを受信するために、特別な制御ポートを通じてそれらの子コンポーネントに接続されている。
【0052】
典型的には、新しいアプリケーション・コンポーネントは、対応する制御コンポーネントが存在する同じローカル・リソースにおいてインスタンス化される。メディア・フロー内のその他のアプリケーション・コンポーネントへの接続が確立された後に、実行環境は、上で概要を説明されているようにマッピング・プロセスを呼び出し、アプリケーション・コンポーネントおよびそのアプリケーション・コンポーネントの状態を、パフォーマンス、待ち時間、またはその他の理由から、そのアプリケーション・コンポーネントをホストするのにより適しているリソースへ転送する。
【0053】
アプリケーション・コンポーネントに基づくアプローチの柔軟性は、さらなるアプリケーション・コンポーネントをオン・デマンドで付加することによって、例えば、任意の動く物体ではなく既知の人物の存在を特定するための顔検知機能によって、アプリケーションを拡張することを可能にする。
【0054】
アプリケーション・コンポーネント配置プロセスのコンテキストにおいては、さまざまな技術的な問題がある。例えば、高度に分散型のリソース展開アルゴリズムの場合においてさえ十分なパフォーマンスおよびスケールを提供する効率的なリソース割り振り戦略および管理方式の実現、きめ細かいサービス展開の妥当な限度の特定(すなわち、アプリケーション・コンポーネントの最適な粒度の特定)、適切な割り振りアルゴリズムおよび戦略の設計、ならびに、完全に分散型の割り振りアプローチの実現可能性である。本明細書は、これらの技術的な問題に対処する。特に本明細書は、MC内にアプリケーション・コンポーネントを配置するための方法について記載している。
【0055】
完全に分散型の割り振りアプローチに対する可能なソリューションは、単一の計算ステップにおけるアプリケーション・コンポーネントを「グローバルな」知識に基づいて計算リソースに割り振らずに、コンポーネントをリソースからリソースへと、リソースにおけるローカルな知識に基づいて、現時点で最も適合するリソースに到達するまで転送することであると言える。このアプローチは、IPネットワークにおけるIPパケットのための転送アプローチと比較可能である。そのような転送アプローチにおいては、トポロジーおよび需要情報は、近隣、または選択された設備を中心とした小さな半径の円に限定されることが可能であり、その一方で需要情報は、コンポーネントを近隣の境界上のクライアントにマップすることによって、これらの近隣の外側の残っている(リモート)クライアントに関して暗黙のうちに取り込まれる。円の半径は、拡張性とパフォーマンスとの間のトレードオフを調整するために使用されることが可能である。
【0056】
さらなるアプローチは、レプリカ選択のための分散型のマッピング・ノードの使用であると言える。顧客のレプリカに対する要求の重み付けされた分割を保持し、その一方でクライアント−レプリカ局所性を可能な最大限度まで維持するアルゴリズムが使用されることが可能である。そのようなアプローチは、クライアント・パフォーマンスおよびサーバ・ロードを併せて考慮する最適化問題を解決する。
【0057】
上述のアプローチは、典型的には、現在の分散型のシステム状態を分散型のサービス要求とともに記憶しない。結果として、システム状態または要求レートのそれぞれの軽微な変化は、時間および処理労力を必要とする最適化問題を解決することに対する必要性に、ならびに/または低速で極小を含む場合があるマルチステップ・アプリケーション・コンポーネント再配置プロセスにつながる場合がある。さらに、上述のアプローチは、反復される同期化されたサービス攻撃の特定のための能力を提供しない。
【0058】
図1は、コンピューティング・ノード(コンピューティング・デバイスとも呼ばれる)101の集合100を示す。これらのコンピューティング・ノード101は、階層のないフラットな構成を形成し、つまり、集合100のコンピューティング・ノード101のいずれも全体の制御または管理機能を持たない。コンピューティング・ノード101のそれぞれは、その他のコンピューティング・ノード101とは独立して働き、コンピューティング・ノード101で利用可能な集合100の構造の個々の情報にのみ依存する。集合100は、本明細書においてはメディア・クラウド(MC)100と呼ばれる。さまざまなノード101は、インターネットなどの通信ネットワーク103を介して相互接続される。
【0059】
(集中型の方法とは対照的に)分散型の方法でサービスまたはアプリケーションを提供するためにクラウド・コンピューティング機器101の分散型の構成100を使用することが、提案される。サービスまたはアプリケーションの分散型のプロビジョニングの結果として、サービスまたはアプリケーションは、(とりわけ通信ネットワーク103の必要とされる送信リソースに関して)リソースがより効率的に利用される方法で提供され得ると期待される。この文脈で、クラウド・コンピューティング機器101に関する完全に分散型のリソース管理(RM)システムが記述され、それにより、クラウド・コンピューティング機器101で提供されるRM機能のいずれも、利用可能なリソースおよび構成100のトポロジーに関する完全な知識を持たない。全体として、MC100のノード101のそれぞれの自律的な分散型の自立したリソース管理(RM)機能を提供することが望ましい。
【0060】
この文脈で、「自律的な」RM機能とは、各ノード101が、実行されるアプリケーションまたはアプリケーションのコンポーネントをどこに持つべきかを決定するために、そのノード101のローカルのリソースの近隣のノードについて自律的に決定することを意味する。さらに、「自律的な」RM機能は、別のクラウドのリソースの領域の代表を自律的に決定する。言い換えると、MC100は、複数のクラウドのエリア102に細分される可能性があり、第1のエリア102のノード101のそれぞれが、第2のエリア102全体(または第2のエリア102の下位領域)の代表である第2のエリアのノード101を自律的に選択することができる。したがって、各ノード101は、ノードのエリア102内のノード101の近隣で利用可能であるリソースのローカル・リソース・グラフを自律的に構築することができる。さらに、各ノード101は、MC100のその他のエリア102の代表ノードのトポロジーのリストを構築し、それによって、各ノード101にMC100のすべてのエリア102(およびおそらくは下位領域のすべて)への入口の点(point of entry)を提供することができる。
【0061】
各ノード101のRM機能は、リソース管理機能があらゆるノード101に置かれるという点で「分散型」である。一実施形態においては、ノード101のいずれも、いかなる特定の特殊な役割(例えば、調整の役割)も持たない。各ノード101は、そのノード101のRM機能を「自立」して実行し、つまり、MC100内でソフトウェア・コンポーネントをどこに置くかの決定が、(上位レイヤの制御機能と調整することなく)当該ノードのRM機能によって単独で実行される。「自立」して働くために、各ノード101は、(例えば、ローカル・リソース・グラフによる)近くの/ローカルのリソースの個々の像と、(例えば、トポロジーのリストによる)その他のエリアおよび/または(下位)領域への個々のつながりとを保持する。
【0062】
MC100のノード101は、MC100内のすべてのノード101の位置の共通の全体的なネットワーク・マップを共有しない。その代わりに、各ノード101が、MC100全体の当該ノードの像を反映する個々のネットワーク・マップを含む。個々のネットワーク・マップは、ローカル・リソース・グラフ(それにより同じエリアまたは領域102内の近隣のノードの一部を示す)と、トポロジーのリスト(それによりMC100の各エリア102(または領域)の少なくとも1つの代表ノードを与える)とを含む可能性がある。
【0063】
図2は、ノード101のトポロジーのクラスタ化300を示す。上で示されたように、MC100のトポロジーは、(例えば、1つまたは複数の領域302を含むエリア102の)階層のレベルに順序付けられる可能性がある。したがって、ノード101(例えば、
図3のノードB)は、領域302(例えば、領域α)に属すると考えられる可能性があり、領域302自体は、エリア102(例えば、エリアa)に属すると考えられる。
【0064】
特定のノード101は、MC100全体の限られた像しか持たない可能性がある。MC100のこの限られた像は、「自律的な」RM機能を実行するためにノード101によって使用される。RM機能のこの部分は、ノード101によって実行されるトポロジー管理と呼ばれる可能性がある。MC100の各エリア102(または領域302)に到達可能であるために、各ノード101は、別のエリア102(または領域302)の1つの(場合によってはいくつかの)代表をそのノード101のトポロジー・ツリーまたはトポロジー・リスト(トポロジーのリストとも呼ばれる)に追加する。MC100のノードが1つの階層のレベル、例えば、エリア102内に(領域302へのいかなる細分化もなしに)編成される場合、各ルート・ノード101が、すべてのその他のエリア102の(任意の)代表を記憶すべきである。ノード101が2つの階層のレベル、例えば、領域302およびエリア102に編成される(各エリア102は1つまたは複数の領域302を保有する)場合、各ルート・ノード101が、すべてのその他のエリア102の(任意の)代表と、このエリア102内の領域302のいずれかの(任意の)代表とを記憶すべきである。
【0065】
したがって、各ノード101は、エリア102内(または領域302内)のリソース管理を実行する能力をノード101に与えるそのノード101のローカル・リソース・グラフ(RG)のルートの位置にそのノード101自身を置く。さらに、各ノード101は、そのノード101のトポロジーグラフ(またはトポロジー・リスト)のルートの位置にそのノード101自身を置く。これは、ノード101に、ネットワークのそのノード101の個々の像を与える。各(ルート)ノード101は、そのノード101のトポロジー・グラフ(TG)にその他の領域302(および/またはエリア102)の1つまたは複数の代表を追加する。領域302内の任意のノードがこの領域302の代表になる可能性があり、つまり、すべてのノードは同等であり、エリア102または領域302のノードのいずれも特別なタスクを持たないことに留意されたい。(エリア102および領域302を含む)2階層のトポロジーの場合、ノード101のTGを使用してノード101のそれぞれから正しい領域302をアドレス指定するために、最大で2つのステップが必要とされる。
【0066】
ローカルのおよび領域のトポロジーの情報は、
図3に示されるテーブル600に記憶され得る。テーブル600は、ローカル・リソース・グラフ601のそれぞれのノードに関連するコスト611を含めて、ローカル・リソース・グラフ601のノードを示す。別のノードのコスト611は、別のノードに付与されるリソース値、例えば、利用可能な処理リソース、利用可能なリンクの帯域幅、利用可能なメモリ・リソース、実現可能な往復遅延時間などを含む可能性がある。さらに、テーブル600は、その他の領域および/またはエリアの代表ノードを示すトポロジー・リスト602を提供する。トポロジー情報のエントリは、(領域/エリア毎に単一のエントリではなく)複数の選択肢を保有する可能性もある。したがって、メモリ・テーブル600は、MC100のノードの観点の表現である。通常、ローカル・リソース・リスト601内のノードの数は、エリア/領域内のノードの総数未満の所定の数に制限される。トポロジー・リスト602内のエリア/領域毎のノードの数は、エリア/領域内のノードの総数未満のいくつかのノード(例えば、1つまたは2つのノード)に制限される。これは、各ノード101が完全なMC100の制約された像しか持たないことを意味する。
【0067】
ノード101は、テーブル600のリソースおよびトポロジーを管理する。リソース・エントリ611は、近隣のノードから受信されたコストのタプルの情報を記憶する。ルート要素からの距離(d)に依存して、コストのタプルの値の精度は、正確性、現実性、集約された像(aggregated view)などに関して変わる可能性がある。コストのタプルは、処理、メモリ、リンクの帯域幅、RTT(往復遅延時間)などのリソース値を含み得る。コンポーネントのインスタンス化プロセス(すなわち、コンポーネントの配置プロセス)の場合、ノードは、まず、そのノード自身のリソースの状態を分析し、次いで、それをRG601のノードと比較する。ノードは、コンポーネントをローカルでインスタンス化するのか、またはRG601内の近隣のノードに要求を転送するのかを決定する。
【0068】
ローカル・リソース・グラフ601は、ノード101によって実行されるリソース管理のために使用され得る。上で示されたように、各ノードは、ノード101で利用可能な限られた情報に基づいて、特に、ローカル・リソース・グラフ601に基づいて、独立したリソース管理機能を実行する。ローカル・リソース・グラフ601は、(概して同じ領域から取得される)ノードの部分集合に基づく。複数の領域302の間の境界の近くに位置付けられているノード101に関しては、ローカル・リソース・グラフ601の近隣のノードが、その他の領域のノードを含む可能性があることに留意されたい。概して、ローカル・リソース・グラフ(RG)の木の深さは、(近くのネットワークの近隣のノード、または近傍に)制限される。ノード101のブート・プロセスにおいて、ローカル・リソース・グラフ内の位置が、(領域の)ノードの所与の集合からネゴシエーションされる可能性がある。言い換えると、ノード101は、ローカル・リソース・グラフ内に置かれるべき利用可能なノードの適切な部分集合を選択することができる。継続的な(時間のかかる)最適化プロセスが、ノードを同じ領域内のその他のノードで置き換えることを可能にする。つまり、ルート・ノード101は、そのルート・ノード101のローカル・リソース・ノード内のノードがノード101のリソース管理機能に(あまり)寄与しないことを見つける場合、寄与しないノードを、ルート・ノード101の近隣の別のノードで置き換えることを決定する可能性がある。
【0069】
上で示されたように、ローカルRGの各ノード101は、コストのスカラ/タプル611を与えられる。このタプル611は、新しいコンポーネントのインスタンス化要求がどこに行われる必要があるかを決定するのに役立つ。言い換えると、MC100内でアプリケーションのコンポーネントの実行をどこに委ねるべきかを決定するとき、ノード101は、ローカルRG601を調べ、ノードによって与えられるコスト611に基づいて、ローカルRG601内に含まれるノードのうちの1つにコンポーネントを委ねる可能性がある。ローカルRG601のノードは、それらのノードのRGのルート・ノード101に現在のリソースの状態を定期的に知らせる。言い換えると、ローカルRG601のノードは、それらのノードのリソースに関する情報をルート・ノード101にプッシュし、それによって、ルート・ノード101が、裏付けのあるリソース管理の決定を行うことができることを保証する。特に、ローカルRGの情報(例えば、コスト611)は、(ルート・ノード自身を含む)ローカルRG内のノードのうちの1つをコンポーネントの配置のための適切なノードとして特定するために使用される。コンポーネントの配置プロセスは、数回繰り返される可能性があることに留意されたい。一方、リソース管理機能を実行するためのいかなる中央機能または部分的な中央機能も存在せず、それによって、単一障害点のリスクをなくす。
【0070】
したがって、各ノード101は、ローカル・リソース・グラフ601と、その他の領域の1つまたは複数の代表ノードを示すトポロジーのグラフ602とを含む限られたネットワークの像を有する。上で示されたように、MC100のトポロジーは、VivaldiおよびMeridianアルゴリズムを用いて分散するようにして決定され得る。初期化段階では、各ノード101が、同じ領域/エリア内のノードの完全なリストにアクセスできる可能性がある。ノード101は、このノードのリストを使用してローカル・リソース・グラフ601を構築する。さらに、初期化段階では、各ノード101が、残りの領域/エリアから少なくとも1つのノードを選択する可能性がある。残りの領域/エリアの少なくとも1つのノードの選択は、領域のノードがその他の領域の異なる代表ノードを有することを保証し、それによって、単一障害点または欠陥を防止するために、ランダムに実行されるべきである。
【0071】
以下で、ノード101によって提供されるマッピング機能401に関するさらなる詳細が、説明される。ノードで利用可能なトポロジーおよびリソース情報(すなわち、情報600)に基づいて、MC100のノードは、メディア・クラウド・システム100のノード101上のソフトウェア(メディア)コンポーネントの(最適な)配置に関する決定を行うことができる。
図4に示されるように、アプリケーション700は、概して、複数のコンポーネント703からなる。例として、電話会議アプリケーションは、複数のオーディオ・コーデック(符号化/復号)コンポーネント(電話会議の各参加者につき1つずつ)と、(参加者の音声チャネルを接続するための)ミキサー・コンポーネントとを含む。通常、アプリケーション700(およびコンポーネント703)は、ソース701(データの提供元)およびシンク702(データの提供先)を有する。上述の例においては、電話会議アプリケーションの個々の参加者が、ソースおよびシンクであると考えられ得る。コンポーネントの配置プロセスのタスクは、通信ネットワーク103のリソースの消費を削減するために、アプリケーション700のコンポーネント703をMC100内の適切な場所に置くことである。例として、電話会議アプリケーションのオーディオ・コーデック・コンポーネントをそれぞれの参加者の近くに配置することによって、(符号化された音声トラフィックのみが通信ネットワーク103を通じて送信されるので)アプリケーションにより必要とされる送信帯域幅が削減され得る。さらに、電話会議アプリケーションのミキサー・コンポーネントは、電話会議の参加者の間の中心の場所に置かれるべきである。
【0072】
図4において、異なるコンポーネント703の間およびソース701とシンク702との間のリンクの異なる幅は、リンクに関する異なる要件を示す(ラバー・バンド・モデル(rubber band model))。より大きなばね乗数を示すコンポーネント703の間のバンドは、コンポーネント703が互いに近くに(例えば、同じノードに)置かれるべきであることを示す。
【0073】
配置手順は、利用可能なノードのリソースおよび利用可能なリンクのリソースを考慮に入れるべきである。さらに、(例えば、プロセッサ・リソース、メモリ・リソース、リンクの帯域幅、遅延、ジッタに関する)アプリケーション・コンポーネント703の要件が、考慮に入れられるべきである。
【0074】
そのような配置の決定は、集中型の方法で実行され得る。しかし、概して、コンポーネントの配置の集中式またはメッシュ式の解決策は、大規模なシステムに見合わない。さらに、そのような集中式の解決策は、単一障害点をもたらす傾向がある。
【0075】
本明細書において、メディア・クラウド100のノード101で利用可能な限られた情報を用いる分散型の配置方式が説明される。分散型の配置方式は、個々のノード101によって実行される個々のマッピング機能401を利用する。これらのマッピング機能は、2つの下位タスク、すなわち、トポロジー管理とリソース管理とに分けられる。トポロジー管理は、ノード101のそれぞれで利用可能なトポロジー情報(特に、トポロジー・リスト602)を利用する。コンポーネント配置要求は、通常、アプリケーション(またはコンポーネント)のシンクまたはソースについての領域の情報を伴う。ノードは、このトポロジー情報を調べ、トポロジー情報がそのノード自身のトポロジー情報に合致しない場合、要求を領域(またはエリア)の代表に転送する。言い換えると、ノードは、コンポーネントの所望のシンクまたはソースの場所がノードの領域と一致するかどうかを検証する。一致しない場合、コンポーネント配置要求は、(トポロジー・リスト602から)ノードに知られている適切なエリアまたは領域の代表ノードに渡される。2階層のトポロジー(領域およびエリア)においては、正しい領域302をアドレス指定するために、最大で2つのステップが必要とされる。複数のコンポーネントに関する配置要求の場合、トポロジー・プロセスは、1回実行されれば十分である。言い換えると、(同じサービスまたはアプリケーションに属する)一連の関連するコンポーネントは、単一のステップで配置され得る。
【0076】
リソース管理は、MC100の異なるノードの負荷の状態に応じたローカルのリソース配置を対象とする。ノードは、コンポーネント配置要求を受信し、コンポーネントがそのノードの領域内に置かれるべきであると判定する場合、そのノードのローカル・リソース・グラフ601を調べて、コンポーネントを実行するための必要なリソースを有するグラフ601内のノードを特定する。概して、ネットワークの異なるノード101は、配置されるべきコンポーネントのコピーを既にキャッシュしてある。したがって、通常、特定されたノードでコンポーネントのインスタンス化を開始するだけで十分である。そうでなければ、特定されたノードは、中央コンポーネント・データベースからコンポーネントをダウンロードすることができる。
【0077】
一例においては、
図2のノード311(ソース)が、ノード312(シンク)を含むシンクを有するアプリケーションの設定を要求する。問題は、ノード311がシンクの近くにあるノードをどのようにして発見することができるか(またはその逆)である。上で示されたように、MC100の各ノード101のマッピング機能(MF)401は、そのノード自身および近隣のノードのリソースの占有およびトポロジー情報を記憶し、したがって、各ノードは、自立してそのノードの配置の決定を行うことができる。第1に、利用可能なトポロジーの情報が、シンクかソースかのどちらかに近いネットワークの領域を発見するために使用される。第2に、選択された領域内の近隣のノードのローカルのリソース情報が使用され、その結果、ノードは、そのノードの近隣のどこに新しいコンポーネントを置くべきかを決定することができる。上述の配置方式を使用すると、ノードのいずれも、MC100の完全で厳密なリソースおよびトポロジー情報を知る必要がない。それでも、実現される配置は、ほぼ完全である。本明細書において概要を説明される配置方式においては、MCのノード101のいずれも、オンライン処理中に特別な役割を持たないことに留意されたい。結果として、任意のMCのノード101のうちの1つまたはいくつかが、システムの停止を引き起こさずに故障する可能性がある。
【0078】
ノードのマッピング決定プロセスは、以下のステップを含み得る。第1のステップにおいて、(コンポーネント配置要求で要求された)シンクがそのノードと同じエリア/領域内にあるかどうかが調べられる可能性がある。そうでない場合、ノードは、要求されたシンクに合致するに違いないエリア/領域内の代表ノードに関してそのノードのテーブル602を検索する。ノードは、代表ノードにコンポーネント配置要求を転送する。代表ノードは、シンクがその代表ノードのエリアおよび領域内にあると確認し、そうでなければ、送り先の領域からその個々の代表に要求を転送する必要がある。代表ノードは、近くにあり、コンポーネントを実行するために最良のコスト値を有する最もふさわしいMCのノードに関してその代表ノードのローカルRG601を調べる。概して、アプリケーションは複数のコンポーネントからなるので、したがって、これらのコンポーネント間の相互接続はさまざまな要件を有することに留意されたい。配置の決定は、アプリケーションのグラフ情報の全体またはより大きな部分がより全体的なマッピングの決定のために提供され得る場合、改善される可能性がある。
【0079】
上で示されたように、各ノード101は、ローカル・リソース・グラフ601を含む。コンポーネント配置要求を受信するとき、ノード101は、そのノード101のローカル・リソース・グラフ601内で適切なノードを探索し、このノードにコンポーネント配置要求を転送する。このノードも、ローカル・リソース・グラフ601を含み、コンポーネント配置要求を処理するためのそのノードのローカル・リソース・グラフ601内の適切なノードを探索する。この繰り返しのプロセスの収束を保証するために、コンポーネント配置要求の転送は、最低限の必要とされる改善に関する条件に従う可能性がある。特に、転送がコンポーネントの配置に関する最低限の必要とされる改善につながる場合(例えば、プロセッサの能力/帯域幅の20%の削減など)にのみ、コンポーネント配置要求がローカル・リソース・グラフ601内のノードに転送され得ると規定される可能性がある。
【0080】
したがって、MC100の複数のノード101は、集中化された配置サーバの関与を伴わずに、ネットワーク内でアプリケーション・コンポーネントの分散型の配置を実行することを可能にされる。複数のノード101は、コンポーネント配置メッセージ(例えば、コンポーネント配置要求、および/または、1つもしくは複数の近隣のコンピューティング・デバイスにおける利用可能なコンピューティング・リソースについての情報に関するメッセージ)のやり取りに依存する。以降では、機械自己学習に基づいて、分散型の配置方式を加速するための方法が説明される。
【0081】
上で概要を説明されているように、(分散型の配置方式の一部としての)展開アルゴリズムは、分散型のメディア/クラウド・コンピューティング・システム100のノード101上での仮想マシン(VM)、アプリケーション、またはアプリケーション・コンポーネントのロケーションを計算し、それによって、サービス・ソフトウェア(VM、アプリケーション、コンポーネント)の配置は、リソース使用(CPU、メモリ、帯域幅...)、およびユーザによって経験されるサービス品質に関して最適化される。例として、ビデオ会議アプリケーションが考えられる。会議の参加者のほとんどが米国に配置されている場合、ミキサー・アプリケーション・コンポーネント703は、好ましくは米国に配置されるべきである。会議の均等に分散された(ロケーション)参加者の別の場合においては、共通のミキサー・アプリケーション・コンポーネント703のロケーションは、ネットワーク・リソース割り当てが最小になるように決定されるべきである。
【0082】
全体としては、多数のアプリケーション(および対応するアプリケーション・コンポーネント)が、MC100内に配置される。分散型の配置プロセスの結果は、その後のアプリケーション配置要求の配置のために使用されることが可能である配置知識を抽出するために使用されることが可能である。特に、分類子が、特定のサービス(アプリケーション)がアクセスされた元であるメディア・クラウド100の入口ポートを特定することによって、さまざまなサービス・アクセス状況(会議アプリケーション、放送アプリケーションなど)の間で区別を行うことができる。(分散型の)配置アルゴリズムが特定のサービス・アクセス状況に関して(ほとんど)最適な配置を見つけた場合、配置決定は、具体的なサービス・アクセス状況とともに記憶されることが可能である。その結果として、次のときに、格納されているアクセス状況と同様のアクセス状況を分類子が特定した場合、記憶されている配置ロケーションが使用およびセットアップされることが可能である。したがって、前の配置決定に依存することによって、その後の配置決定が加速されることが可能である。
【0083】
典型的には、MC100上で並行して使用される大量の多様なサービス(アプリケーション)700がある。これらのサービス700のそれぞれは、さまざまな入口ポートを介してサービス700およびMC100に到達するさまざまな量のクライアントによって使用されることが可能である。典型的には、アクセス状況における軽微な変化(例えば、(n−1)個の会議クライアントが米国に配置されていて、1個の会議クライアントがドイツから配置されているシナリオと比較した、n個の会議クライアントが米国に配置されているシナリオ)は、ソフトウェア・コンポーネント703の最適な配置は変わらないという結果をもたらす。機械学習に基づく分類は、同じ配置決定を使用してどのアクセス状況が最適にサービス提供されることが可能であるかを特定するために適用されることが可能である。機械学習に基づく分類はまた、同じ配置決定を使用してサービス提供されることが可能である類似したアクセス状況どうしのいわゆる(ε)−ルームを定義する(特定のアクセス状況にまつわる)ローカル・ハイパースフィアの定義/学習を可能にする。ローカル・ハイパースフィアは、それまでにわかっている最適なコンポーネント/ソフトウェア配置を格納しているデータベース・エントリとともに割り振られることが可能である。最適なコンポーネント配置を含むデータベース・エントリを伴うハイパースフィアの割り振りは、オンライン学習手順の一部である。MCリソース管理がそのデータベース・エントリに従って配置をセットアップした後に、(上で概要を説明されているように)分散型のマッピング・アルゴリズムを適用することによって、コンポーネント配置のさらなる改善が達成されることが可能である。改善された配置状況が決定されることが可能である場合、提案されたコンポーネント配置を含むデータベース・エントリが、その改善された配置で上書きされることになり、それによって、連続したオンライン学習プロセスが提供される。
【0084】
オンライン学習プロセスは、(アクセス状況を分類するために使用される)分類子が、1つのローカル・ハイパースフィアをいくつかの異なるローカル・ハイパースフィアへと分割するという結果をもたらすことがある。これは、単一のハイパースフィアによって分類されたアクセス状況に関する一意の(前の)最良の配置ソリューションが、個々のハイパースフィアを伴う別々の配置ソリューションへと分離する場合に、生じることがある。
【0085】
分類は、サービス・タイプ毎に別々に、またはメディア/クラウド・システム100上で稼働しているすべてのサービスに関して単一の分類子を用いて、実行されることが可能である。サービス(またはアプリケーション)タイプは、アクセス状況のタイプ(例えば、(ビデオ会議の場合のように)多対多、(放送の場合のように)一対多、(ポイントツーポイント通信の場合のように)ポイントツーポイントに基づいて定義されることが可能である。代替として、または追加として、サービス・タイプは、領域の考慮事項(大陸、国、都市)に基づいて定義されることが可能である。代替として、または追加として、サービス・タイプは、提供される実際のサービス(例えば、会議、放送など)に基づいて定義されることが可能である。すべてのサービスに関する単一の分類子の場合、競合するサービスどうしの間の対話が考慮に入れられることも可能である。結果として、ローカル・ハイパースフィアの数が著しく増えることがある。
【0086】
サービス・アクセス状況に加えて、(サーバおよびリンク)のリソース割り当て状況が、分類子へのさらなる入力として使用されることが可能である。例として、機械学習(ML)分類子は、下記のことを考慮に入れることができる。
・別々のクライアントからのサービス・アクセス状況
・提供される(クラウド)サービスのタイプおよびそれらのアクセス状況
・サービスがアクセスされる入口および出口クラウド・ポート
・ノード101およびネットワーク・リソースの割り当て、それによって、リソース毎に別々の特性評価タプルが予想されることが可能である;
【0087】
学習フェーズ中に、ML分類子は、等しいまたは同様の配置状況を含む複数のハイパースフィアを構築する。さらに、ML分類子は、複数のハイパースフィアに関して個々のリソース展開決定を決定する。
【0088】
したがって、最適で効率的なアプリケーション・コンポーネント配置決定を可能にするために、機械自己学習システムが使用されることが可能である。MLシステムは、2つの異なるフェーズ、すなわち、学習フェーズおよび実行フェーズにおいて機能する。MLシステムは、MC100の個々のノード101上で実行されることが可能である。
【0089】
学習フェーズ中に、(例えば、特定のノード101上で稼働している)MLシステムは、特定の配置状況を記述する特徴ベクトルを導出するために、メディア・クラウド制御トラフィック・メッセージ(例えば、配置要求、およびリソースに関するメッセージ、ならびに配置決定に関するメッセージ)を分析する。特徴ベクトルは、典型的には、アプリケーション・グラフのタイプ(アプリケーション・コンポーネントの星形グラフ、アプリケーション・コンポーネントの線形グラフ)、アプリケーション・コンポーネントの地理的分散、アプリケーション・コンポーネントどうしの間の接続の属性(例えば、帯域幅、待ち時間等)など、配置状況を記述するさまざまな次元を有する。特徴ベクトルは、特徴ベクトルのさまざまな次元によって形成される特徴空間内に組み込まれることが可能である。特定のアプリケーション配置要求の特徴ベクトルは、特定のコンポーネント・マッピングおよび対応する配置詳細とともに特徴ベクトル・データベース内に格納される。学習フェーズ中に、このシステムは、コンポーネント配置の分類にとって重要である特徴ベクトルの次元およびプロパティーと、すたれていて、したがって省略されることが可能である特徴ベクトルの次元およびプロパティーとの間で区別を行うことを学習する。特徴空間次元のこの削減は、学習プロセスの効率およびメディア・クラウド分類結果の質を高める。
【0090】
学習フェーズの結果として、クラスタ(例えば、コンテンツ分散ネットワーク(CDN)のような、ビデオ会議のようななど)へのメディア・クラウド・アプリケーション・アクセス状況の分類を反映するジオメトリー上の組み込みが得られる。言い換えれば、学習フェーズは、典型的なアプリケーション・アクセス状況に関する複数のクラスタ(それらの特徴ベクトルを介して特定される)を、配置決定とともに提供する。
【0091】
実行フェーズ中には、学習フェーズ中に既知のメディア・クラウド・アプリケーションに関して得られたマッピング結果が、新しいおよび/または未知のメディア・クラウド・アプリケーション配置要求に関するアプリケーション・コンポーネント・マッピングを提案するために活用される。
【0092】
この目的のために、新しいアプリケーション配置要求に関する特徴ベクトルが、学習フェーズに関して使用されたのと同じ方式を採用するアプリケーション配置要求から抽出される。特に、アプリケーション配置要求の特徴ベクトルを決定するために、制御メッセージが分析されることが可能である。次いで、新しいアプリケーション配置要求に関して抽出された特徴ベクトルが、メディア・クラウド特徴空間内に組み込まれる。
【0093】
次いで、ジオメトリー上の考慮によって、特徴空間における以前に学習されたメディア・クラウド配置の最も近い表示、および対応するアプリケーション分類が得られる。結果として、この特徴ベクトルに関する対応する配置詳細を、機械学習フェーズ中にアプリケーション・マッピング情報で満たされているトレーニングされたMC配置データベースから呼び出すことが可能である。
【0094】
結果として、高速かつ効率的な様式で機械学習プロセスから前のメディア・クラウド・アプリケーション・マッピング経験に基づいてメディア・クラウド・マッピングに関する再配置提案が得られる。その結果として、アプリケーション配置要求は、高速かつ効率的な様式で適切なMCノード101に導かれることが可能である。
【0095】
ジオメトリー上の考慮によってアプリケーション配置状況を記述する特徴ベクトルを特定することは、例えば、特徴空間における適切なメトリックを定義することによって、およびそのメトリックの考慮のもとで別々の特徴ベクトルの間の距離を計算することによって、可能である。このメトリックは、別々のベクトル次元に関して別々の重み付けを利用することができ、それによって、学習および実行フェーズ中に別々の次元を強調することができる。
【0096】
メディア・クラウド特徴ベクトルは、アプリケーション、およびメディア・クラウド・インフラストラクチャに対するそのマッピングを特徴付ける下記の例示的な情報を含むことができる。
・アプリケーション・グラフ(例えば、星状グラフ、線形グラフ)内の関係、
・リソースへのアプリケーション・コンポーネントの割り当て、
・アプリケーション・コンポーネントのリソース消費、
・アプリケーション・コンポーネントのジオロケーション、
・クライアント(シンク702、ソース701)の入口/出口ポイント(デバイス)、および/または
・接続属性(帯域幅、待ち時間、損失率、...)。
【0097】
図5は、可能なアプリケーション配置状況の例示的なベクトル空間200を示している。特定のアプリケーション配置状況は、典型的には、特定のアプリケーション配置要求にリンクされる。例示的なベクトル空間200は、3つのベクトル次元201q、v、wを含み、それぞれのベクトル次元は、可能なアプリケーション配置状況の対応する属性を表す。上で示されているように、例示的な属性(またはベクトル次元)は、アプリケーション・グラフ(すなわち、アプリケーション・コンポーネント703の相対的な構成、例えば星状構成で、または線形構成で)、さまざまなアプリケーション・コンポーネント701のリソース消費、アプリケーション700に関するシンク702/ソース701のロケーションなどに関連することができる。したがって、ベクトル空間200におけるポイント(または特徴ベクトル)203は、(特徴ベクトルの別々の次元の値を介して)特定のアプリケーション配置状況を記述する。
【0098】
ベクトル空間200においてアプリケーション配置状況を表すために、属性(またはベクトル次元)201の値は、ベクトル空間200において表されることが可能である数値に関連付けられることが可能である。例として、アプリケーション700に関する別々のシンク702/ソース701のジオロケーションは、2つのベクトル次元201(一方は緯度角度を表し、もう一方は経度角度を表す)に対応することができる。典型的なベクトル空間200は、数百の次元201を有することができるということに留意されたい。
【0099】
学習フェーズ中に、さまざまな配置要求が、分散された様式でMC100によって処理される。配置要求に関与するノード101は、特定の配置要求に関するノード101どうしの間でやり取りされるメッセージを観察することができる。結果として、ノード101は、それらのメッセージから配置要求に関する情報を抽出し、それによって、特定のアプリケーション配置要求を記述する特徴ベクトル203への投入を行うことができる。さらに、ノード101は、やり取りされたメッセージから、最終的な配置詳細205(すなわち、MC100内のどこにアプリケーション・コンポーネントが配置されているかという情報)を学習する。特徴ベクトル203および対応する配置詳細205は、ノード101のデータベース204内に格納されることが可能である。
【0100】
結果として、ノード101は、機械学習のためのトレーニング・データとして使用されることが可能である複数の特徴ベクトル203および対応する配置詳細205を収集する。特に、特徴ベクトル203の複数のクラスタ202を決定するために分類子が使用されることが可能であり、クラスタ202内の特徴ベクトル203は、特徴空間200において相対的に短い距離を有する。言い換えれば、クラスタ202の配置状況どうしは、互いに類似している。示されている例においては、分類子は、EUからの参加者を伴うビデオ会議(VC)アプリケーション要求に関する別のクラスタ202、世界中に分散された参加者を伴うVCアプリケーション要求に関する別のクラスタ202、2人の参加者を伴うVCアプリケーション要求に関する別のクラスタ202、および放送されるTVストリームの視点レンダリングなどのコンテンツ分散ネットワーク(CDN)アプリケーション要求に関する別のクラスタ202を決定している。分類子は、それぞれのクラスタ202に関して平均および/または代表の配置詳細205を決定するように構成されている。これらの平均および/または代表の配置詳細205は、新しい配置要求の配置を加速するためにノード101によって使用されることが可能である。特に、ノード101は、新しい配置要求の特徴ベクトル203を決定することができる。さらに、ノード101は、特徴ベクトル203がクラスタ202内に収まる(またはクラスタ202に近い)かどうかを判定し、次いで、配置要求を処理するためにクラスタ202の平均および/または代表の配置詳細205を使用することができる。
【0101】
図6は、例示的な学習方法400のフローチャートを示している。ノード101は、複数のアプリケーション配置要求の特徴ベクトルへの投入を行うためにMC制御トラフィックをモニタする(ステップ401)。さらに、アプリケーション配置要求に関するマッピング(すなわち配置詳細)が、制御メッセージから抽出され(ステップ402)、データベース内に格納される(ステップ404)。抽出された特徴ベクトルおよび対応するマッピングが、学習モデルのトレーニング・データとして使用される(ステップ403)。例示的な学習モデルは、サポート・ベクター・マシン(SVM)方式を利用する。この学習モデルは、複数のアプリケーション配置要求をクラスタ化するための分類子を適用することができる。そのようなクラスタ化の結果として、特徴ベクトル203の特定の次元が配置目的のために重要である場合があり、その一方で、特徴ベクトル203のその他の次元は配置決定にまったくまたはほとんど影響を及ぼさない場合があるということが観察されることが可能である(ステップ406)。後者の次元は、特徴ベクトル203から除去されることが可能であり、それによって、機械学習方式のおよび配置プロセスの計算上の複雑さが低減される(ステップ406)。最後に、クラスタ202の代表の特徴ベクトル203が特徴空間200内に組み込まれることが可能である(ステップ407)。代表の特徴ベクトル203は、特徴空間200内のハイパースフィアを定義することができ、そのハイパースフィアは、代表の特徴ベクトル203によって記述されている配置状況に類似した配置状況を含み、それらの配置状況は、代表の特徴ベクトル203に関して格納されている配置詳細205に従って処理されることが可能である。
【0102】
図7は、ノード101のデータベース204内に格納されている配置情報を使用する例示的な配置方法500のフローチャートを示している(ステップ501)。ノード101は、新しい配置要求に関連した制御メッセージを観察し、特徴ベクトル203への投入を行うために、抽出された情報を使用し(ステップ502)、特徴ベクトル203は、特徴空間200内に組み込まれる(ステップ503)。その後に、最も近い代表の特徴ベクトル203が、データベース204から決定され(ステップ504)、それによって、新しい配置要求に適している可能性がある配置詳細205が決定される(ステップ505)。新しいアプリケーション要求は、ノード101のデータベース204から得られた配置詳細205に従ってノード101によって処理されることが可能である。その後に、その配置は、本明細書に記載の分散型の配置方式を使用して改善されることが可能である(ステップ506)。更新された配置詳細および元の特徴ベクトル203は、学習方法400におけるさらなるトレーニング・データとして使用されることが可能であるということに留意されたい。
【0103】
本明細書において、クラウド・コンピューティングのためのネットワークおよび対応するコンピューティング・デバイス(ノード)のアーキテクチャが説明された。説明されたアーキテクチャは、アプリケーションのコンポーネントがコンピューティングクラウド内の適切なノードに置かれることを可能にする非集中型のアプリケーション・コンポーネント配置方式の実装を可能にする。さらに、アプリケーション・コンポーネント配置方式をより効果的にするために、機械学習技術が使用される。なぜなら、同様の状況における過去の配置から得られた知識は、新しいアプリケーションのための最適なマッピングを迅速に見つけ出すために使用されることが可能であるためである。説明されたアーキテクチャおよび方法は、増大する需要に対してスケーラブルであり、単一障害点を示さない。さらに、説明されたアーキテクチャは、クラウド・コンピューティングを使用するときに通信ネットワーク内で必要とされる帯域幅のリソースの削減を可能にする。
【0104】
説明および図面は、提案された方法およびシステムの原理を例示するに過ぎないことに留意されたい。したがって、当業者が、本明細書において明示的に説明されていないか、または示されていないが、本発明の原理を具現化し、本発明の精神および範囲内に含まれるさまざまな構成を案出することができることは、理解されるであろう。さらに、本明細書に挙げられたすべての例は、提案された方法およびシステムの原理、ならびに当技術分野の発展のために本発明者らがもたらした概念を読者が理解するのを助ける教示のみを特に目的とするようにもっぱら意図されており、そのような特に挙げられた例および条件に限定されないと解釈されるべきである。さらに、本発明の原理、態様、および実施形態、ならびにそれらの特定の例を説明する本明細書のすべての記述は、それらの均等物を包含するように意図される。
【0105】
さらに、さまざまな上述の方法のステップおよび説明されたシステムのコンポーネントはプログラムされたコンピュータによって実行され得ることに留意されたい。本明細書において、一部の実施形態は、機械またはコンピュータが読むことができ、前記上述の方法のステップの一部またはすべてを実行する命令の機械が実行できるまたはコンピュータが実行できるプログラムを符号化するプログラム・ストレージ・デバイス、例えば、デジタル・データ・ストレージ媒体を包含するようにやはり意図される。プログラム・ストレージ・デバイスは、例えば、デジタル・メモリ、磁気ディスクおよび磁気テープなどの磁気ストレージ媒体、ハード・ドライブ、または光学式に読み取り可能なデジタル・データ・ストレージ媒体である可能性がある。実施形態は、上述の方法の前記ステップを実行するようにプログラミングされたコンピュータを包含するようにやはり意図される。
【0106】
加えて、本特許明細書に記載のさまざまな要素の機能は、専用のハードウェアおよび適切なソフトウェアに関連してソフトウェアを実行することができるハードウェアを使用して提供され得ることに留意されたい。プロセッサによって提供されるとき、機能は、単一の専用のプロセッサ、単一の共有のプロセッサ、または一部が共有される可能性がある複数の個々のプロセッサによって提供される可能性がある。さらに、用語「プロセッサ」または「コントローラ」の明示的な使用は、ソフトウェアを実行することができるハードウェアを排他的に指すと考えられるべきでなく、暗黙的に、限定することなく、デジタル信号プロセッサ(DSP)ハードウェア、ネットワーク・プロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲートアレイ(FPGA)、ソフトウェアを記憶するための読み出し専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、および不揮発性ストレージを含む可能性がある。通常のおよび/またはカスタムのその他のハードウェアも、含まれる可能性がある。
【0107】
最終的に、本明細書の任意のブロック図は、本発明の原理を具現化する例示的な回路の概念図を示すことに留意されたい。同様に、任意のフローチャート、流れ図、状態遷移図、擬似コードなどは、実質的にコンピュータ可読媒体で表現され、したがって、コンピュータまたはプロセッサによって、そのようなコンピュータまたはプロセッサが明示的に示されているか否かにかかわらず実行され得るさまざまなプロセスを表すことが、理解されるであろう。