(57)【特許請求の範囲】
【請求項１】
プロセッサによって実行される制御アプリケーションにより実装される方法であって、
地域的サーバクラスタに含まれる１以上の地域的マスターサーバを決定する工程と、
各前記地域的マスターサーバに、フィルソースからファイルを取り出させる工程と、
前記地域的サーバクラスタに含まれる少なくとも１つのローカルサーバクラスタについて、
前記少なくとも１つのローカルサーバクラスタに含まれる１以上のローカルマスターサーバを決定する工程と、
各前記ローカルマスターサーバに、前記１以上の地域的マスターサーバのうちの１つから前記ファイルを取り出させる工程と
を含むことを特徴とする方法。
【請求項２】
前記少なくとも１つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
前記明示的サーバクラスタに含まれる１以上の明示的マスターサーバを決定する工程と
各前記明示的マスターサーバに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる工程と
を更に含む、請求項１記載の方法。
【請求項３】
少なくとも１つの前記ローカルマスターサーバに、前記１以上の地域的マスターサーバのうちの１つから前記ファイルを取り出す前に、第１の所定の期間だけ待機させる工程と、少なくとも１つの前記明示的マスターサーバに、前記少なくとも１つのローカルマスターサーバから前記ファイルを取り出す前に、第２の所定の期間だけ待機させる工程とを更に含む、請求項２記載の方法。
【請求項４】
ハッシュデータ構造を生成するために、前記地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子（ＩＤ）が関連づけられた複数のサーバＩＤに基づく第１のハッシュ処理を行う工程と、
第１のハッシュ値を生成するために、前記ファイルと関連づけられたファイルＩＤに基づく第２のハッシュ処理を行う工程と
を更に含み、
前記１以上の地域的マスターサーバを決定する前記工程が、前記第１のハッシュ値を前記ハッシュデータ構造と比較する工程を含む、請求項１記載の方法。
【請求項５】
前記１以上のローカルマスターサーバを決定する前記工程が、前記第１のハッシュ値に基づいて、前記ハッシュデータ構造に対するフィルタリング処理を行う工程を含む、請求項４記載の方法。
【請求項６】
前記少なくとも１つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
前記明示的サーバクラスタに含まれる１以上の明示的マスターサーバを決定するために、前記第１のハッシュ値に基づいて前記ハッシュデータ構造をフィルタリングする工程と、
各前記明示的マスターに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる工程と
を更に含む、請求項５記載の方法。
【請求項７】
前記ハッシュデータ構造がハッシュリングを含み、前記第１のハッシュ処理および前記第２のハッシュ処理が、一貫したハッシュ処理を含む、請求項４記載の方法。
【請求項８】
前記第１のハッシュ処理を行う前記工程が、各前記サーバＩＤについて、
複数の異なるサーバＩＤインスタンスを生成するために、前記サーバＩＤを複数の異なる値と組み合わせる工程と、
複数のハッシュデータ構造値を生成するために、各前記複数のサーバＩＤインスタンスに対する前記第１のハッシュ処理を行う工程と、
前記複数のハッシュデータ構造値を前記ハッシュデータ構造に格納する工程と
を含む、請求項４記載の方法。
【請求項９】
前記地域的マスターサーバの数および前記ローカルマスターサーバの数が、前記ファイルと関連づけられた少なくとも１つの複製因子に基づく、請求項１記載の方法。
【請求項１０】
制御アプリケーションを格納するメモリと、
前記メモリに結合されたプロセッサと
を含む制御サーバであって、
前記制御アプリケーションが、前記プロセッサによって実行された際、該プロセッサを、
地域的サーバクラスタに含まれる第１の複数の地域的マスターサーバを決定し、
各前記地域的マスターサーバに、フィルソースからファイルを取り出させ、
前記地域的サーバクラスタに含まれる少なくとも１つのローカルサーバクラスタについて、
前記少なくとも１つのローカルサーバクラスタに含まれる１以上のローカルマスターサーバを決定し、
各前記ローカルマスターサーバに、前記第１の複数の地域的マスターサーバのうちの１つから前記ファイルを取り出させる
よう構成することを特徴とする制御サーバ。
【請求項１１】
前記制御アプリケーションが、更に、前記プロセッサを、前記少なくとも１つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
前記明示的サーバクラスタに含まれる１以上の明示的マスターサーバを決定し、
各前記明示的マスターに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる
よう構成する、請求項１０記載の制御サーバ。
【請求項１２】
前記制御アプリケーションが、更に、前記プロセッサを、少なくとも１つの前記ローカルマスターサーバに、前記第１の複数の地域的マスターサーバのうちの１つから前記ファイルを取り出す前に第１の所定の期間だけ待機させ、少なくとも１つの前記明示的マスターサーバに、前記少なくとも１つのローカルマスターサーバから前記ファイルを取り出す前に第２の所定の期間だけ待機させるよう構成する、請求項１１記載の制御サーバ。
【請求項１３】
前記制御アプリケーションが、更に、前記プロセッサを、
ハッシュデータ構造を生成するために、前記地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子（ＩＤ）が関連づけられた複数のサーバＩＤに基づく第１のハッシュ処理を行い、
第１のハッシュ値を生成するために、前記ファイルと関連づけられたファイルＩＤに基づく第２のハッシュ処理を行う
よう構成し、
前記プロセッサが、前記第１のハッシュ値を前記ハッシュデータ構造と比較することによって、前記第１の複数の地域的マスターサーバを決定するよう構成される、請求項１０記載の制御サーバ。
【請求項１４】
前記制御アプリケーションが、更に、前記プロセッサを、
第２のハッシュ値を生成するために、第２のファイルと関連づけられた第２のファイルＩＤに基づく第３のハッシュ処理を行い、
前記地域的サーバクラスタに含まれる第２の複数の地域的マスターサーバであって、前記第１の複数の地域的マスターサーバに含まれない少なくとも１つのサーバを含む第２の複数の地域的マスターサーバを決定するために、前記第２のハッシュ値を前記ハッシュデータ構造と比較し、
各前記地域的マスターサーバに、前記フィルソースから前記第２のファイルを取り出させ、
前記地域的サーバクラスタに含まれる前記少なくとも１つのローカルサーバクラスタについて、
前記ローカルサーバクラスタに含まれる複数のローカルマスターサーバであって、前記１以上のローカルマスターサーバに含まれない少なくとも１つのサーバを含む複数のローカルマスターサーバを決定するために、前記第２のハッシュ値に基づいて、前記ハッシュデータ構造に対するフィルタリング処理を行い、
各前記ローカルマスターサーバに、前記第２の複数の地域的マスターサーバのうちの１つから前記第２のファイルを取り出させる
よう構成する、請求項１３記載の制御サーバ。
【請求項１５】
前記制御アプリケーションが、前記プロセッサを、前記地域的サーバクラスタに含まれるサーバからファイルＩＤのアレイを受信したことに応答して、前記第１のハッシュ処理を行い、前記第１のハッシュ値を前記ハッシュデータ構造と比較するよう構成する、請求項１３記載の制御サーバ。
【請求項１６】
前記ファイルＩＤのアレイが、前記サーバから受信されたJavaScript（登録商標） Object Notation（ＪＳＯＮ）オブジェクトに含まれる、請求項１５記載の制御サーバ。
【請求項１７】
前記制御アプリケーションが、前記プロセッサを、
前記少なくとも１つのローカルサーバクラスタに含まれる各前記ローカルサーバクラスタについて、
前記ローカルサーバクラスタに含まれない全てのサーバを前記ハッシュデータ構造から除外し、
前記１以上のローカルマスターサーバを選択するために、前記ハッシュデータ構造内に残っている、前記第１のハッシュ値に最も近いハッシュ値を有する１以上のサーバを決定する
ことによって、前記１以上のローカルマスターサーバを決定するよう構成する、請求項１３記載の制御サーバ。
【請求項１８】
前記第１の複数の地域的マスターサーバに含まれるサーバの第１の数が、地域的マスターサーバ階層と関連づけられた第１の複製因子に基づくものであり、前記１以上のローカルマスターサーバに含まれるサーバの第２の数が、ローカルマスターサーバ階層と関連づけられた第２の複製因子に基づくものである、請求項１０記載の制御サーバ。
【請求項１９】
プロセッサによって指示が実行された際に、前記プロセッサに、
ハッシュリングを生成するために、地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子（ＩＤ）が関連づけられた複数のサーバＩＤに基づく第１のハッシュ処理を行う工程と、
第１のハッシュ値を生成するために、ファイルと関連づけられたファイルＩＤに基づく第２のハッシュ処理を行う工程と、
前記地域的サーバクラスタに含まれる１以上の地域的マスターサーバを選択するために、前記ハッシュリング上の、前記第１のハッシュ値に最も近い１以上のハッシュ値を決定する工程と、
各前記地域的マスターサーバに、フィルソースから前記ファイルを取り出させる工程と、
前記地域的サーバクラスタに含まれる複数のローカルサーバクラスタの各々について、
前記ローカルサーバクラスタに含まれる１以上のローカルマスターサーバを決定するために、前記第１のハッシュ値に基づいて、前記ハッシュリングに対するフィルタリング処理を行う工程と、
各前記ローカルマスターサーバに、前記１以上の地域的マスターサーバのうちの１つから前記ファイルを取り出させる工程と
を行わせる指示を含むことを特徴とする、非一過性のコンピュータ可読記憶媒体。
【請求項２０】
前記ハッシュリングに対する前記フィルタリング処理を行う前記工程が、各前記ローカルサーバクラスタについて、
前記ローカルサーバクラスタに含まれない全てのサーバを前記ハッシュリングから除外する工程と、
前記１以上のローカルマスターサーバを選択するために、前記ハッシュリング内に残っている、前記第１のハッシュ値に最も近いハッシュ値を有する１以上のサーバを決定する工程と
を含む、請求項１９記載の非一過性のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願は、２０１５年４月３０日に出願された米国仮特許出願第６２／１５５，４３０号（弁理士事件番号ＮＥＴＦ／００９４ＵＳＬ）、および、２０１６年３月１０日に出願された米国特許出願第１５／０６７，０９９号（弁理士事件番号ＮＥＴＦ／００９４ＵＳ）による利益を主張する。これらの関連出願の主題を、本明細書に参照して組み込む。
【技術分野】
【０００２】
本発明の実施形態は、一般的に、コンピュータネットワークを介したデータ伝送に関し、より具体的には、階層化キャッシュフィルに関する。
【背景技術】
【０００３】
多くのウェブに基づくアプリケーションは、インターネットを介した分散型の方法で、例えばストリーミングオーディオおよび／またはストリーミングビデオ等のサービスを提供する。一般的に、そのようなアプリケーションは、各コンテンツタイトルの複数のコピー（例えば、オーディオファイルまたはビデオファイル等）を、１以上のネットワーク位置にある複数のサーバにわたって分散させることによって稼働する。複数のサーバにわたってコンテンツをミラーリングすることにより、そのコンテンツは、大量のユーザによって、大きな待ち時間がかかることなく、アクセス可能になる。更に、特定のコンテンツタイトルの複数のコピーを維持することは、特定のサーバに関してハードウェアまたはソフトウェアの不具合が生じた際に、ウェブに基づくアプリケーションが迅速且つシームレスに回復することを可能にする。
【０００４】
コンテンツタイトルをユーザに供給することと関連づけられたレイテンシー時間および全体的なネットワーク要件を更に低減するために、コンテンツタイトルが格納されているサーバは、典型的には、ウェブアプリケーションによってサービスを提供される１以上の地域にわたって地理的に分散されている。この場合、ウェブアプリケーションは、コンテンツタイトルをより効率的にユーザに供給するために、各ユーザを、そのユーザの近くに位置する特定のサーバに向かわせるよう構成される。
【０００５】
大きな地理的領域内に分散された、または複数の異なる地理的領域にわたって分散されたサーバに格納されているコンテンツタイトルを管理することは、幾つかの課題を提示し得る。具体的には、所与のコンテンツタイトルを、大きな地理的領域にわたって位置する複数のサーバにコピーすることは、大きなネットワークリソース（例えば、帯域幅等）を消費し得る。ネットワークリソースの消費は、特に、ネットワークインフラの全てまたは一部が第三者によって提供されるものである場合には、ウェブに基づくアプリケーションのためのコストを増加させる。更に、所与のコンテンツタイトルを複数のサーバにコピーするための従来の技術は、しばしば、コンテンツタイトルを最初に受信するサーバに、帯域幅使用率および処理負荷の大きな変動を生じさせ得る（例えば、他のネットワークサーバが、コンテンツタイトルを最初に受信するサーバを、コンテンツタイトルのコピーを求める要求で「溢れさせる」場合）。そのような変動は、これらの「最初の」サーバの性能に負の影響を与え得るものであり、それが、最初のサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに提供されるサービスの品質を低下させ、および／または、最初のサーバにソフトウェアおよび／またはハードウェアの不具合を生じさせる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記に示したように、複数のサーバのネットワークにわたってコンテンツを分散させるための改善された技術が有用である。
【課題を解決するための手段】
【０００７】
本発明の一実施形態は、複数のサーバのネットワーク内においてファイルを複製する方法を述べる。この方法は、地域的サーバクラスタに含まれる１以上の地域的マスターサーバを決定し、各地域的マスターサーバに、フィルソースからファイルを取り出させることを含む。この方法は、地域的サーバクラスタに含まれる少なくとも１つのローカルサーバクラスタについて、少なくとも１つのローカルサーバクラスタに含まれる１以上のローカルマスターサーバを決定し、各ローカルマスターサーバに、１以上の地域的マスターサーバのうちの１つからファイルを取り出させることを更に含む。
【０００８】
更なる実施形態は、とりわけ、上述の方法を実装するよう構成された制御サーバおよび非一過性のコンピュータ可読媒体を提供する。
【発明の効果】
【０００９】
本開示の技術の少なくとも１つの長所は、エンティティがマスターインデックスを維持することを必要とせずに、コンテンツサーバの特定の階層を介して、予測可能で非集中的な耐障害性が高い方法で、各ファイルをネットワークにわたって複製できることである。更に、ネットワークインフラにわたって新たなまたは既存のファイルを複製する際に、下位の階層が上位の階層に含まれるコンテンツサーバを溢れさせることを防止して、サーバ負荷の変動の深刻度を低減するために、各階層に所定の遅延が割り当てられ得る。更に、各階層に含まれるコンテンツサーバは、ファイルと関連づけられた識別子に基づいて決定されるので、各ファイルは、それぞれ異なる一続きのコンテンツサーバを介して、ネットワークインフラを通って伝搬し得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ間により均等に分散され、コンテンツサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
【図面の簡単な説明】
【００１０】
【図１】本発明の様々な実施形態による、コンテンツをコンテンツサーバおよびエンドポイント装置に分散／配信するために用いられるネットワークインフラを示す
【図２】本発明の様々な実施形態による、図１のネットワークインフラに関して実装され得るコンテンツサーバのブロック図
【図３】本発明の様々な実施形態による、図１のネットワークインフラに関して実装され得る制御サーバのブロック図
【図４】本発明の様々な実施形態による、図１のコンテンツサーバが地理的にどのように分散されているかを示す
【図５Ａ】本発明の様々な実施形態による、図１の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す
【図５Ｂ】本発明の様々な実施形態による、図１の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す
【図５Ｃ】本発明の様々な実施形態による、図１の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す
【図６Ａ】本発明の様々な実施形態による、地理的に分散されたコンテンツサーバにわたってファイルを複製する方法のステップのフロー図
【図６Ｂ】本発明の様々な実施形態による、地理的に分散されたコンテンツサーバにわたってファイルを複製する方法のステップのフロー図
【発明を実施するための形態】
【００１１】
本発明の上記の特徴を詳細に理解できるように、上記で簡潔に要約した本発明を、実施形態を参照してより具体的に説明する。実施形態の幾つかが、添付の図面に示されている。しかし、添付の図面は、本発明の典型的な実施形態のみを示すものであり、本発明の範囲を限定するものとは見なされず、本発明は、他の等しく効果的な実施形態を認め得ることを留意されたい。
【００１２】
以下の説明において、本発明の実施形態のより完全な理解を提供するために、多くの具体的な詳細が述べられる。しかし、当業者には、これらの具体的な詳細の１以上を含まずとも本発明の実施形態が実施され得ることが自明である。
【００１３】
図１は、本発明の様々な実施形態による、コンテンツをコンテンツサーバ１１０およびエンドポイント装置１１５に分散／配信するために用いられるネットワークインフラ１００を示す。図示されるように、ネットワークインフラ１００は、コンテンツサーバ１１０、制御サーバ１２０、およびエンドポイント装置１１５を含み、それらの各々は通信ネットワーク１０５を介して接続されている。
【００１４】
各エンドポイント装置１１５は、例えば、テキストデータ、グラフィックデータ、オーディオデータ、ビデオデータ、および他のタイプのデータ等のコンテンツをダウンロードするために、ネットワーク１０５を介して１以上のコンテンツサーバ１１０（「キャッシュ」または「ノード」とも称される）と通信する。次に、本明細書においては「ファイル」とも称されるダウンロード可能なコンテンツは、１以上のエンドポイント装置１１５のユーザに対して提示される。様々な実施形態において、エンドポイント装置１１５は、コンピュータシステム、セットトップボックス、モバイルコンピュータ、スマートフォン、タブレット、コンソールおよび手持ち型ビデオゲームシステム、デジタルビデオレコーダー（ＤＶＲ）、ＤＶＤプレイヤー、接続されたデジタルＴＶ、専用メディアストリーミング装置（例えば、Ｒｏｋｕ（登録商標）セットトップボックス）、並びに／または、ネットワーク接続性を有し、コンテンツ（例えばテキスト、画像、ビデオ、および／またはオーディオコンテンツ等）をユーザに対して提示する機能がある他の任意の技術的に可能なコンピューティングプラットフォームを含み得る。
【００１５】
各コンテンツサーバ１１０は、ウェブサーバ、データベース、並びに、制御サーバ１２０によって追跡および管理される様々なファイルの位置および可用性を決定するために制御サーバ１２０と通信するよう構成されたサーバアプリケーション２１７を含み得る。各コンテンツサーバ１１０は、更に、各コンテンツサーバ１１０を様々なファイルのコピーで「フィル」するために、フィルソース１３０および１以上の他のコンテンツサーバ１１０と通信し得る。更に、コンテンツサーバ１１０は、エンドポイント装置１１５から受信された、ファイルを求める要求に応答し得る。次に、ファイルは、コンテンツサーバ１１０から、または、より広いコンテンツ配信ネットワークを介して配信され得る。一部の実施形態では、コンテンツサーバ１１０は、ユーザが、コンテンツサーバ１１０に格納されているファイルにアクセスするために、（例えば、ユーザ名およびパスワードを用いて）認証を行うのを可能にする。図１には単一の制御サーバ１２０のみが示されているが、様々な実施形態では、複数の制御サーバ１２０が、ファイルを追跡および管理するよう実装され得る。
【００１６】
様々な実施形態において、フィルソース１３０は、数千または数百万のファイルを含むファイルのカタログが格納されており、コンテンツサーバ１１０をフィルするためにアクセスされる、オンラインストレージサービス（例えば、Amazon（登録商標）Simple Storage Service、Google（登録商標） Cloud Storage等）を含み得る。図１には単一のフィルソース１３０のみが示されているが、様々な実施形態では、複数のフィルソース１３０が、ファイルを求める要求にサービスを提供するよう実装され得る。
【００１７】
図２は、本発明の様々な実施形態による、図１のネットワークインフラ１００に関して実装され得るコンテンツサーバ１１０のブロック図である。図示されるように、コンテンツサーバ１１０は、中央処理装置（ＣＰＵ）２０４、システムディスク２０６、入出力（Ｉ／Ｏ）装置インターフェース２０８、ネットワークインターフェース２１０、相互接続２１２、およびシステムメモリ２１４（それらに限定されない）を含む。
【００１８】
ＣＰＵ２０４は、システムメモリ２１４に格納されているプログラミング指示（例えば、サーバアプリケーション２１７等）を取り出して実行するよう構成される。同様に、ＣＰＵ２０４は、アプリケーションデータを格納すると共に、システムメモリ２１４からアプリケーションデータを取り出すよう構成される。相互接続２１２は、ＣＰＵ２０４、システムディスク２０６、Ｉ／Ｏ装置インターフェース２０８、ネットワークインターフェース２１０、およびシステムメモリ２１４間でのデータ（例えば、プログラミング指示およびアプリケーションデータ等）の伝送を容易にするよう構成される。Ｉ／Ｏ装置インターフェース２０８は、Ｉ／Ｏ装置２１６から入力データを受信し、その入力データを相互接続２１２を介してＣＰＵ２０４に送信するよう構成される。例えば、Ｉ／Ｏ装置２１６は、１以上のボタン、キーボード、マウス、および／または他の入力装置を含み得る。Ｉ／Ｏ装置インターフェース２０８は、更に、ＣＰＵ２０４から相互接続２１２を介して出力データを受信し、その出力データをＩ／Ｏ装置２１６に送信するよう構成される。
【００１９】
システムディスク２０６は、１以上のハードディスクドライブ、ソリッドステートストレージ装置、または類似のストレージ装置を含み得る。システムディスク２０６は、コンテンツカタログと関連づけられた、例えばファイル２１８（例えば、オーディオファイル、ビデオファイル、および／またはサブタイトル）等の不揮発性データを格納するよう構成される。次に、ファイル２１８は、１以上のエンドポイント装置１１５によってネットワーク１０５を介して取り出され得る。一部の実施形態では、ネットワークインターフェース２１０は、イーサネット（登録商標）標準に従って動作するよう構成される。
【００２０】
システムメモリ２１４は、エンドポイント装置１１５および他のコンテンツサーバ１１０から受信された、ファイル２１８を求める要求にサービスを提供するよう構成されたサーバアプリケーション２１７を含む。サーバアプリケーション２１７が、ファイル２１８を求める要求を受信すると、サーバアプリケーション２１７は、対応するファイル２１８をシステムディスク２０６から取り出して、ファイル２１８をネットワーク１０５を介してエンドポイント装置１１５またはコンテンツサーバ１１０に送信する。サーバアプリケーション２１７は、更に、制御サーバ１２０からの指示（例えば、フィルソース１３０、特定のコンテンツサーバ１１０等からの特定のファイルを要求可能な位置および／または時間等）を要求するよう構成される。
【００２１】
図３は、本発明の様々な実施形態による、図１のネットワークインフラ１００に関して実装され得る制御サーバ１２０のブロック図である。図示されるように、制御サーバ１２０は、中央処理装置（ＣＰＵ）３０４、システムディスク３０６、入出力（Ｉ／Ｏ）装置インターフェース３０８、ネットワークインターフェース３１０、相互接続３１２、およびシステムメモリ３１４（それらに限定されない）を含む。
【００２２】
ＣＰＵ３０４は、システムメモリ３１４に格納されているプログラミング指示（例えば、制御アプリケーション３１７等）を取り出して実行するよう構成される。同様に、ＣＰＵ３０４は、アプリケーションデータを格納すると共に、システムメモリ３１４およびシステムディスク３０６に格納されているデータベース３１８からアプリケーションデータを取り出すよう構成される。相互接続３１２は、ＣＰＵ３０４、システムディスク３０６、Ｉ／Ｏ装置インターフェース３０８、ネットワークインターフェース３１０、およびシステムメモリ３１４間でのデータの伝送を容易にするよう構成される。Ｉ／Ｏ装置インターフェース３０８は、Ｉ／Ｏ装置３１６とＣＰＵ３０４との間で相互接続３１２を介して入力データおよび出力データを送信するよう構成される。システムディスク３０６は、１以上のハードディスクドライブ、ソリッドステートストレージ装置等を含み得る。システムディスク２０６は、コンテンツサーバ１１０、フィルソース１３０、およびファイル２１８と関連づけられた情報のデータベース３１８を格納するよう構成される。
【００２３】
システムメモリ３１４は制御アプリケーション３１７を含み、制御アプリケーション３１７は、データベース３１８に格納されている情報にアクセスし、その情報を処理して、特定のファイル２１８が、ネットワークインフラ１００に含まれるコンテンツサーバ１１０にわたって複製される方法を決定するよう構成されている。例えば、コンテンツサーバ１１０が新たなファイル２１８のコピーでフィルされる場合には、コンテンツサーバ１１０と関連づけられた識別子（ＩＤ）（サーバＩＤと称される）のリストがデータベース３１８からアクセスされる。次に、制御アプリケーション３１７は、新たなファイル２１８と関連づけられたファイルＩＤに関してサーバＩＤを処理して、図４〜図６に関して更に詳細に後述するように、ネットワークインフラ１００に含まれるコンテンツサーバ２１０にわたって、新たなファイル２１８がいつ、どのように複製されるかを決定する。
【００２４】
本明細書に先に述べたように、大きな地理的領域にわたって分散されたコンテンツサーバ１１０に格納されているコンテンツ（例えば、オーディオおよびビデオファイル等）を管理することは、様々な課題を提示する。具体的には、それぞれ異なるネットワーク機能および処理機能を有する様々なエンドポイント装置１１５にサービスを提供するために、各コンテンツタイトルは、複数の（例えば、１０以上の）異なるビットレートで符号化され得る。その結果、例えば映画またはテレビショー等の単一のコンテンツタイトルが、複数のファイル２１８（各ファイルは、そのコンテンツタイトルを異なるビットレートで符号化したものであり、各ファイルは、コンテンツタイトルをエンドポイント装置１１５に供給するよう構成されたコンテンツサーバ１１０によって格納され得る）と関連づけられ得る。
【００２５】
従って、コンテンツサーバ１１０を、複数のファイル２１８とそれぞれ関連づけられたコンテンツタイトルの大きなカタログでフィルする試みは、かなりのネットワークリソースを消費し得る。従って、各コンテンツサーバ１１０が、第三者ソース（例えば、フィルソース１３０等）から直接、および／または、第三者ネットワークを介してファイル２１８を取り出す場合には、かなりのアクセス料金および帯域幅料金がかかり得る。
【００２６】
一方、ファイル２１８を最初に受信する小数のローカルコンテンツサーバ１１０のみを用いてコンテンツサーバ１１０をフィルすることを試みることによって、第三者ソース／ネットワークの使用を最小化することは、最初のコンテンツサーバ１１０に不当に大きな負荷を課し得る。そのような負荷は、他のコンテンツサーバ１１０がファイル２１８を求める要求でコンテンツサーバ１１０を溢れさせた際の、最初のコンテンツサーバ１１０におけるネットワーク負荷および処理負荷の変動につながり得る。
【００２７】
従って、様々な実施形態において、各ファイル２１８は、ネットワークインフラ１００内において、ネットワークインフラ１００に含まれるサーバＩＤおよびファイル２１８と関連づけられたファイルＩＤに基づいて正確に算出可能なコンテンツサーバ１１０の特定の階層を介して複製され得る。ファイル２１８が位置することになるコンテンツサーバ１１０は、サーバＩＤおよびファイルＩＤに基づいて正確に算出できるので、ファイル２１８へのアクセスが決定論的なものとなり、キャッシュミスの発生が低減または解消される。各階層に含まれるコンテンツサーバ１１０の数は、例えば、特定のファイル２１８に対する人気および需要に基づいて、各階層毎にまたは各ファイル２１８毎に複製因子を指定することによって、制御され得る。その結果、コンテンツサーバ１１０がローカルにフィルされる程度を調節でき、第三者ネットワーク料金およびストレージ料金を低減できる。更に、各階層に含まれるコンテンツサーバ１１０はファイルＩＤに基づいて決定されるので、各ファイル２１８は、ネットワークインフラ１００にわたって、それぞれ異なる一続きのコンテンツサーバ１１０を介して複製され得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ１１０間により均等に分散され、コンテンツサーバ１１０を介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
【００２８】
一部の実施形態では、複数のファイル２１８はカテゴリーによってグループ化され、各カテゴリーと関連づけられたファイル２１８には固有のファイルＩＤが割り当てられる。例えば、コンテンツタイトルＡ（例えば、映画またはテレビショー）と関連づけられたファイル２１８には第１のファイルＩＤが割り当てられ、コンテンツタイトルＢと関連づけられたファイル２１８には、第２のファイルＩＤが割り当てられ得る。更に、一部の実施形態では、コンテンツタイトルの異なるビットレートでの各符号化に、それぞれ異なるファイルＩＤが割り当てられる。即ち、そのような実施形態では、コンテンツタイトルＡおよび第１のビットレートと関連づけられたファイル２１８には第１のファイルＩＤが割り当てられ、コンテンツタイトルＡおよび第２のビットレートと関連づけられたファイル２１８には第２のファイルＩＤが割り当てられ得る。そのような実施形態は、１以上のコンテンツサーバ１１０の各々に、特定のカテゴリーと関連づけられたファイル２１８の完全なセットが一緒に格納されることを可能にする。
【００２９】
更に、一部の実施形態では、各ファイル２１８に固有のファイルＩＤが割り当てられる。例えば、コンテンツタイトルＡおよび第１のビットレートと関連づけられた各ファイル２１８に、それぞれ異なるファイルＩＤが割り当てられ得る。そのような実施形態は、例えば、ファイル２１８が特定のエンドポイント装置１１５に並行して伝送されるのを可能にするために、特定のカテゴリーと関連づけられたファイル２１８が、複数のコンテンツサーバ１１０にわたって分散されるのを可能にする。更に、一部の実施形態では、固有のファイルＩＤがファイル２１８に割り当てられる粒度は、カテゴリー毎に様々なであり得る。
【００３０】
様々な実施形態において、特定のファイル２１８と関連づけられたファイルＩＤは、JavaScript（登録商標） Object Notation（ＪＳＯＮ）オブジェクトで符号化される。「JavaScript」 Object Notation（ＪＳＯＮ）は、「オブジェクト」と称されるデータ構造を、一般的に「JavaScript」スクリプト言語と適合性がある方法で表すための表現法である。オブジェクトは、各エレメントがキーで示される１以上のエレメントを含み得る。各エレメントは、ストリング、数、別のオブジェクト、アレイ、Ｂｏｏｌｅａｎ値、またはｎｕｌｌであり得る。アレイは、角括弧「[」および「]」によって線引きされるエレメントの順序付きリストである。アレイ内のエレメントは、コンマによって分けられる。ファイル２１８と関連づけられた例示的なＪＳＯＮオブジェクトを、以下の表１に示す。
【００３１】
【表１】
0006564471.tif 000002
【００３２】
上記に示した例示的なＪＳＯＮオブジェクトにおいて、最初と最後の波括弧は、オブジェクトの開始および終了を示す。「videos」は、角括弧「[」および「]」によって線引きされたビデオのアレイについてのキーである。アレイは、波括弧によって線引きされた２つのエレメントを含む。第１のそのようなエレメントは、図示されているような値を有する「id」フィールド、「title（タイトル）」フィールド、「boxart」フィールド、および「synopsis（粗筋）」フィールドを含むオブジェクトである。同様に、アレイ内の第２のエレメントは図示されているような値を有する。従って、この例では、第１のファイル２１８（「Eternal Sunshine of the Spotless Mind」）と関連づけられたファイルＩＤ２３４３２、および第２のファイル２１８（「The Mask」）と関連づけられたファイルＩＤ２３５２１が指定されている。
【００３３】
更に、一部の実施形態では、コンテンツサーバ１１０は、アレイに格納されている複数のファイルＩＤを含むＪＳＯＮオブジェクトを制御アプリケーション３１７に送信することによって、指示をダウンロードする（例えば、位置、時間遅延等をダウンロードする）ことを要求し得る。そのようなファイルＩＤのアレイを含む例示的なＪＳＯＮオブジェクトを以下の表２に示す。
【００３４】
【表２】
0006564471.tif 000003
【００３５】
図４は、本発明の様々な実施形態による、図１のコンテンツサーバ１１０が、どのように地理的に分散されているかを示す。図示されるように、コンテンツサーバ１１０は、地域的クラスタ４１０、ローカルクラスタ４２０、および明示的クラスタ４３０を含む様々なクラスタとして組織化され得る。
【００３６】
例えば、図４に示されている例示的な地理的分布では、コンテンツサーバ１１０は、地域的クラスタ４１０−１および地域的クラスタ４１０−２として組織化される。一部の実施形態では、各地域的クラスタ４１０は、それぞれ異なる市、州、国、時間帯、大陸等と関連づけられ得る。各地域的クラスタ４１０は、１以上のローカルクラスタ４２０を含む。例えば、地域的クラスタ４１０−１はローカルクラスタ４２０−１およびローカルクラスタ４２０−２を含み、地域的クラスタ４１０−２はローカルクラスタ４２０−３、ローカルクラスタ４２０−４、およびローカルクラスタ４２０−５を含む。各ローカルクラスタ４２０は１以上の明示的クラスタ４３０を含み、各明示的クラスタ４３０は１以上のコンテンツサーバ１１０を含む。例えば、図４に示されている各明示的クラスタ４３０は５つのコンテンツサーバ１１０を含む。しかし、各明示的クラスタ４３０には、任意の数のコンテンツサーバ１１０が含まれてよい。更に、任意の数の地域的クラスタ４１０、ローカルクラスタ４２０、明示的クラスタ４３０、およびコンテンツサーバ１１０がネットワークインフラ１００に含まれてよい。
【００３７】
図５Ａ〜図５Ｃは、本発明の様々な実施形態による、図１の地理的に分散されたコンテンツサーバ１１０の複数の異なる階層にわたってファイル２１８を複製する技術を示す。ピークトラフィック需要および冗長性要件を満たすために、各地域的クラスタ４１０に含まれるコンテンツサーバ１１０にわたって、各ファイル２１８の複数のコピーが複製され得る。従って、様々な実施形態では、ファイル２１８がどこに格納されるべきかを予め計算することを必要とせず、且つ、集中型のサーバにコンテンツサーバ１１０のインデックスを格納することを必要とせずに、ファイル２１８を複数のコンテンツサーバ１１０にわたって均等に複製するために、１以上のハッシュ処理（例えば、後述する一貫したハッシュ処理等）が、制御アプリケーション３１７によって行われ得る。本明細書に記載される技術は、特定のハッシュ処理に関して実装されるが、特定のファイル２１８が複製される階層に含まれるコンテンツサーバ１１０を選択するために、任意の技術的に可能な処理または技術が用いられ得る。
【００３８】
様々な実施形態において、制御アプリケーション３１７は、コンテンツサーバ１１０と関連づけられた各サーバＩＤに対するハッシュ処理を行う（例えば、MD５ message-digestアルゴリズムを適用する）ことにより、特定の地域的クラスタ４１０に含まれる各コンテンツサーバ１１０についてのハッシュ値を生成し得る。次に、制御アプリケーション３１７は、得られたハッシュ値をソートして、ハッシュデータ構造（例えば、ハッシュリング、ハッシュテーブル等）を構成する。次に、特定のファイル２１８を地域的クラスタ４１０にわたって複製するためにどのコンテンツサーバ１１０が用いられるかを決定するために、制御アプリケーション３１７は、ファイル２１８と関連づけられたファイルＩＤに、同じ（または異なる）ハッシュ処理を適用することにより、ファイル２１８についてのハッシュ値を生成する。
【００３９】
次に、制御アプリケーション３１７は、ファイル２１８と関連づけられたハッシュ値をハッシュデータ構造と比較し、ファイル２１８のハッシュ値に最も近いハッシュ値を有するコンテンツサーバ１１０を、その特定のファイル２１８についての地域的マスター５１０として選択する。更に、ファイル２１８および／または地域的マスター５１０階層について複製因子（ＲＦ）＞１が指定されている場合には、制御アプリケーション３１７は、ハッシュデータ構造において（例えば、ハッシュ値に基づく）次となる１以上の更なるコンテンツサーバ１１０を、地域的マスター５１０として選択する。一部の実施形態では、制御アプリケーション３１７は、所望の数の地域的マスター５１０が選択されるまで、地域的クラスタ４１０について選択された最初の地域的マスター５１０と関連づけられたハッシュ値から開始して、ハッシュリングを周回してまたはハッシュテーブルを下に向かって「巡回」することにより、ハッシュデータ構造における次のコンテンツサーバ１１０を選択する。
【００４０】
地域的クラスタ４１０と関連づけられた地域的マスター５１０が選択されたら、地域的マスター５１０は、制御アプリケーション３１７から受信された指示に基づいて、図５Ａに示されているように、フィルソース１３０からファイル２１８を直ちに取り出す（５１５）。説明を明確にするために、図５Ａに示されている各地域的クラスタ４１０には、１つの地域的マスター５１０のみが示されている。しかし、ＲＦ＞１である実施形態では、特定のファイル２１８について複数の地域的マスター５１０が選択されて、フィルソース１３０からファイル２１８を直ちに取り出し得る。
【００４１】
次に、制御アプリケーション３１７は、ハッシュデータ構造を、特定のローカルクラスタ４２０内に位置するコンテンツサーバ１１０のみを含むようにフィルタリングする。次に、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造に含まれる１以上の次のコンテンツサーバ１１０を、ローカルクラスタ４２０についてのローカルマスター５２０として選択する。例えば、図５Ｂを参照すると、ローカルクラスタ４２０−１についての１以上のローカルマスター５２０を決定する際、制御アプリケーション３１７は、ハッシュデータ構造を、ローカルクラスタ４２０−１に含まれない全てのコンテンツサーバ１１０を除外するようフィルタリングする。次に、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造内に残っている、ハッシュ値による次のコンテンツサーバ１１０を、ローカルクラスタ４２０−１についてのローカルマスター５２０として選択する。更に、ファイル２１８および／またはローカルマスター５２０階層についてＲＦ＞１が指定されている場合には、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造に含まれる１以上の次のコンテンツサーバ１１０を、ローカルクラスタ４２０−１についてのローカルマスター５２０として選択する。次に、制御アプリケーション３１７は、地域的クラスタ４１０に含まれる各ローカルクラスタ４２０について、この処理を繰り返す。
【００４２】
図５Ｂに示されているように、ローカルマスター５２０は、地域的マスター５１０からファイル２１８を取り出す（５２５）。制御アプリケーション３１７は、更に、ローカルマスター５２０に、ファイル２１８をいつどのように取り出し可能かに関する指示を供給する。一部の実施形態では、地域的マスター５１０がファイル２１８を求める要求で圧倒されるのを防止するために、制御アプリケーション３１７は、各ローカルクラスタ４２０と関連づけられたローカルマスター５２０に、地域的マスター５１０からファイル２１８を取り出す（５２５）前に、第１の所定の期間（例えば、地域的マスター５１０がフィルソース１３０からファイル２１８を取り出した（５１５）後の１〜３時間）だけ待機するよう指示する。更に、制御アプリケーション３１７は、ローカルマスター５２０に、第１の所定の期間より長い第２の所定の期間（例えば、地域的マスター５１０がフィルソース１３０からファイル２１８を取り出した（５１５）後の２〜４時間）の後でのみ、より高価なソース（例えば、フィルソース１３０等）からファイル２１８を取り出すよう指示し得る。ローカルマスター５２０がより高価なソースからファイルを取り出し可能になるまでの第２の所定の期間を実装することは、ネットワークコストの低減と、対応する地域的マスター５１０と関連づけられたネットワーク上の問題、ソフトウェア／ハードウェアの不具合等に起因する長い遅延の発生の低減との間のバランスを取る。更に、一部の実施形態では、ローカルマスター５２０は、異なる地域的クラスタ４１０と関連づけられた地域的マスター５１０からファイル２１８を取り出してもよい。
【００４３】
必要に応じて、制御アプリケーション３１７は、ハッシュデータ構造を、特定の明示的クラスタ４３０内に位置するコンテンツサーバ１１０のみを含むよう再度フィルタリングし得る。次に、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造に含まれる１以上の次のコンテンツサーバ１１０を、明示的クラスタ４３０についての明示的マスター５３０として選択する。例えば、図５Ｃを参照すると、明示的クラスタ４３０−１についての１以上の明示的マスター５３０を決定する際、制御アプリケーション３１７は、ハッシュデータ構造を、明示的クラスタ４３０−１に含まれない全てのコンテンツサーバ１１０を除外するようフィルタリングし得る。次に、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造内に残っている、ハッシュ値による次のコンテンツサーバ１１０を、明示的クラスタ４３０−１についての明示的マスター５３０−３として選択する。更に、ファイル２１８および／または明示的マスター５３０階層についてＲＦ＞１が指定されている場合には、制御アプリケーション３１７は、フィルタリングされたハッシュデータ構造に含まれる１以上の次のコンテンツサーバ１１０を、明示的クラスタ４３０−１についての明示的マスター５３０として選択し得る。次に、制御アプリケーション３１７は、地域的クラスタ４１０に含まれる各明示的クラスタ４３０について、この処理を繰り返す。更に、制御アプリケーション３１７は、インフラネットワーク１００に含まれる各地域的クラスタ４１０について、地域的マスター５１０、ローカルマスター５２０、および明示的マスター５３０を決定する処理全体を繰り返す。
【００４４】
明示的マスター５３０は、図５Ｃに示されているように、ローカルマスター５２０からファイル２１８を取り出す（５３５）。一部の実施形態では、ローカルマスター５２０がファイル２１８を求める要求で圧倒されるのを防止するために、制御アプリケーション３１７は、各明示的クラスタ４３０と関連づけられた明示的マスター５３０に、ローカルマスター５２０からファイル２１８を取り出す（５３５）前に、第１の所定の期間（例えば、ローカルマスター５２０が地域的マスター５１０からファイル２１８を取り出した（５２５）後の１〜３時間）だけ待機するよう指示する。更に、制御アプリケーション３１７は、明示的マスター５３０に、第２の所定の期間（例えば、ローカルマスター５２０が地域的マスター５１０からファイル２１８を取り出した（５２５）後の２〜４時間）の後で、より高価なソース（例えば、地域的マスター５１０等）からファイル２１８を取り出すよう指示し得る。更に、制御アプリケーション３１７は、明示的マスター５３０に、第３の所定の期間（例えば、ローカルマスター５２０が地域的マスター５１０からファイル２１８を取り出した（５２５）後の４〜６時間）の後で、フィルソース１３０からファイル２１８を取り出すよう指示し得る。
【００４５】
特定の明示的クラスタ４３０内の明示的マスター５３０が、ファイル２１８のコピーを受信したら、明示的クラスタ４３０に含まれる非マスター５４０の各々は、明示的マスター５３０からファイル２１８を取り出し可能になる。明示的クラスタ４３０内の非マスター５４０と明示的マスター５３０との間での取り出しは、典型的には、いかなる第三者ネットワーク料金またはストレージ料金もかからないので、有利である。一部の実施形態では、制御アプリケーション３１７は、非マスター５４０に、明示的マスター５３０からファイル２１８を取り出す前に、必要に応じて設けられる第１の所定の期間（例えば、明示的マスター５３０がローカルマスター５２０からファイル２１８を取り出した（５３５）後の１〜３時間）だけ待機するよう指示する。更に、制御アプリケーション３１７は、非マスター５４０に、より高価なソース（例えば、ローカルマスター５２０、地域的マスター５１０、およびフィルソース１３０等）からファイル２１８を取り出す前に、待機するよう指示し得る。
【００４６】
ハッシュデータ構造内に一続きに位置するコンテンツサーバ１１０が複数の人気のあるファイル２１８を受信した結果、性能が低下するという「魅力的な隣人（hot neighbor）」問題を回避するために、制御アプリケーション３１７は、ハッシュデータ構造を生成する前に、必要に応じて、各サーバＩＤを複数の値と組み合わせる。例えば、制御アプリケーション３１７は、各サーバＩＤを、決まった範囲の１，０００個の定数と組み合わせ得る。次に、制御アプリケーション３１７は、各組合せに対するハッシュ処理を行って、各コンテンツサーバ１１０についての１，０００個のハッシュ値を生成する。その結果、各コンテンツサーバ１１０は、ハッシュデータ構造内に複数回現れることになり、コンテンツサーバ１１０の同じサブセットが複数の人気のあるファイル２１８を受信する可能性が大きく低減される。その一例を以下に示す。
【００４７】
特定の例において、特定の地域的クラスタ４１０は、２０個のコンテンツサーバを含むものとする。ハッシュデータ構造（例えば、ハッシュリング）を生成するために、制御アプリケーション３１７は、２０個のサーバＩＤの各々を、決まった範囲の定数（例えば、１〜１０００）と組み合わせ、各組合せに対してハッシュ処理を適用し、得られた２０，０００個のハッシュ値をソートして、ハッシュリングを生成する。更に、コンテンツサーバ１１０の名称はＡ〜Ｔであるとすると、得られたハッシュリングは以下のハッシュ値を含み得る：
００００００００：Ｄ
００００３０６４：Ａ
００００５６６２：Ｓ
００００７１７４：Ｎ
００００９９４７：Ａ
０００１２５１６：Ｔ
０００１５５７７：Ｑ
０００１６６５２：Ｒ
０００２１６２５：Ｌ
０００２５０５７：Ｑ
０００２８６６５：Ｋ
…
２３４５１２３４：Ｆ
２３４５３７５３：Ｒ
２３４５６８０２：Ｑ
２３４５９９１９：Ｉ
２３４６２６８７：Ａ
２３４６３２７３：Ｉ
２３４６６２２９：Ｔ
２３４７１０６９：Ｍ
２３４７５８７６：Ｇ
２３４７６０１１：Ｔ
（ハッシュリングは最初に戻るようループする）
【００４８】
ＲＦ＝３とすると、次に、制御アプリケーション３１７は、ファイル２１８と関連づけられたファイルＩＤに対するハッシュ処理を行い、ハッシュリング上で遭遇した最初の３つのコンテンツサーバ１１０を選択する。例えば、ファイルＩＤに対して行ったハッシュ処理が０００１５５００のハッシュ値を生じたとすると、０００１５５００の後に遭遇する最初のコンテンツサーバ１１０は０００１５５７７であるので、制御アプリケーション３１７はＱをプライマリコンテンツサーバ１１０として選択し、ＲおよびＬをレプリカコンテンツサーバ１１０として選択する。
【００４９】
図６Ａおよび図６Ｂは、本発明の様々な実施形態による、地理的に分散されたコンテンツサーバ１１０にわたってファイル２１８を複製する方法のステップのフロー図を示す。この方法のステップは図１〜図５Ｃのシステムに関して説明されるが、当業者には、この方法のステップを任意の順序で行うよう構成された任意のシステムが本発明の範囲内に含まれることが理解されよう。
【００５０】
図６Ａに示されているように、方法６００はステップ６０５において開始し、そこで、制御アプリケーション３１７は、コンテンツサーバ１１０の特定の地域的クラスタ４１０に含まれる各コンテンツサーバ１１０と関連づけられたサーバ識別子（ＩＤ）に対する第１のハッシュ処理を行うことによって、ハッシュデータ構造（例えば、ハッシュリングまたはハッシュテーブル等）を生成する。ステップ６１０において、制御アプリケーション３１７は、ファイル２１８と関連づけられたファイルＩＤに基づく第２のハッシュ処理を行うことによって、ハッシュ値を生成する。一部の実施形態では、第１のハッシュ処理と第２のハッシュ処理とは同じ（例えば、ＭＤ５ハッシュ処理）である。しかし、様々な実施形態において、第１のハッシュ処理と第２のハッシュ処理とはそれぞれ異なる処理を含んでもよい。更に、一部の実施形態では、第１のハッシュ処理および／または第２のハッシュ処理は、サーバＩＤおよび／またはファイルＩＤを改変する１以上の変換を含み得る。
【００５１】
ステップ６１５において、制御アプリケーション３１７は、第１のハッシュ値をハッシュデータ構造と比較することによって、地域的クラスタ４１０に含まれる１以上の地域的マスター５１０を決定する。様々な実施形態において、１以上の地域的マスター５１０は、地域的クラスタ４１０に含まれるコンテンツサーバ１１０のサブセットで構成される。次に、ステップ６２０において、制御アプリケーション３１７は、各地域的マスター５１０に、フィルソース１３０からファイル２１８を取り出させる。例えば、制御アプリケーション３１７は、地域的マスター５１０から受信された、ファイルＩＤを指定するＪＳＯＮアレイに応答して、各地域的マスター５１０に指示を発行することによって、地域的マスター５１０にファイル２１８を取り出させてもよい。
【００５２】
次に、ステップ６２５において、制御アプリケーション３１７は、地域的クラスタ４１０に含まれるコンテンツサーバ１１０のローカルクラスタ４２０を選択する。ステップ６３０において、制御アプリケーション３１７は、ファイルＩＤについて生成されたハッシュ値に基づいて、ローカルクラスタ４２０に含まれる１以上のローカルマスター５２０を決定するために、ハッシュデータ構造をフィルタリングする。様々な実施形態において、１以上のローカルマスター５２０は、ローカルクラスタ４２０に含まれるコンテンツサーバ１１０のサブセットで構成される。ステップ６３５において、制御アプリケーション３１７は次に、各ローカルマスター５２０に、地域的マスター５１０からファイル２１８を取り出す前に所定の期間だけ待機させる。一部の実施形態では、ローカルマスター５２０が地域的マスター５１０からファイル２１８を取り出す前に待機することを要求される所定の時間は、各ローカルマスター５２０について同じであり、一方、他の実施形態では、所定の時間はローカルマスター５２０にわたって様々であり得る。
【００５３】
ステップ６４０において、制御アプリケーション３１７は、更なるローカルクラスタ４２０についての１以上のローカルマスター５２０が決定される必要があるか否かを決定する。制御アプリケーション３１７が、更なるローカルクラスタ４２０についての１以上のローカルマスター５２０が決定される必要があることを決定した場合には、方法６００は上述のステップ６２５に戻る。制御アプリケーション３１７が、更なるローカルクラスタ４２０についてのローカルマスター５２０が決定される必要がないことを決定した場合には、方法６００は図６Ｂに示されているステップ６４５に進み、そこで、制御アプリケーション３１７は、コンテンツサーバ１１０の明示的クラスタ４３０を選択する。
【００５４】
ステップ６５０において、制御アプリケーション３１７は、ハッシュ値に基づいて、明示的クラスタ４３０に含まれる１以上の明示的マスター５３０を決定するために、ハッシュデータ構造をフィルタリングする。様々な実施形態において、１以上の明示的マスター５３０は、明示的クラスタ４３０に含まれるコンテンツサーバ１１０のサブセットで構成される。
【００５５】
地域的マスター５１０、ローカルマスター５２０、および明示的マスター５３０は、サーバＩＤおよびファイルＩＤに基づいて決定されるので、インフラネットワーク１００内においてファイル２１８が複製された位置、および、各位置からファイル２１８を取り出し可能な時間は、サーバＩＤおよびファイルＩＤのレコードを有する任意のコンテンツサーバ１１０によって決定可能である。従って、例えば制御サーバ２１７等のエンティティがマスターインデックスを維持することを必要とせずに、ファイル２１８は、インフラネットワーク１００を通して非集中的な耐障害性が高い方法で複製され得る。
【００５６】
ステップ６５５において、制御アプリケーション３１７は、各明示的マスター５３０に、ローカルマスター５２０からファイル２１８を取り出す前に所定の期間だけ待機させる。一部の実施形態では、明示的マスター５３０がローカルマスター５２０からファイル２１８を取り出す前に待機することを要求される所定の時間は、各明示的マスター５３０について同じであり、一方、他の実施形態では、所定の時間は明示的マスター５３０にわたって様々であり得る。
【００５７】
ステップ６６０において、制御アプリケーション３１７は、更なる明示的クラスタ４３０についての１以上の明示的マスター５３０が決定される必要があるか否かを決定する。制御アプリケーション３１７が、更なる明示的クラスタ４３０についての１以上の明示的マスター５３０が決定される必要があることを決定した場合には、方法６００は上述のステップ６４５に戻る。制御アプリケーション３１７が、更なる明示的クラスタ４３０についての明示的マスター５３０が決定される必要がないことを決定した場合には、方法６００はステップ６６５に進み、そこで、制御アプリケーション３１７は、各非マスターサーバ５４０に、明示的マスター５３０からファイル２１８を取り出す前に所定の期間だけ待機させる。一部の実施形態では、非マスターサーバ５４０が明示的マスター５３０からファイル２１８を取り出す前に待機することを要求される所定の時間は、各非マスターサーバ５４０について同じであり、一方、他の実施形態では、所定の時間は非マスターサーバ５４０にわたって様々であり得る。
【００５８】
ステップ６７０において、制御アプリケーション３１７は、更なるファイル２１８についての地域的マスター５１０、ローカルマスター５２０、および／または明示的マスター５３０が決定される必要があるか否かを決定する。制御アプリケーション３１７が、更なるファイル２１８についての地域的マスター５１０、ローカルマスター５２０、および／または明示的マスター５３０が決定される必要があることを決定した場合には、方法６００はステップ６１０に戻る。制御アプリケーション３１７が、更なるファイル２１８についての地域的マスター５１０、ローカルマスター５２０、および／または明示的マスター５３０が決定される必要がないことを決定した場合には、方法６００は終了する。
【００５９】
要約すると、制御アプリケーションは、複数のサーバＩＤに対するハッシュ処理を行って、ハッシュデータ構造を生成する。次に、制御アプリケーションは、ファイルＩＤに対するハッシュ処理を行い、ハッシュ値をハッシュデータ構造と比較して、１以上の地域的マスターを選択する。次に、ファイルが複製されるローカルマスターおよび明示的マスターをそれぞれ決定するために、ハッシュデータ構造は、各ローカルクラスタおよび明示的クラスタについてフィルタリングされる。制御アプリケーションは、更に、インフラネットワークを通してファイルが複製される速度を制御するために、各ローカルマスター階層、明示的マスター階層、および非マスター階層に所定の遅延を割り当てる。
【００６０】
本開示の技術の少なくとも１つの長所は、エンティティがマスターインデックスを維持することを必要とせずに、コンテンツサーバの特定の階層を介して、予測可能で非集中的な耐障害性が高い方法で、各ファイルをネットワークにわたって複製できることである。更に、ファイルが複製される各階層に含まれるコンテンツサーバの数は、例えば、ファイルに対する人気および需要に基づいて、階層毎にまたはファイル毎に複製因子を指定することによって、制御され得る。更に、下位の階層が上位の階層に含まれるコンテンツサーバを溢れさせることを防止して、サーバ負荷の変動の深刻度を低減するために、各階層に所定の遅延が割り当てられ得る。更に、各階層に含まれるコンテンツサーバは、ファイルと関連づけられた識別子に基づいて決定されるので、各ファイルは、それぞれ異なる一続きのコンテンツサーバを介して、ネットワークインフラを通って伝搬し得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ間により均等に分散され、コンテンツサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
【００６１】
説明の目的で、様々な実施形態の説明を示したが、これらは網羅的であることを意図したものではなく、開示された実施形態に限定することは意図しない。当業者には、記載された実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が自明である。
【００６２】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具現化され得る。従って、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとり得るものであり、それらの全てを、本明細書においては一般的に「回路」、「モジュール」、または「システム」と称する。更に、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する１以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
【００６３】
１以上のコンピュータ可読媒体の任意の組合せが用いられ得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組合せであり得るが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例（網羅的ではないリスト）としては、１以上のワイヤを有する電気的接続、ポータブルコンピュータのディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭもしくはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ装置、磁気ストレージ装置、またはそれらの任意の適切な組合せが挙げられる。本明細書の文脈において、コンピュータ可読記憶媒体は、指示を実行するシステム、装置、またはデバイスによって用いられる、またはそれらに関連して用いられるプログラムを収容または格納可能な、任意の有体の媒体であり得る。
【００６４】
上記において、本開示の態様を、本開示の実施形態による方法、装置（システム）およびコンピュータプログラム製品のフローチャートおよび／またはブロック図を参照して説明した。フローチャートおよび／またはブロック図の各ブロック、並びに、フローチャートおよび／またはブロック図のブロックの組合せは、コンピュータプログラムの指示によって実装され得ることが理解されよう。これらのコンピュータプログラム指示は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに供給されてマシンを生成し得るものであり、そのコンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される指示が、フローチャートおよび／またはブロック図の１または複数のブロックにおいて指定されている機能／動作の実装を可能にするようになっている。そのようなプロセッサは、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルプロセッサであり得るが、それらに限定されない。
【００６５】
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および処理を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されている論理的機能を実装するための１以上の実行可能な指示を含むモジュール、セグメント、またはコードの一部を表し得る。なお、幾つかの別の実装例においては、ブロック内に記されている機能が、図面に記されている順序から外れて生じ得る。例えば、続けて示されている２つのブロックが、含まれる機能に応じて、実際には略並列に実行される場合もあり、または、それらのブロックが逆の順序で実行される場合もある。また、ブロック図および／またはフローチャートの各ブロック、並びに、ブロック図および／またはフローチャートのブロックの組合せは、指定されている機能もしくは動作を行う専用ハードウェアに基づくシステムによって、または、専用ハードウェアとコンピュータ指示との組合せによって実装され得る。
【００６６】
上記において、特定の実施形態を参照して本発明を説明した。しかし、当業者には、添付の特許請求の範囲において述べられる本発明のより広い趣旨および範囲から逸脱することなく、本発明に対して様々な修正および変更が行われ得ることが理解されよう。例えば、限定するものではなく、本明細書における説明の多くは、特定のタイプのファイル、ハッシュ処理、およびサーバ階層を参照しているが、当業者には、本明細書に記載されるシステムおよび技術が、他のタイプのデータファイル、アルゴリズム、および階層にも適用可能であることが認識されよう。従って、上記の説明および図面は、限定するものではなく、説明的なものと見なされるものである。
【００６７】
上記は本開示の実施形態に向けられているが、本開示の基本的な範囲から逸脱することなく、本開示の他のおよび更なる実施形態も考案され得るものであり、本開示の範囲は添付の特許請求の範囲によって決定される。
【符号の説明】
【００６８】
１００  ネットワークインフラ
１０５  通信ネットワーク
１１０  コンテンツサーバ
１１５  エンドポイント装置
１２０  制御サーバ
１３０  フィルソース
２０６  システムディスク
２０８  入出力装置インターフェース
２１０  ネットワークインターフェース
２１２  相互接続
２１４  メモリ
２１６  入出力（Ｉ／Ｏ）装置
２１７  サーバアプリケーション
２１８  ファイル
３０６  システムディスク
３０８  入出力装置インターフェース
３１０  ネットワークインターフェース
３１２  相互接続
３１４  メモリ
３１６  Ｉ／Ｏ装置
３１７  制御アプリケーション
３１８  データベース
４１０  地域的クラスタ
４２０  ローカルクラスタ
４３０  明示的クラスタ
５１０  地域的マスター
５２０  ローカルマスター
５３０  明示的マスター
【図１】
0006564471.tif 000004
【図２】
0006564471.tif 000005
【図３】
0006564471.tif 000006
【図４】
0006564471.tif 000007
【図５Ａ】
0006564471.tif 000008
【図５Ｂ】
0006564471.tif 000009
【図５Ｃ】
0006564471.tif 000010
【図６Ａ】
0006564471.tif 000011
【図６Ｂ】
0006564471.tif 000012