(57)【特許請求の範囲】
【請求項１】
コンテンツ配信ネットワークの第１セットのコンテンツサーバと、コンテンツプロバイダとを互いに関連付けることで、前記第１セットのコンテンツサーバに前記コンテンツプロバイダをマッピングする段階と、
前記コンテンツプロバイダから、前記コンテンツ配信ネットワークの前記第１セットのコンテンツサーバが配信するコンテンツを受信する段階と、
前記コンテンツプロバイダからの前記コンテンツに関連するネットワークトラフィックを監視する段階と、
前記ネットワークトラフィックに関連付けられる少なくとも１つのメトリックを決定する段階と、
前記少なくとも１つのメトリックに基づいて、前記コンテンツ配信ネットワークの第２セットのコンテンツサーバに前記コンテンツプロバイダをマッピングしなおす段階と、
前記第２セットのコンテンツサーバへと、コンテンツ要求を徐々に誘導する段階と
を備え、
前記マッピングしなおす段階では、前記コンテンツプロバイダにマッピングされた前記コンテンツサーバを識別するバインドマップを調節する方法。
【請求項２】
前記第１セットのコンテンツサーバは、複数の地理的位置にある複数のサーバを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのメトリックは、前記コンテンツサーバの中央処理装置（ＣＰＵ）のオーバヘッド、コンテンツ配信に関連するレイテンシー、前記コンテンツプロバイダにより提供されるコンテンツのサイズ、前記コンテンツプロバイダのライブラリのサイズ、および、前記コンテンツプロバイダにより提供されるコンテンツの重要度の少なくとも１つを含む、請求項１または２に記載の方法。
【請求項４】
前記少なくとも１つのメトリックからなる複合メトリックを生成する段階をさらに備える、請求項１から３の何れか１項に記載の方法。
【請求項５】
前記第２セットのコンテンツサーバに前記コンテンツプロバイダをマッピングしなおす段階は、
前記複合メトリックが閾値を超える場合にマッピングをしなおす段階を有する、請求項４に記載の方法。
【請求項６】
コンテンツを提供する複数のコンテンツサーバとコンテンツプロバイダとを互いに関連付けることで前記複数のコンテンツサーバにマッピングされた前記コンテンツプロバイダからの前記コンテンツに関連するネットワークトラフィックを監視するトラフィックモニタと、
前記ネットワークトラフィックに関連付けられる少なくとも１つのメトリックを生成するメトリック決定モジュールと、
前記コンテンツプロバイダにマッピングされたコンテンツサーバの数を調節する閾値調節モジュールと、
前記コンテンツプロバイダにマッピングされた前記コンテンツサーバを識別するバインドマップと
を有する電子動的バインドシステムを備え、
前記電子動的バインドシステムは、前記コンテンツプロバイダに新たにバインドされたコンテンツサーバへと、コンテンツ要求を徐々に誘導するコールド・ノード保護モジュールをさらに有するシステム。
【請求項７】
前記新たにバインドされたコンテンツサーバがオンラインになると、前記新たにバインドされたコンテンツサーバは、人工的に高いロードを報告して、前記新たにバインドされたコンテンツサーバでのコンテンツ要求の突然の集中を防止する、請求項６に記載のシステム。
【請求項８】
前記バインドマップは、前記コンテンツプロバイダにバインドすることが可能な最大数のコンテンツサーバのセットを識別する、請求項６または７に記載のシステム。
【請求項９】
前記閾値調節モジュールは、前記コンテンツサーバの数を調節するときにヒステリシスを提供する、請求項６から８の何れか１項に記載のシステム。
【請求項１０】
前記メトリック決定モジュールは、前記コンテンツサーバの中央処理装置のオーバヘッド、コンテンツ配信に関連するレイテンシー、前記コンテンツプロバイダにより提供されるコンテンツのサイズ、前記コンテンツプロバイダのライブラリのサイズ、および、前記コンテンツプロバイダにより提供される重要度を含む群から選択される１以上のメトリックを決定する、請求項６から９の何れか１項に記載のシステム。
【請求項１１】
前記バインドマップが階層状である、請求項６から１０の何れか１項に記載のシステム。
【請求項１２】
実行されるとコンピュータにプロセスを実行させるコンピュータ実行可能命令を格納しているコンピュータ可読媒体であって、
１以上のサーバクラスタは各々、コンテンツプロバイダからのコンテンツを配信するよう設定されている１以上のサーバを含み、
前記プロセスは、
前記１以上のサーバクラスタを前記コンテンツプロバイダに関連付ける段階と、
前記コンテンツプロバイダに、１以上のサーバクラスタからなる第１セットにおける少なくとも１つのサーバを関連付ける段階と、
前記コンテンツに対する要求を受けると、前記コンテンツを、前記１以上のサーバクラスタからなる第１セットから配信する段階と、
前記要求を受けて生成されたネットワークトラフィックを監視する段階と、
１以上のネットワークメトリックを決定する段階と、
前記１以上のネットワークメトリックに基づき、前記コンテンツプロバイダからの前記コンテンツを配信するよう設定するコンテンツサーバの数を調節する段階と、
前記コンテンツプロバイダに新たに関連付けられたコンテンツサーバに対して、コンテンツ要求を徐々に増加させる段階と
を含む、コンピュータ可読媒体。
【請求項１３】
前記１以上のサーバクラスタは地理的に分散している、請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記１以上のサーバクラスタは、前記コンテンツプロバイダのクライアントの位置に基づき選択される、請求項１２または１３に記載のコンピュータ可読媒体。
【請求項１５】
前記１以上のネットワークメトリックは、前記コンテンツサーバの中央処理装置のオーバヘッド、コンテンツ配信に関連するレイテンシー、前記コンテンツプロバイダにより提供されるコンテンツのサイズ、前記コンテンツプロバイダのライブラリのサイズ、および、前記コンテンツプロバイダにより提供されるコンテンツの重要度を含む、請求項１２から１４の何れか１項に記載のコンピュータ可読媒体。
【請求項１６】
前記プロセスは、前記１以上のメトリックの組み合わせである複合値を生成する段階をさらに含む、請求項１２から１５の何れか１項に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示されている実施形態は、概してコンテンツ配信ネットワーク（ＣＤＮ）のキャパシティ管理に係る。より詳しくは、ここに記載する実施形態は、ＣＤＮ上のサーバにＣＤＮの顧客をバインドすることに関する。
【０００２】
特許協力条約（ＰＣＴ）特許出願は、２０１０年５月４日提出の「コンテンツ配信に利用される動的バインド」という名称の米国出願番号第１２／７７３，０８６の優先権を請求しており、この全体をここに参照として組み込む。
【背景技術】
【０００３】
インターネットおよび所謂ワールドワイドウェブ（ＷＷＷ）は、ユビキタス時代に入った。近年は、数万の所謂コンテンツプロバイダ（発行元：publisher）が、インターネット（および特にＷＷＷ）を利用して、世界中の数万、数十万のクライアントにあらゆる種類のコンテンツを提供するようになっている。
【０００４】
コンテンツの一部または全てを提供する負担から解放されるべく、多くのコンテンツプロバイダが、所謂コンテンツ配信ネットワーク（ＣＤＮ）と契約するようになってきている。ＣＤＮを利用すると、コンテンツプロバイダのコンテンツの一部（または全て）が、コンテンツプロバイダのサーバからではなくて、ＣＤＮから（つまりＣＤＮの１以上のサーバから）、クライアント（コンテンツを要求するユーザ）に提供されるようになる。さらにキャッシュＣＤＮでは、提供されるコンテンツを、該コンテンツの提供前に、または該コンテンツの具体的な要求を受けて、ＣＤＮサーバの一部または全てにもキャッシュすることができる。
【０００５】
ここで利用されるコンテンツという用語は、何を表していたとしても（regardless of its representation and regardless of what it represents）、任意の形態の任意の種類のデータを意味する。コンテンツには、これらに限定はされないが、静的および／または動的画像、文字、音声コンテンツ（ストリーミングされた音声、ビデオコンテンツを含み、ストリーミングされたビデオ、ウェブページ、コンピュータプログラム、文書、ファイル等を含む）が含まれてよい。一部のコンテンツは、マークアップ言語（例えばハイパーテキスト・マークアップ言語（ＨＴＭＬ）および拡張可能マークアップ言語（ＸＭＬ））を利用して、他のコンテンツに埋め込まれていても良い。コンテンツには、特定の要求に応じて特別に作成、形成、または構成された（composed）コンテンツが含まれてよい。「リソース」という用語は、ここではコンテンツという意味で利用される場合がある。
【０００６】
ＣＤＮは配信コンテンツプロバイダのコンテンツに関するサービスを提供するので、コンテンツプロバイダは、ここでは、ＣＤＮの顧客またはＣＤＮプロバイダの顧客と称される場合がある。通常、ＣＤＮプロバイダは、コンテンツサーバまたはサーバクラスタ（複数のサーバからなる複数のグループ）を、ＣＤＮ内部またはその周辺の複数の位置で維持、稼動する。サーバまたはクラスタは、コンテンツを要求するユーザの近くに該コンテンツを格納することができるように、複数の異なる地理的領域（例えば都市部）に位置している。ＣＤＮはしばしば、ネットワークの端部のサーバ（所謂「エッジサーバ」）およびネットワークのコア内のサーバ（所謂「配信元サーバ：origin server」）を含む。配信元サーバは、エッジサーバにコンテンツを格納したり取得したり、提供したりしてよく、エッジサーバは、コンテンツを後の配信に備えてキャッシュすることができる。
【０００７】
通常、エッジサーバは、コンテンツを要求するユーザの近くにある。この構成では、要求されているコンテンツが近隣のエッジサーバにある場合には、要求を発したユーザに対して、より迅速にまたは効率的に配信することができる。理想的な世界では、可能な全てのコンテンツが近隣のエッジサーバに格納されるだろうが、現実には、コンテンツサーバの稼動に関するリソースおよびコストが限られていることから、このような構成は非現実的である。従って実際の稼動においては、エッジサーバに格納するために選ぶコンテンツの量を制限する。最も需要のある（例えばより頻繁に要求される）コンテンツのみをエッジサーバに格納することが多い。コンテンツの需要が変化すると、エッジサーバの限られた格納スペースにおいて、あまり需要のないコンテンツが、より需要のあるコンテンツに置き換えられる。
【０００８】
ＣＤＮ運営業者は、各顧客のコンテンツの配信を処理するために利用すべきＣＤＮサーバ、および、ＣＤＮサーバのキャパシティ量を判断する必要がある。過剰なサーバキャパシティを顧客に割り当てるとサーバが比較的アイドル状態になり、過小なサーバキャパシティを顧客に割り当てるとサーバには過ロードがかかる事態が想定される。さらに事態を複雑にするのが、配信するコンテンツオブジェクトのサイズが異なると、ロードの特性が異なってくる、ということである。さらに、顧客のコンテンツに対する需要が変化すると、この顧客のコンテンツを処理するサーバおよびサーバキャパシティ量に関する初期の判断が、あてはまらなくなる。
【発明の概要】
【０００９】
ここに開示する実施形態は、概して、ＣＤＮの顧客に割り当てるサーバキャパシティを動的に決定することに関する。実施形態はさらに、ＣＤＮ顧客をＣＤＮ内の１以上のサーバに関連付けるための方法およびシステムを含む。ＣＤＮ顧客をＣＤＮ内の１以上のサーバに関連付けることを、ここではバインドと称することにする。ある顧客がサーバまたはサーバクラスタにバインドされると、このサーバまたはサーバクラスタの少なくとも一部が、顧客のコンテンツのクライアントへの配信を処理する。バインドは、顧客のコンテンツまたは顧客のコンテンツに関連するトラフィックのうち１以上の特性の関数として動的に変化しうる。例えば、顧客のライブラリのサイズおよび／または顧客のコンテンツの要求数が、この顧客にバインドされるサーバ数に影響を与える。
【００１０】
コンピュータプログラムプロダクトの一部の実施形態には、コンピュータ実行可能命令を格納する１以上のコンピュータ可読媒体が含まれる。コンピュータ実行可能命令が実行されると、汎用コンピュータは、１以上のアルゴリズムを実行する。
【図面の簡単な説明】
【００１１】
【図１】一実施形態において動的バインドを実装するのに適したネットワーク環境の一例を示す。
【００１２】
【図２】複数のサーバに対して１つのコンテンツプロバイダ顧客をバインドする１つの可能性のある例を示すバインドマップである。
【００１３】
【図３】一実施形態において動的バインドを実行する電子動的バインドシステムの一例を示す。
【００１４】
【図４】一実施形態においてロードメトリックの関数としてネットワーク利用を示す理論モデルを示すグラフである。
【００１５】
【図５】一実施形態において動的バインドを実行するためのアルゴリズムの一例を示すフローチャートである。
【００１６】
【図６】ここに示す実施形態における、動的バインドアプリケーションおよびプロセスで符号化されたコンピュータシステムのブロック図の一例である。
【発明を実施するための形態】
【００１７】
図１は、一実施形態において動的バインドを実装するのに適したネットワーク環境１００の一例を示す。バインドとは、コンテンツプロバイダ（例えばコンテンツ配信ネットワーク（ＣＤＮ）の顧客）を１以上のＣＤＮサーバまたはクラスタにマッピングすることをいう。動的バインドとは、ＣＤＮ顧客のコンテンツまたは関連トラフィックに関するネットワークメトリックの変化に応じて、自動的に適合するバインドのことである。図１の図では、ＣＤＮ１０２は、１以上のサーバクラスタ１０４を含む。各サーバクラスタ１０４は、１以上のユーザクライアント１０８からのコンテンツ要求に応答するよう設定されている１以上のサーバコンピュータまたはラック１０６（図示の便宜上クラスタ１０４Ｎのみに示されている）を含む。ラックは通常、複数のサーバ（例えば２４個のサーバ）を含む。
【００１８】
例示している実施形態では、コンテンツプロバイダが、ＣＤＮ１０２の顧客である顧客ネットワーク１１４を運営している。コンテンツプロバイダサーバ１１２上のコンテンツは、ＣＤＮ１０２のサーバクラスタ１０４に伝播することができ、一実施形態では、このコンテンツをクラスタ１０４のサーバ１０６にキャッシュする。
【００１９】
クライアント１０８は、顧客ネットワーク１１４を運営しているコンテンツプロバイダにより提供されるコンテンツを要求することができる。顧客ネットワーク１１４は、１以上のドメイン名サーバ（ＤＮＳ）システム１１６を含んでいる。ＤＮＳシステム１１６は、要求されているコンテンツを配信することができるＣＤＮ１０２内のサーバ（例えばサーバ１０６）またはクラスタ（例えばクラスタ１０４Ａ）にコンテンツ要求を方向付ける。概して、クライアントコンピュータ１０８が生成するハイパーテキスト転送プロトコル（ＨＴＴＰ）要求等の要求は、ＤＮＳシステム１１６で受信される。ＤＮＳシステム１１６は、要求されているコンテンツを提供することができるサーバ１０６またはクラスタ１０４のアドレスを探すための要求で、ユニフォームリソースロケータ（ＵＲＬ）名を利用する。このＤＮＳ検索（lookup）は、ＤＮＳシステム１１６が実行する検索に加えて、またはこれに関連して、ＣＤＮ１０２内で（ＣＤＮ  ＤＮＳ設定の一環として）、行われうる。
【００２０】
コンテンツプロバイダは、通常、ＣＤＮ１０２内の１以上の選択されたクラスタ１０４またはサーバ１０６に関連づけられている、またはバインドされている。コンテンツプロバイダのコンテンツは、該コンテンツプロバイダがバインドされているクラスタ１０４またはサーバ１０６により配信される。例えば、例示されている実施形態では、クラスタネットワーク１１４が、クラスタグループ１１８内のクラスタ１０４Ａおよびクラスタ１０４Ｂにバインドされている、としてよい。
【００２１】
操作中に、ＤＮＳシステム１１６は、１以上のロードメトリック等の情報をクラスタ１０４から受信する。ＤＮＳシステム１１６は、ロードメトリックを利用して、要求されているコンテンツを提供すべきクラスタ１０４の決定を促す。以下でさらに詳しく述べるように、ＤＮＳシステム１１６は、コンテンツプロバイダがどのクラスタ１０４またはサーバ１０６にバインドされているかを判断することもできる。この点に関しては、ＤＮＳシステムは、ＣＤＮ１０２内のクラスタ１０４および／またはサーバ１０６へのコンテンツプロバイダのバインドを動的に適合させることのできる動的バインドシステムを含んでいる。
【００２２】
一実施形態では、サーバ１０６は、ＤＮＳシステム１１６にメトリックを報告する。ＤＮＳシステム１１６は、アルゴリズムに従ってバインドを調節するための動的バインド機能を含む。一実施形態では、動的バインドアルゴリズムは複数のメトリックを組み合わせて、この組み合わせに基づいてバインドを調節する。
【００２３】
一実施形態では、コンテンツまたはトラフィックの特性が変化すると、顧客ネットワーク１１４の顧客は、選択されたサーバ１０６またはクラスタに対して動的にバインドされてよい。例えば、サーバのロードが増えたり、ライブラリのサイズが増えたりすると、顧客のネットワーク１１４に対して、より多くのサーバがバインドされてよい。逆に、ロードが低減したり、ライブラリのサイズが減ったりすると、顧客にバインドされるクラスタ内のサーバ数またはクラスタ数が減ることもある。このようにして、格納スペース、プロセッサ速度または帯域幅等のサーバリソースを、自動的に効率的に割り当てることができる。
【００２４】
特定の顧客に対して選択されたバインドは、さらに地理的考慮に基づいていてもよい。顧客は、特定の１以上の地理的領域に制限されてよい。例えば、ある顧客が、アメリカ合衆国（ＵＳ）のみにクライアントを有している場合を考える。この例では、この顧客は、ＵＳのクラスタにバインドされ、世界の他の領域のクラスタにはバインドされない。別の例として、顧客がアメリカ合衆国の西部のみにクライアンを有する場合を考える。この場合、この顧客は、アメリカ合衆国の西部のクラスタのみにバインドされてよい。
【００２５】
ある顧客向けに選択されるバインドは、クラスタで利用可能なインフラストラクチャの種類に応じて決められる。あるクラスタは、あるサーバ上に、他のサーバ上にはない特別なハードウェアを含む場合がある。一例では、あるサーバが、コンテンツのスモールオブジェクトを配信するのに適したフラッシュメモリ（例えばフラッシュ固体ドライブ（flash solid state drive：ＳＳＤ））を有している。この例では、数多くスモールオブジェクトを発行する顧客を、フラッシュメモリを有するクラスタまたはサーバにバインドすることができる。別のサーバまたはクラスタを、ある種類のコンテンツを提供するある顧客にバインドするときには、他のハードウェアまたはソフトウェア特徴をサーバまたはクラスタに設けることもできる。
【００２６】
図２は、１つの可能性のある実施形態におけるバインドのグラフ（binding graph）２００の一例を示す。バインドのグラフ２００は、顧客Ａに対する最大のサーバ割り当てを含んでおり、１０箇所の位置に分割されている（例えば位置1から位置１０）。これら位置は、ロサンゼルス、ニューヨークシティ、ロンドン等といった都市部の位置に対応していてよい。複数のサーバが各位置にあり、顧客Ａに対する割り当てが可能である。バインドマップ２００に示されているサーバは、顧客Ａのコンテンツおよび関連するトラフィックの特性に従って顧客Ａに割り当てられる。図２に示す例では、各位置に１０個のサーバからなるクラスタが存在している。もちろん、実際の運営では、位置およびサーバの数が図２に示すものと大小する場合がある。
【００２７】
バインドの一例では、顧客Ａが、初期値として、ネットワークサーバキャパシティの１０％を割り当てられてもよい。このバインドでは、各位置で１つずつサーバを顧客Ａに割り当てることができるだろう。例えば顧客Ａが、最初、サーバ１０、サーバ２０、サーバ３０、サーバ４０、サーバ５０、サーバ６０、サーバ７０、サーバ８０、サーバ９０、およびサーバ１００とバインドされている、としてよい。トラフィックモニタは、サーバおよびコンテンツと関連付けられている１以上のメトリックを監視している。メトリックが変化すると、顧客Ａに対するバインドを動的に変化させてよい。例えば、決定されている閾値をロードが上回ったときには、顧客Ａに、ネットワークサーバキャパシティの２０％を割り当てて良い。この場合には、顧客Ａは、各位置で２つのサーバとバインドされてよい。
【００２８】
図３は、一実施形態において動的バインドを実行する電子動的バインドシステム３０２の一例を示す。電子バインドシステム３０２は、図６に示し後述する汎用コンピュータ等であるがこれに限定はされない１以上のコンピューティングデバイス内に実装することができる。電子動的バインドシステム３０２は、クラスタ／サーバ識別子（ＩＤ）３０４、顧客ＩＤ３０６、バインドマップ３０８、トラフィックモニタ３１０、メトリック決定モジュール３１２、閾値調節モジュール３１４、および、コールド・ノード保護モジュール３１６等の、複数の機能モジュールおよびデータを含む。
【００２９】
クラスタ／サーバＩＤ３０４は、ＣＤＮで利用可能なコンテンツサーバおよび／またはクラスタの識別子のリストを含む。クラスタ／サーバＩＤ３０４は、例えば都市部ごと、といった一定の様式に組織化されてよい。顧客ＩＤ３０６は、ＣＤＮの顧客の識別子（例えば名称）のリストを含む。バインドマップ３０８は、顧客ＩＤ３０６のうちの各顧客ＩＤを、クラスタ／サーバＩＤ３０４のうちの１以上のクラスタ／サーバＩＤに関連付けることができる。バインドマップ３０８は、コンテンツ配信メトリックが変わると、調節されることがある。
【００３０】
トラフィックモニタ３１０は、コンテンツ配信に関連するネットワークトラフィックを監視する。一実施形態では、トラフィックモニタ３１０は、各サーバおよび／またはクラスタで取り扱われるコンテンツ要求を収集する。メトリック決定モジュール３１２は、トラフィックモニタ３１０からのネットワークトラフィックデータを利用して、１以上のコンテンツ配信メトリックを生成する。決定されうるメトリックの例には、中央処理装置（ＣＰＵ）のオーバヘッド、帯域幅、レイテンシー、コンテンツの需要度、ライブラリのサイズ、およびコンテンツのサイズ（例えばファイルサイズ、オブジェクトサイズ等）が含まれるが、これらに限定はされない。
【００３１】
メトリック決定モジュール３１２の一部の実施形態では、ロードの監視も利用する。一部の実施形態では、全てのトランザクションのＣＰＵオーバヘッドが決定される（例えばスモールオブジェクトの顧客）。一部の実施形態では、メトリック決定モジュール３１２は、ディスクから（off disk）コンテンツをどのくらい速く取得することができるかを判断する（例えばラージオブジェクトの顧客）。
【００３２】
一部の実施形態では、メトリック決定モジュール３１２は、複数のメトリックの組み合わせである複合メトリックを生成するよう構成されてもよい。例えばメトリック決定モジュール３１２は、各顧客からのコンテンツに関するＣＰＵオーバヘッド、レイテンシー、コンテンツサイズ、または需要度の重み付け平均を生成することができる。
【００３３】
閾値調節モジュール３１４は、メトリック決定モジュール３１２からのメトリックに基づいて、ネットワークの割合の閾値を調節する。例えば、ＣＤＮがある顧客に対してネットワークトラフィック全体のＸ％を超える割合で、（または一部の実施形態ではこれ未満の割合で）配信を行っている場合、この顧客のバインドを調整して、トラフィックのＸ％程度の提供を行って（sufficient for X% of traffic）、ＣＤＮの周辺にトラフィックを分散することで、「ホットスポット」を回避する。例えば、帯域幅がその顧客のコンテンツに対して特に高い位置に、より多くのサーバが含まれるように、顧客のバインドを調節してよい。
【００３４】
一実施形態では、閾値調節モジュール３１４は、予測（anticipatory）調節アルゴリズムを利用する。この実施形態では、クラスタ／サーバマッピングを、ある顧客に関するトラフィックが実際に変化する前に作成しておく。例えば、特定の位置においてある顧客のコンテンツ要求が増えると予想して、この顧客に対してより多くのクラスタをバインドしておく、といったことができる。
【００３５】
コールド・ノード保護モジュール３１６は、あるコンテンツプロバイダに新たに関連付けられたコンテンツサーバに関する機能を提供するものである。一実施形態では、コールド・ノード保護モジュール３１６は、徐々に、コンテンツプロバイダに新たにバインドされたコンテンツサーバに、コンテンツ要求が行くようにする。つまり、コンテンツサーバが最初、あるコンテンツプロバイダにバインドされていたとする。しかし、このコンテンツサーバの受信するコンテンツ要求の数が限られていることから、要求処理および要求されたコンテンツのキャッシュへの充填処理を、徐々に新たなコンテンツサーバに担わせるようにする、ということである。
【００３６】
一実施形態では、自動コールド・ノード保護モジュール３１６が、新たに追加されるサーバまたはクラスタに対するロードを自動的に低減させて、コンテンツ要求の突然の集中（barrage）を防止する。新たなサーバ／クラスタは、オンラインになると、コンテンツ要求の突然の集中を防止する目的で、人工的に高いロードを報告する。時間が経って、この新たなサーバ／クラスタがより多くのコンテンツをキャッシュするようになると、このサーバ／クラスタは、報告するロードの量を減らす。この新たなサーバ／クラスタは、要求に対する応答に関するメトリックを自動決定することができる（例えば新たなオブジェクト要求（未キャッシュのもの）のカウント、全キャッシュ効率、応答時間等）。削減係数（shed factor）を利用することもできる。一般的には、削減係数は、本来はサーバ／クラスタに送られたはずだが（つまり、ネットワークがクライアントおよびロードに近いので）、そうならずに、その位置から二次的なサーバ／クラスタへと送られ削減されてしまったトラフィック量に関している。例えば、削減係数が５０％に設定されている場合、ある特定のサーバ／クラスタに送られるべきであった要求の半分のみが、実際にはこの特定のサーバ／クラスタに送られる。例えば、キャッシュ効率が８０％未満に低下すると、サーバ／クラスタの性能をチェックする。この処理を行うことで、手動の環境において、サーバまたはクラスタを、人工的に高い報告モードであり続けることがないようにすることができる。
【００３７】
図４は、一実施形態においてロードメトリックの関数としてネットワーク利用を示す理論モデル４００を示すグラフである。モデル４００は、ある顧客（顧客Ｎ）のメトリックが変化した場合の、サーバキャパシティ閾値の推移の一例を示している。ロードメトリックは、１以上のメトリック（例えばＣＰＵオーバヘッド、データ取得速度、レイテンシー、重要度、その他）の組み合わせである複合メトリックであってよい。
【００３８】
この例の実施形態では、最初に閾値ＭＡＸ１  ４０２が顧客Ｎに割り当てられている。言い換えると、最初に顧客Ｎに割り当てられている最大サーバキャパシティが、ネットワークキャパシティ全体のＭＡＸ１パーセント、ということになる。ロードメトリックが増えるにつれて、閾値が上方へ移行して（４０４）、新たな閾値ＭＡＸ２（４０６）となる。
【００３９】
一部の実施形態では、移行４０４は、実際にさらなるサーバ容量が必要になる前に生じることもある。これらの実施形態では、最大サーバキャパシティの必要性が予測される。ロードメトリックが再度低下すると、閾値はＭＡＸ１  ４０２へと戻る。
【００４０】
一部の実施形態では、ヒステリシスを利用して、サーバキャパシティ閾値を移行させる（４０４）。ヒステリシスにより、サーバキャパシティ閾値がちょこちょこと（jerky）変化しないようにすることができる。
【００４１】
図５は、一実施形態の動的バインドアルゴリズム５００を示すフローチャートである。動的バインドアルゴリズム５００は、システム（図３の動的バインドシステム３０２または１以上の他のシステム）によって実行されてよい。
【００４２】
追加処理５０２により、顧客レジストリに新たな顧客が追加される（例えば図３の顧客ＩＤ３０４参照）。レジストリには、自身のコンテンツ配信にコンテンツ配信ネットワーク（ＣＤＮ）を利用している顧客の識別子が含まれている。一実施形態では、追加処理５０２により、顧客レジストリに新たな顧客の識別子が追加されて、初期値のサーバキャパシティ閾値が選択される。
【００４３】
サーバキャパシティ閾値が選択された後で、追加処理５０２によって、新たな顧客は、選択されたサーバキャパシティ閾値に対応する１以上のＣＤＮサーバまたはクラスタからなる初期セットにバインドされる。新たな顧客を、１以上のＣＤＮサーバまたはクラスタからなる初期セットに関連付ける処理では、新たな顧客ＩＤを１以上の初期ＣＤＮサーバまたはクラスタのＩＤに関連付ける処理が行われても良い。顧客とサーバとのバインドの例は、図２のバインドのグラフに示されている。クラスタまたはサーバの初期セットは、初期格納レベルを提供するよう選択されてよく、ＣＤＮの周辺の幾つかの地理的位置における初期値のロードに対応していてよい。加えて、一実施形態では、各顧客が、異なるクラスタまたはサーバからなる初期セットを有している。
【００４４】
受信処理５０４では、処理５０２で追加された顧客から１以上のコンテンツ要求が受信される。コンテンツを求めるコンテンツ要求が複数受信されると、決定処理５０６で、コンテンツプロバイダに関連付けられている利用メトリックを判断する。メトリックは、１以上のメトリック（例えば要求されているファイルの数、要求されているファイルのサイズ、要求されているデータの総量等）の組み合わせであってよい。一実施形態では、決定処理５０６において、これらメトリックに基づき、コンテンツプロバイダに関連付けられている全ＣＤＮ帯域幅の割合を決定する。
【００４５】
処理５０６で決定されたＣＤＮ帯域幅の割合に基づいて、調節処理５０８で、コンテンツプロバイダに関連付けられている最大サーバキャパシティ閾値が調節される。調節処理では、ヒステリシスアルゴリズムの利用により閾値間の調節を円滑に行ってよい。ヒステリシスパラメータは設定可能である。上述したように、閾値とは、コンテンツプロバイダに割り当てられるＣＤＮ格納の上限を表しているが、一実施形態では閾値が下限を表していてもよい。閾値は、そのコンテンツプロバイダにバインドされているクラスタまたはサーバ数を決定するために利用される。通常、処理５００はＣＤＮの各顧客について継続して繰り返される。
【００４６】
図６は、本発明の実施形態を実装または実行することのできるコンピュータシステム６００の概略図である。例えば、１以上のコンピューティングデバイス６００は、ある顧客を、クラスタまたはサーバの初期セットにバインドして、顧客のコンテンツに関連するトラフィックを監視して、この顧客を、１以上のメトリックに応じて、クラスタまたはサーバの別のセットにバインドするように設定されていてよい。一般的には、コンピュータシステム６００は、汎用コンピュータ（デスクトップ、ラップトップ、またはサーバコンピュータ）、または専用コンピュータ（例えばエンベデッドシステム）を含む任意の数のコンピューティングデバイスであってよい。
【００４７】
本例では、コンピュータシステム６００は、バス６０１（インターコネクト）、少なくとも１つのプロセッサ６０２、少なくとも１つの通信ポート６０３、メインメモリ６０４、取り外し可能格納媒体６０５、読み出し専用メモリ６０６、および大容量ストレージ６０７を含むことができる。プロセッサ６０２は、Ｉｎｔｅｌ（登録商標）Ｉｔａｎｉｕｍ（登録商標）またはＩｔａｎｉｕｍ２（登録商標）プロセッサ、ＡＭＤ（登録商標）Ｏｐｔｅｒｏｎ、またはＡｔｈｌｏｎ  ＭＰ（登録商標）プロセッサ、またはＭｏｔｏｒｏｌａ（登録商標）ラインのプロセッサ等の任意の公知のプロセッサであってよい。
【００４８】
通信ポート６０３は、モデムに基づくダイアルアップ接続で利用されるＲＳ−２３２ポート、１０／１００Ｅｔｈｅｒｎｅｔ（登録商標）ポート、銅または繊維を利用するギガビットポート、またはＵＳＢポートのうちの任意のものであってよいが、これらに限定もされない。通信ポート６０３は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはコンピュータシステム６００が接続する任意のネットワーク等のネットワークに応じて選択されてよい。コンピュータシステム６００は、周辺デバイス（例えば表示スクリーン６３０、入力デバイス６１６）と、これに限定もされないが入出力（Ｉ／Ｏ）ポート６０９等を介して接続可能であってよい。
【００４９】
メインメモリ６０４は、ランダムアクセスメモリ（ＲＡＭ）であってもよいし、技術分野で公知の任意の他の動的格納デバイスであってもよい。読み出し専用メモリ６０６は、プロセッサ６０２に対する命令等の静的な情報を格納するための、プログラム可能読み出し専用メモリ（ＰＲＯＭ）チップ等の任意の静的格納デバイスであってよい。大容量ストレージ６０７は、情報および命令を格納するために利用することができる。例えば、スカジー（ＳＣＳＩ：Small Computer Serial Interface）ドライブのＡｄａｐｔｅｃ（登録商標）ファミリー等のハードディスク、光ディスク、ＲＡＩＤ（Redundant Array of Independent Disks）ドライブのＡｄａｐｔｅｃ（登録商標）ファミリー等のＲＡＩＤ等のディスクアレイ、または、その他の任意の大容量格納デバイスを利用することができる。
【００５０】
バス６０１は、プロセッサ６０２を、他のメモリ、格納および通信ブロックに、通信可能に連結する。バス６０１は、利用する格納デバイスに応じて、ＰＣＩ／ＰＣＩ−Ｘ、ＳＣＳＩ，またはユニバーサルシリアルバス（ＵＳＢ）に基づくシステムバス（またはその他）であってよい。取り外し可能格納媒体６０５は、任意の種類の外部ハードドライブ、フロッピー（登録商標）ドライブ、ＩＯＭＥＧＡ（登録商標）ジップドライブ、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ等であってよい。
【００５１】
ここに記載される実施形態は、コンピュータ（その他の電子デバイス）にプロセスを行わせるために利用することができる命令を格納した機械可読媒体を含みうるコンピュータプログラムプロダクトとして提供されてよい。機械可読媒体は、これらに限定はされないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ，光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード、光カード、フラッシュメモリ、その他の、電子命令の格納に適した種類の媒体／機械可読媒体を含んでよい。さらに、ここに記載する実施形態は、コンピュータプログラムプロダクトとしてダウンロードすることもでき、ここで、プログラムは、搬送波その他の伝播媒体で具現化されるデータ信号によって、通信リンク（例えばモデムまたはネットワーク接続）を介して、遠隔コンピュータから、要求を発するコンピュータへと転送されてよい。
【００５２】
示されているように、メインメモリ６０４は、ここで記載する機能をサポートする動的バインドアプリケーション６５０−１で符号化される。例えば、動的バインドアプリケーション６５０−１は、バインドマップ、トラフィックモニタ、閾値調節モジュール、および、メトリック決定モジュールを含むことができる。動的バインドアプリケーション６５０−１（および／またはここで記載するその他のリソース）は、ここに記載する別の実施形態における処理機能をサポートするデータおよび／または論理命令（例えば、メモリ、その他、ディスク等のコンピュータ可読媒体に格納されているコード）等のソフトウェアコードとして具現化されてよい。
【００５３】
一実施形態の処理中に、プロセッサ６０２は、バス６０１を利用してメインメモリ６０４にアクセスして、動的バインドアプリケーション６５０−１の論理命令を起動する、走らせる、実行する、解釈する、または行う（launch, run, execute, interpret or otherwise perform）。動的バインドアプリケーション６５０−１の実行によって、動的バインドプロセス６５０−２の処理機能が生成される。言い換えると、動的バインドプロセス６５０−２は、コンピュータシステム６００内のプロセッサ６０２内で、またはこの上で実行される動的バインドアプリケーション６５０−１の一以上の部分を表している。
【００５４】
ここで記載した、処理を実行する動的バインドプロセス６５０−２に加え、本明細書の他の実施形態には、動的バインドアプリケーション６５０−１自身（つまり、未実行の、または、未実装の論理命令および／またはデータ（un-executed or non-performing logic and/or data））が含まれてよい点にも留意されたい。動的バインドアプリケーション６５０−１は、フロッピー（登録商標）ディスク、ハードディスク等のコンピュータ可読媒体（例えばレポジトリ）、または光媒体に格納されてよい。他の実施形態では、動的バインドアプリケーション６５０−１はさらに、ファームウェア、読み出し専用メモリ（ＲＯＭ）等のメモリのタイプのシステムに格納されてもよく、またはこの例では、メインメモリ６０４内の（例えばランダムアクセスメモリ（またはＲＡＭ）内の）実行可能コードとして格納されてもよい。例えば、動的バインドアプリケーション６５０−１は、取り外し可能格納媒体６０５、読み出し専用メモリ６０６、および／または、大容量格納デバイス６０７に格納されてもよい。
【００５５】
コンピュータシステム６００がサポートする機能の例（より詳しくは、動的バインドアプリケーション６５０−１および動的バインドプロセス６５０−２に関する機能）については、図１から図５を参照して前に詳述したとおりである。
【００５６】
これらの実施形態に加え、さらに、本明細書の他の実施形態には、プロセッサ６０２内で動的バインドアプリケーション６５０−１を動的バインドプロセス６５０−２として実行することも含まれている。従って当業者であれば、コンピュータシステム６００に、割り当ておよびハードウェアリソースを制御するオペレーティングシステム等の、他のプロセスおよび／またはソフトウェアおよびハードウェアコンポーネントが含まれうることを理解する。
【００５７】
ここで説明したように、本発明の実施形態は、様々な段階および処理を含んでいる。これら様々な段階は、ハードウェアコンポーネントによる実行が可能であり、または、該命令でプログラミングされた汎用または専用プロセッサに、処理を行わせるために利用される機械実行可能命令に具現化することができる。または、段階はハードウェア、ソフトウェア、および／または、ファームウェアの組み合わせにより実行されてもよい。「モジュール」という用語は、内蔵型の機能上のコンポーネントを指し、これには、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせが含まれてよい。
【００５８】
ここで記載してきた例示的な実施形態には、本発明の範囲を逸脱せずに様々な変形例および追加を想到することができる。例えば、上述してきた実施形態では、特定の特徴が言及されていようとも、本発明の範囲には、これら特徴の異なる組み合わせを含む実施形態、および、記載した特徴が全ては含まれていない実施形態も含まれる。従って、本発明の範囲は、これら全ての代替例、変形例、および変更例、並びにこれらの全ての均等物を含むことが意図されている。本明細書によれば、以下の各項目に記載の事項もまた開示される。
［項目１］
コンテンツ配信ネットワークの第１セットのコンテンツサーバに、コンテンツプロバイダをマッピングする段階と、
前記コンテンツプロバイダから、前記コンテンツ配信ネットワークの前記第１セットのコンテンツサーバが配信するコンテンツを受信する段階と、
前記コンテンツプロバイダからの前記コンテンツに関連するネットワークトラフィックを監視する段階と、
前記ネットワークトラフィックに関連付けられる少なくとも１つのメトリックを決定する段階と、
前記少なくとも１つのメトリックに基づいて、前記コンテンツ配信ネットワークの第２セットのコンテンツサーバに前記コンテンツプロバイダをマッピングしなおす段階と
を備える方法。
［項目２］
前記第１セットのコンテンツサーバは、複数の地理的位置にある複数のサーバを含む、項目１に記載の方法。
［項目３］
前記少なくとも１つのメトリックは、中央処理装置（ＣＰＵ）のオーバヘッド、レイテンシー、コンテンツのサイズ、ライブラリのサイズ、およびコンテンツの重要度を含む、項目１に記載の方法。
［項目４］
前記少なくとも１つのメトリックからなる複合メトリックを生成する段階をさらに備える、項目３に記載の方法。
［項目５］
前記第２セットのコンテンツサーバに前記コンテンツプロバイダをマッピングしなおす段階は、
前記複合メトリックが閾値を超える場合にマッピングをしなおす段階を有する、項目４に記載の方法。
［項目６］
コンテンツを提供する複数のコンテンツサーバにマッピングされたコンテンツプロバイダからの前記コンテンツに関連するネットワークトラフィックを監視するトラフィックモニタと、
前記ネットワークトラフィックに関連付けられる少なくとも１つのメトリックを計算するメトリック決定モジュールと、
前記コンテンツプロバイダにマッピングされたコンテンツサーバの数を調節する閾値調節モジュールと、
前記コンテンツプロバイダにマッピングされた前記コンテンツサーバを識別するバインドマップと
を有する電子動的バインドシステムを備えるシステム。
［項目７］
前記電子動的バインドシステムは、コンテンツプロバイダにバインドされたコンテンツサーバへと、コンテンツ要求を徐々に誘導するコールド・ノード保護モジュールをさらに有する、項目６に記載のシステム。
［項目８］
前記バインドマップは、前記コンテンツプロバイダにバインドすることが可能な最大数のコンテンツサーバのセットを識別する、項目６に記載のシステム。
［項目９］
前記閾値調節モジュールは、前記コンテンツサーバの数を調節するときにヒステリシスを提供する、項目６に記載のシステム。
［項目１０］
前記メトリック決定モジュールは、中央処理装置のオーバヘッド、レイテンシー、コンテンツのサイズ、ライブラリのサイズ、および重要度を含む群から選択される１以上のメトリックを決定する、項目６に記載のシステム。
［項目１１］
前記バインドマップが階層状である、項目６に記載のシステム。
［項目１２］
実行されるとコンピュータにプロセスを実行させるコンピュータ実行可能命令を格納しているコンピュータ可読媒体であって、
１以上のサーバクラスタは各々、コンテンツプロバイダからのコンテンツを配信するよう設定されている１以上のサーバを含み、
前記プロセスは、
前記１以上のサーバクラスタを前記コンテンツプロバイダに関連付ける段階と、
前記コンテンツプロバイダに、１以上のサーバクラスタからなる第１セットにおける少なくとも１つのサーバを関連付ける段階と、
前記コンテンツに対する要求を受けると、前記コンテンツを、前記１以上のサーバクラスタからなる第１セットから配信する段階と、
前記要求を受けて生成されたネットワークトラフィックを監視する段階と、
１以上のネットワークメトリックを決定する段階と、
前記１以上のネットワークメトリックに基づき、前記コンテンツプロバイダからの前記コンテンツを配信するよう設定するコンテンツサーバの数を調節する段階と
を含む、コンピュータ可読媒体。
［項目１３］
前記１以上のサーバクラスタは地理的に分散している、項目１２に記載のコンピュータ可読媒体。
［項目１４］
前記１以上のサーバクラスタは、前記コンテンツプロバイダのクライアントの位置に基づき選択される、項目１３に記載のコンピュータ可読媒体。
［項目１５］
前記１以上のネットワークメトリックは、中央処理装置のオーバヘッド、レイテンシー、コンテンツのサイズ、ライブラリのサイズ、およびコンテンツの重要度を含む、項目１２に記載のコンピュータ可読媒体。
［項目１６］
前記プロセスは、前記コンテンツプロバイダに新たに関連付けられたコンテンツサーバに対して、コンテンツ要求を徐々に増加させる段階をさらに含む、項目１２に記載のコンピュータ可読媒体。
［項目１７］
前記プロセスは、前記１以上のメトリックの組み合わせである複合値を生成する段階をさらに含む、項目１５に記載のコンピュータ可読媒体。
【図１】
0005901024.tif 000002
【図２】
0005901024.tif 000003
【図３】
0005901024.tif 000004
【図４】
0005901024.tif 000005
【図５】
0005901024.tif 000006
【図６】
0005901024.tif 000007