JP6564471B2 - 階層化キャッシュフィル - Google Patents

階層化キャッシュフィル Download PDF

Info

Publication number
JP6564471B2
JP6564471B2 JP2017556643A JP2017556643A JP6564471B2 JP 6564471 B2 JP6564471 B2 JP 6564471B2 JP 2017556643 A JP2017556643 A JP 2017556643A JP 2017556643 A JP2017556643 A JP 2017556643A JP 6564471 B2 JP6564471 B2 JP 6564471B2
Authority
JP
Japan
Prior art keywords
server
file
master
local
hash
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.)
Active
Application number
JP2017556643A
Other languages
English (en)
Other versions
JP2018524656A (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.)
Netflix Inc
Original Assignee
Netflix 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
Application filed by Netflix Inc filed Critical Netflix Inc
Publication of JP2018524656A publication Critical patent/JP2018524656A/ja
Application granted granted Critical
Publication of JP6564471B2 publication Critical patent/JP6564471B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • 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/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

関連出願の相互参照
本願は、2015年4月30日に出願された米国仮特許出願第62/155,430号(弁理士事件番号NETF/0094USL)、および、2016年3月10日に出願された米国特許出願第15/067,099号(弁理士事件番号NETF/0094US)による利益を主張する。これらの関連出願の主題を、本明細書に参照して組み込む。
本発明の実施形態は、一般的に、コンピュータネットワークを介したデータ伝送に関し、より具体的には、階層化キャッシュフィルに関する。
多くのウェブに基づくアプリケーションは、インターネットを介した分散型の方法で、例えばストリーミングオーディオおよび/またはストリーミングビデオ等のサービスを提供する。一般的に、そのようなアプリケーションは、各コンテンツタイトルの複数のコピー(例えば、オーディオファイルまたはビデオファイル等)を、1以上のネットワーク位置にある複数のサーバにわたって分散させることによって稼働する。複数のサーバにわたってコンテンツをミラーリングすることにより、そのコンテンツは、大量のユーザによって、大きな待ち時間がかかることなく、アクセス可能になる。更に、特定のコンテンツタイトルの複数のコピーを維持することは、特定のサーバに関してハードウェアまたはソフトウェアの不具合が生じた際に、ウェブに基づくアプリケーションが迅速且つシームレスに回復することを可能にする。
コンテンツタイトルをユーザに供給することと関連づけられたレイテンシー時間および全体的なネットワーク要件を更に低減するために、コンテンツタイトルが格納されているサーバは、典型的には、ウェブアプリケーションによってサービスを提供される1以上の地域にわたって地理的に分散されている。この場合、ウェブアプリケーションは、コンテンツタイトルをより効率的にユーザに供給するために、各ユーザを、そのユーザの近くに位置する特定のサーバに向かわせるよう構成される。
大きな地理的領域内に分散された、または複数の異なる地理的領域にわたって分散されたサーバに格納されているコンテンツタイトルを管理することは、幾つかの課題を提示し得る。具体的には、所与のコンテンツタイトルを、大きな地理的領域にわたって位置する複数のサーバにコピーすることは、大きなネットワークリソース(例えば、帯域幅等)を消費し得る。ネットワークリソースの消費は、特に、ネットワークインフラの全てまたは一部が第三者によって提供されるものである場合には、ウェブに基づくアプリケーションのためのコストを増加させる。更に、所与のコンテンツタイトルを複数のサーバにコピーするための従来の技術は、しばしば、コンテンツタイトルを最初に受信するサーバに、帯域幅使用率および処理負荷の大きな変動を生じさせ得る(例えば、他のネットワークサーバが、コンテンツタイトルを最初に受信するサーバを、コンテンツタイトルのコピーを求める要求で「溢れさせる」場合)。そのような変動は、これらの「最初の」サーバの性能に負の影響を与え得るものであり、それが、最初のサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに提供されるサービスの品質を低下させ、および/または、最初のサーバにソフトウェアおよび/またはハードウェアの不具合を生じさせる。
上記に示したように、複数のサーバのネットワークにわたってコンテンツを分散させるための改善された技術が有用である。
本発明の一実施形態は、複数のサーバのネットワーク内においてファイルを複製する方法を述べる。この方法は、地域的サーバクラスタに含まれる1以上の地域的マスターサーバを決定し、各地域的マスターサーバに、フィルソースからファイルを取り出させることを含む。この方法は、地域的サーバクラスタに含まれる少なくとも1つのローカルサーバクラスタについて、少なくとも1つのローカルサーバクラスタに含まれる1以上のローカルマスターサーバを決定し、各ローカルマスターサーバに、1以上の地域的マスターサーバのうちの1つからファイルを取り出させることを更に含む。
更なる実施形態は、とりわけ、上述の方法を実装するよう構成された制御サーバおよび非一過性のコンピュータ可読媒体を提供する。
本開示の技術の少なくとも1つの長所は、エンティティがマスターインデックスを維持することを必要とせずに、コンテンツサーバの特定の階層を介して、予測可能で非集中的な耐障害性が高い方法で、各ファイルをネットワークにわたって複製できることである。更に、ネットワークインフラにわたって新たなまたは既存のファイルを複製する際に、下位の階層が上位の階層に含まれるコンテンツサーバを溢れさせることを防止して、サーバ負荷の変動の深刻度を低減するために、各階層に所定の遅延が割り当てられ得る。更に、各階層に含まれるコンテンツサーバは、ファイルと関連づけられた識別子に基づいて決定されるので、各ファイルは、それぞれ異なる一続きのコンテンツサーバを介して、ネットワークインフラを通って伝搬し得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ間により均等に分散され、コンテンツサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
本発明の様々な実施形態による、コンテンツをコンテンツサーバおよびエンドポイント装置に分散/配信するために用いられるネットワークインフラを示す 本発明の様々な実施形態による、図1のネットワークインフラに関して実装され得るコンテンツサーバのブロック図 本発明の様々な実施形態による、図1のネットワークインフラに関して実装され得る制御サーバのブロック図 本発明の様々な実施形態による、図1のコンテンツサーバが地理的にどのように分散されているかを示す 本発明の様々な実施形態による、図1の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す 本発明の様々な実施形態による、図1の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す 本発明の様々な実施形態による、図1の地理的に分散されたコンテンツサーバの複数の異なる階層にわたってファイルを複製する技術を示す 本発明の様々な実施形態による、地理的に分散されたコンテンツサーバにわたってファイルを複製する方法のステップのフロー図 本発明の様々な実施形態による、地理的に分散されたコンテンツサーバにわたってファイルを複製する方法のステップのフロー図
本発明の上記の特徴を詳細に理解できるように、上記で簡潔に要約した本発明を、実施形態を参照してより具体的に説明する。実施形態の幾つかが、添付の図面に示されている。しかし、添付の図面は、本発明の典型的な実施形態のみを示すものであり、本発明の範囲を限定するものとは見なされず、本発明は、他の等しく効果的な実施形態を認め得ることを留意されたい。
以下の説明において、本発明の実施形態のより完全な理解を提供するために、多くの具体的な詳細が述べられる。しかし、当業者には、これらの具体的な詳細の1以上を含まずとも本発明の実施形態が実施され得ることが自明である。
図1は、本発明の様々な実施形態による、コンテンツをコンテンツサーバ110およびエンドポイント装置115に分散/配信するために用いられるネットワークインフラ100を示す。図示されるように、ネットワークインフラ100は、コンテンツサーバ110、制御サーバ120、およびエンドポイント装置115を含み、それらの各々は通信ネットワーク105を介して接続されている。
各エンドポイント装置115は、例えば、テキストデータ、グラフィックデータ、オーディオデータ、ビデオデータ、および他のタイプのデータ等のコンテンツをダウンロードするために、ネットワーク105を介して1以上のコンテンツサーバ110(「キャッシュ」または「ノード」とも称される)と通信する。次に、本明細書においては「ファイル」とも称されるダウンロード可能なコンテンツは、1以上のエンドポイント装置115のユーザに対して提示される。様々な実施形態において、エンドポイント装置115は、コンピュータシステム、セットトップボックス、モバイルコンピュータ、スマートフォン、タブレット、コンソールおよび手持ち型ビデオゲームシステム、デジタルビデオレコーダー(DVR)、DVDプレイヤー、接続されたデジタルTV、専用メディアストリーミング装置(例えば、Roku(登録商標)セットトップボックス)、並びに/または、ネットワーク接続性を有し、コンテンツ(例えばテキスト、画像、ビデオ、および/またはオーディオコンテンツ等)をユーザに対して提示する機能がある他の任意の技術的に可能なコンピューティングプラットフォームを含み得る。
各コンテンツサーバ110は、ウェブサーバ、データベース、並びに、制御サーバ120によって追跡および管理される様々なファイルの位置および可用性を決定するために制御サーバ120と通信するよう構成されたサーバアプリケーション217を含み得る。各コンテンツサーバ110は、更に、各コンテンツサーバ110を様々なファイルのコピーで「フィル」するために、フィルソース130および1以上の他のコンテンツサーバ110と通信し得る。更に、コンテンツサーバ110は、エンドポイント装置115から受信された、ファイルを求める要求に応答し得る。次に、ファイルは、コンテンツサーバ110から、または、より広いコンテンツ配信ネットワークを介して配信され得る。一部の実施形態では、コンテンツサーバ110は、ユーザが、コンテンツサーバ110に格納されているファイルにアクセスするために、(例えば、ユーザ名およびパスワードを用いて)認証を行うのを可能にする。図1には単一の制御サーバ120のみが示されているが、様々な実施形態では、複数の制御サーバ120が、ファイルを追跡および管理するよう実装され得る。
様々な実施形態において、フィルソース130は、数千または数百万のファイルを含むファイルのカタログが格納されており、コンテンツサーバ110をフィルするためにアクセスされる、オンラインストレージサービス(例えば、Amazon(登録商標)Simple Storage Service、Google(登録商標) Cloud Storage等)を含み得る。図1には単一のフィルソース130のみが示されているが、様々な実施形態では、複数のフィルソース130が、ファイルを求める要求にサービスを提供するよう実装され得る。
図2は、本発明の様々な実施形態による、図1のネットワークインフラ100に関して実装され得るコンテンツサーバ110のブロック図である。図示されるように、コンテンツサーバ110は、中央処理装置(CPU)204、システムディスク206、入出力(I/O)装置インターフェース208、ネットワークインターフェース210、相互接続212、およびシステムメモリ214(それらに限定されない)を含む。
CPU204は、システムメモリ214に格納されているプログラミング指示(例えば、サーバアプリケーション217等)を取り出して実行するよう構成される。同様に、CPU204は、アプリケーションデータを格納すると共に、システムメモリ214からアプリケーションデータを取り出すよう構成される。相互接続212は、CPU204、システムディスク206、I/O装置インターフェース208、ネットワークインターフェース210、およびシステムメモリ214間でのデータ(例えば、プログラミング指示およびアプリケーションデータ等)の伝送を容易にするよう構成される。I/O装置インターフェース208は、I/O装置216から入力データを受信し、その入力データを相互接続212を介してCPU204に送信するよう構成される。例えば、I/O装置216は、1以上のボタン、キーボード、マウス、および/または他の入力装置を含み得る。I/O装置インターフェース208は、更に、CPU204から相互接続212を介して出力データを受信し、その出力データをI/O装置216に送信するよう構成される。
システムディスク206は、1以上のハードディスクドライブ、ソリッドステートストレージ装置、または類似のストレージ装置を含み得る。システムディスク206は、コンテンツカタログと関連づけられた、例えばファイル218(例えば、オーディオファイル、ビデオファイル、および/またはサブタイトル)等の不揮発性データを格納するよう構成される。次に、ファイル218は、1以上のエンドポイント装置115によってネットワーク105を介して取り出され得る。一部の実施形態では、ネットワークインターフェース210は、イーサネット(登録商標)標準に従って動作するよう構成される。
システムメモリ214は、エンドポイント装置115および他のコンテンツサーバ110から受信された、ファイル218を求める要求にサービスを提供するよう構成されたサーバアプリケーション217を含む。サーバアプリケーション217が、ファイル218を求める要求を受信すると、サーバアプリケーション217は、対応するファイル218をシステムディスク206から取り出して、ファイル218をネットワーク105を介してエンドポイント装置115またはコンテンツサーバ110に送信する。サーバアプリケーション217は、更に、制御サーバ120からの指示(例えば、フィルソース130、特定のコンテンツサーバ110等からの特定のファイルを要求可能な位置および/または時間等)を要求するよう構成される。
図3は、本発明の様々な実施形態による、図1のネットワークインフラ100に関して実装され得る制御サーバ120のブロック図である。図示されるように、制御サーバ120は、中央処理装置(CPU)304、システムディスク306、入出力(I/O)装置インターフェース308、ネットワークインターフェース310、相互接続312、およびシステムメモリ314(それらに限定されない)を含む。
CPU304は、システムメモリ314に格納されているプログラミング指示(例えば、制御アプリケーション317等)を取り出して実行するよう構成される。同様に、CPU304は、アプリケーションデータを格納すると共に、システムメモリ314およびシステムディスク306に格納されているデータベース318からアプリケーションデータを取り出すよう構成される。相互接続312は、CPU304、システムディスク306、I/O装置インターフェース308、ネットワークインターフェース310、およびシステムメモリ314間でのデータの伝送を容易にするよう構成される。I/O装置インターフェース308は、I/O装置316とCPU304との間で相互接続312を介して入力データおよび出力データを送信するよう構成される。システムディスク306は、1以上のハードディスクドライブ、ソリッドステートストレージ装置等を含み得る。システムディスク206は、コンテンツサーバ110、フィルソース130、およびファイル218と関連づけられた情報のデータベース318を格納するよう構成される。
システムメモリ314は制御アプリケーション317を含み、制御アプリケーション317は、データベース318に格納されている情報にアクセスし、その情報を処理して、特定のファイル218が、ネットワークインフラ100に含まれるコンテンツサーバ110にわたって複製される方法を決定するよう構成されている。例えば、コンテンツサーバ110が新たなファイル218のコピーでフィルされる場合には、コンテンツサーバ110と関連づけられた識別子(ID)(サーバIDと称される)のリストがデータベース318からアクセスされる。次に、制御アプリケーション317は、新たなファイル218と関連づけられたファイルIDに関してサーバIDを処理して、図4〜図6に関して更に詳細に後述するように、ネットワークインフラ100に含まれるコンテンツサーバ210にわたって、新たなファイル218がいつ、どのように複製されるかを決定する。
本明細書に先に述べたように、大きな地理的領域にわたって分散されたコンテンツサーバ110に格納されているコンテンツ(例えば、オーディオおよびビデオファイル等)を管理することは、様々な課題を提示する。具体的には、それぞれ異なるネットワーク機能および処理機能を有する様々なエンドポイント装置115にサービスを提供するために、各コンテンツタイトルは、複数の(例えば、10以上の)異なるビットレートで符号化され得る。その結果、例えば映画またはテレビショー等の単一のコンテンツタイトルが、複数のファイル218(各ファイルは、そのコンテンツタイトルを異なるビットレートで符号化したものであり、各ファイルは、コンテンツタイトルをエンドポイント装置115に供給するよう構成されたコンテンツサーバ110によって格納され得る)と関連づけられ得る。
従って、コンテンツサーバ110を、複数のファイル218とそれぞれ関連づけられたコンテンツタイトルの大きなカタログでフィルする試みは、かなりのネットワークリソースを消費し得る。従って、各コンテンツサーバ110が、第三者ソース(例えば、フィルソース130等)から直接、および/または、第三者ネットワークを介してファイル218を取り出す場合には、かなりのアクセス料金および帯域幅料金がかかり得る。
一方、ファイル218を最初に受信する小数のローカルコンテンツサーバ110のみを用いてコンテンツサーバ110をフィルすることを試みることによって、第三者ソース/ネットワークの使用を最小化することは、最初のコンテンツサーバ110に不当に大きな負荷を課し得る。そのような負荷は、他のコンテンツサーバ110がファイル218を求める要求でコンテンツサーバ110を溢れさせた際の、最初のコンテンツサーバ110におけるネットワーク負荷および処理負荷の変動につながり得る。
従って、様々な実施形態において、各ファイル218は、ネットワークインフラ100内において、ネットワークインフラ100に含まれるサーバIDおよびファイル218と関連づけられたファイルIDに基づいて正確に算出可能なコンテンツサーバ110の特定の階層を介して複製され得る。ファイル218が位置することになるコンテンツサーバ110は、サーバIDおよびファイルIDに基づいて正確に算出できるので、ファイル218へのアクセスが決定論的なものとなり、キャッシュミスの発生が低減または解消される。各階層に含まれるコンテンツサーバ110の数は、例えば、特定のファイル218に対する人気および需要に基づいて、各階層毎にまたは各ファイル218毎に複製因子を指定することによって、制御され得る。その結果、コンテンツサーバ110がローカルにフィルされる程度を調節でき、第三者ネットワーク料金およびストレージ料金を低減できる。更に、各階層に含まれるコンテンツサーバ110はファイルIDに基づいて決定されるので、各ファイル218は、ネットワークインフラ100にわたって、それぞれ異なる一続きのコンテンツサーバ110を介して複製され得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ110間により均等に分散され、コンテンツサーバ110を介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
一部の実施形態では、複数のファイル218はカテゴリーによってグループ化され、各カテゴリーと関連づけられたファイル218には固有のファイルIDが割り当てられる。例えば、コンテンツタイトルA(例えば、映画またはテレビショー)と関連づけられたファイル218には第1のファイルIDが割り当てられ、コンテンツタイトルBと関連づけられたファイル218には、第2のファイルIDが割り当てられ得る。更に、一部の実施形態では、コンテンツタイトルの異なるビットレートでの各符号化に、それぞれ異なるファイルIDが割り当てられる。即ち、そのような実施形態では、コンテンツタイトルAおよび第1のビットレートと関連づけられたファイル218には第1のファイルIDが割り当てられ、コンテンツタイトルAおよび第2のビットレートと関連づけられたファイル218には第2のファイルIDが割り当てられ得る。そのような実施形態は、1以上のコンテンツサーバ110の各々に、特定のカテゴリーと関連づけられたファイル218の完全なセットが一緒に格納されることを可能にする。
更に、一部の実施形態では、各ファイル218に固有のファイルIDが割り当てられる。例えば、コンテンツタイトルAおよび第1のビットレートと関連づけられた各ファイル218に、それぞれ異なるファイルIDが割り当てられ得る。そのような実施形態は、例えば、ファイル218が特定のエンドポイント装置115に並行して伝送されるのを可能にするために、特定のカテゴリーと関連づけられたファイル218が、複数のコンテンツサーバ110にわたって分散されるのを可能にする。更に、一部の実施形態では、固有のファイルIDがファイル218に割り当てられる粒度は、カテゴリー毎に様々なであり得る。
様々な実施形態において、特定のファイル218と関連づけられたファイルIDは、JavaScript(登録商標) Object Notation(JSON)オブジェクトで符号化される。「JavaScript」 Object Notation(JSON)は、「オブジェクト」と称されるデータ構造を、一般的に「JavaScript」スクリプト言語と適合性がある方法で表すための表現法である。オブジェクトは、各エレメントがキーで示される1以上のエレメントを含み得る。各エレメントは、ストリング、数、別のオブジェクト、アレイ、Boolean値、またはnullであり得る。アレイは、角括弧「[」および「]」によって線引きされるエレメントの順序付きリストである。アレイ内のエレメントは、コンマによって分けられる。ファイル218と関連づけられた例示的なJSONオブジェクトを、以下の表1に示す。
Figure 0006564471
上記に示した例示的なJSONオブジェクトにおいて、最初と最後の波括弧は、オブジェクトの開始および終了を示す。「videos」は、角括弧「[」および「]」によって線引きされたビデオのアレイについてのキーである。アレイは、波括弧によって線引きされた2つのエレメントを含む。第1のそのようなエレメントは、図示されているような値を有する「id」フィールド、「title(タイトル)」フィールド、「boxart」フィールド、および「synopsis(粗筋)」フィールドを含むオブジェクトである。同様に、アレイ内の第2のエレメントは図示されているような値を有する。従って、この例では、第1のファイル218(「Eternal Sunshine of the Spotless Mind」)と関連づけられたファイルID23432、および第2のファイル218(「The Mask」)と関連づけられたファイルID23521が指定されている。
更に、一部の実施形態では、コンテンツサーバ110は、アレイに格納されている複数のファイルIDを含むJSONオブジェクトを制御アプリケーション317に送信することによって、指示をダウンロードする(例えば、位置、時間遅延等をダウンロードする)ことを要求し得る。そのようなファイルIDのアレイを含む例示的なJSONオブジェクトを以下の表2に示す。
Figure 0006564471
図4は、本発明の様々な実施形態による、図1のコンテンツサーバ110が、どのように地理的に分散されているかを示す。図示されるように、コンテンツサーバ110は、地域的クラスタ410、ローカルクラスタ420、および明示的クラスタ430を含む様々なクラスタとして組織化され得る。
例えば、図4に示されている例示的な地理的分布では、コンテンツサーバ110は、地域的クラスタ410−1および地域的クラスタ410−2として組織化される。一部の実施形態では、各地域的クラスタ410は、それぞれ異なる市、州、国、時間帯、大陸等と関連づけられ得る。各地域的クラスタ410は、1以上のローカルクラスタ420を含む。例えば、地域的クラスタ410−1はローカルクラスタ420−1およびローカルクラスタ420−2を含み、地域的クラスタ410−2はローカルクラスタ420−3、ローカルクラスタ420−4、およびローカルクラスタ420−5を含む。各ローカルクラスタ420は1以上の明示的クラスタ430を含み、各明示的クラスタ430は1以上のコンテンツサーバ110を含む。例えば、図4に示されている各明示的クラスタ430は5つのコンテンツサーバ110を含む。しかし、各明示的クラスタ430には、任意の数のコンテンツサーバ110が含まれてよい。更に、任意の数の地域的クラスタ410、ローカルクラスタ420、明示的クラスタ430、およびコンテンツサーバ110がネットワークインフラ100に含まれてよい。
図5A〜図5Cは、本発明の様々な実施形態による、図1の地理的に分散されたコンテンツサーバ110の複数の異なる階層にわたってファイル218を複製する技術を示す。ピークトラフィック需要および冗長性要件を満たすために、各地域的クラスタ410に含まれるコンテンツサーバ110にわたって、各ファイル218の複数のコピーが複製され得る。従って、様々な実施形態では、ファイル218がどこに格納されるべきかを予め計算することを必要とせず、且つ、集中型のサーバにコンテンツサーバ110のインデックスを格納することを必要とせずに、ファイル218を複数のコンテンツサーバ110にわたって均等に複製するために、1以上のハッシュ処理(例えば、後述する一貫したハッシュ処理等)が、制御アプリケーション317によって行われ得る。本明細書に記載される技術は、特定のハッシュ処理に関して実装されるが、特定のファイル218が複製される階層に含まれるコンテンツサーバ110を選択するために、任意の技術的に可能な処理または技術が用いられ得る。
様々な実施形態において、制御アプリケーション317は、コンテンツサーバ110と関連づけられた各サーバIDに対するハッシュ処理を行う(例えば、MD5 message-digestアルゴリズムを適用する)ことにより、特定の地域的クラスタ410に含まれる各コンテンツサーバ110についてのハッシュ値を生成し得る。次に、制御アプリケーション317は、得られたハッシュ値をソートして、ハッシュデータ構造(例えば、ハッシュリング、ハッシュテーブル等)を構成する。次に、特定のファイル218を地域的クラスタ410にわたって複製するためにどのコンテンツサーバ110が用いられるかを決定するために、制御アプリケーション317は、ファイル218と関連づけられたファイルIDに、同じ(または異なる)ハッシュ処理を適用することにより、ファイル218についてのハッシュ値を生成する。
次に、制御アプリケーション317は、ファイル218と関連づけられたハッシュ値をハッシュデータ構造と比較し、ファイル218のハッシュ値に最も近いハッシュ値を有するコンテンツサーバ110を、その特定のファイル218についての地域的マスター510として選択する。更に、ファイル218および/または地域的マスター510階層について複製因子(RF)>1が指定されている場合には、制御アプリケーション317は、ハッシュデータ構造において(例えば、ハッシュ値に基づく)次となる1以上の更なるコンテンツサーバ110を、地域的マスター510として選択する。一部の実施形態では、制御アプリケーション317は、所望の数の地域的マスター510が選択されるまで、地域的クラスタ410について選択された最初の地域的マスター510と関連づけられたハッシュ値から開始して、ハッシュリングを周回してまたはハッシュテーブルを下に向かって「巡回」することにより、ハッシュデータ構造における次のコンテンツサーバ110を選択する。
地域的クラスタ410と関連づけられた地域的マスター510が選択されたら、地域的マスター510は、制御アプリケーション317から受信された指示に基づいて、図5Aに示されているように、フィルソース130からファイル218を直ちに取り出す(515)。説明を明確にするために、図5Aに示されている各地域的クラスタ410には、1つの地域的マスター510のみが示されている。しかし、RF>1である実施形態では、特定のファイル218について複数の地域的マスター510が選択されて、フィルソース130からファイル218を直ちに取り出し得る。
次に、制御アプリケーション317は、ハッシュデータ構造を、特定のローカルクラスタ420内に位置するコンテンツサーバ110のみを含むようにフィルタリングする。次に、制御アプリケーション317は、フィルタリングされたハッシュデータ構造に含まれる1以上の次のコンテンツサーバ110を、ローカルクラスタ420についてのローカルマスター520として選択する。例えば、図5Bを参照すると、ローカルクラスタ420−1についての1以上のローカルマスター520を決定する際、制御アプリケーション317は、ハッシュデータ構造を、ローカルクラスタ420−1に含まれない全てのコンテンツサーバ110を除外するようフィルタリングする。次に、制御アプリケーション317は、フィルタリングされたハッシュデータ構造内に残っている、ハッシュ値による次のコンテンツサーバ110を、ローカルクラスタ420−1についてのローカルマスター520として選択する。更に、ファイル218および/またはローカルマスター520階層についてRF>1が指定されている場合には、制御アプリケーション317は、フィルタリングされたハッシュデータ構造に含まれる1以上の次のコンテンツサーバ110を、ローカルクラスタ420−1についてのローカルマスター520として選択する。次に、制御アプリケーション317は、地域的クラスタ410に含まれる各ローカルクラスタ420について、この処理を繰り返す。
図5Bに示されているように、ローカルマスター520は、地域的マスター510からファイル218を取り出す(525)。制御アプリケーション317は、更に、ローカルマスター520に、ファイル218をいつどのように取り出し可能かに関する指示を供給する。一部の実施形態では、地域的マスター510がファイル218を求める要求で圧倒されるのを防止するために、制御アプリケーション317は、各ローカルクラスタ420と関連づけられたローカルマスター520に、地域的マスター510からファイル218を取り出す(525)前に、第1の所定の期間(例えば、地域的マスター510がフィルソース130からファイル218を取り出した(515)後の1〜3時間)だけ待機するよう指示する。更に、制御アプリケーション317は、ローカルマスター520に、第1の所定の期間より長い第2の所定の期間(例えば、地域的マスター510がフィルソース130からファイル218を取り出した(515)後の2〜4時間)の後でのみ、より高価なソース(例えば、フィルソース130等)からファイル218を取り出すよう指示し得る。ローカルマスター520がより高価なソースからファイルを取り出し可能になるまでの第2の所定の期間を実装することは、ネットワークコストの低減と、対応する地域的マスター510と関連づけられたネットワーク上の問題、ソフトウェア/ハードウェアの不具合等に起因する長い遅延の発生の低減との間のバランスを取る。更に、一部の実施形態では、ローカルマスター520は、異なる地域的クラスタ410と関連づけられた地域的マスター510からファイル218を取り出してもよい。
必要に応じて、制御アプリケーション317は、ハッシュデータ構造を、特定の明示的クラスタ430内に位置するコンテンツサーバ110のみを含むよう再度フィルタリングし得る。次に、制御アプリケーション317は、フィルタリングされたハッシュデータ構造に含まれる1以上の次のコンテンツサーバ110を、明示的クラスタ430についての明示的マスター530として選択する。例えば、図5Cを参照すると、明示的クラスタ430−1についての1以上の明示的マスター530を決定する際、制御アプリケーション317は、ハッシュデータ構造を、明示的クラスタ430−1に含まれない全てのコンテンツサーバ110を除外するようフィルタリングし得る。次に、制御アプリケーション317は、フィルタリングされたハッシュデータ構造内に残っている、ハッシュ値による次のコンテンツサーバ110を、明示的クラスタ430−1についての明示的マスター530−3として選択する。更に、ファイル218および/または明示的マスター530階層についてRF>1が指定されている場合には、制御アプリケーション317は、フィルタリングされたハッシュデータ構造に含まれる1以上の次のコンテンツサーバ110を、明示的クラスタ430−1についての明示的マスター530として選択し得る。次に、制御アプリケーション317は、地域的クラスタ410に含まれる各明示的クラスタ430について、この処理を繰り返す。更に、制御アプリケーション317は、インフラネットワーク100に含まれる各地域的クラスタ410について、地域的マスター510、ローカルマスター520、および明示的マスター530を決定する処理全体を繰り返す。
明示的マスター530は、図5Cに示されているように、ローカルマスター520からファイル218を取り出す(535)。一部の実施形態では、ローカルマスター520がファイル218を求める要求で圧倒されるのを防止するために、制御アプリケーション317は、各明示的クラスタ430と関連づけられた明示的マスター530に、ローカルマスター520からファイル218を取り出す(55)前に、第1の所定の期間(例えば、ローカルマスター520が地域的マスター510からファイル218を取り出した(525)後の1〜3時間)だけ待機するよう指示する。更に、制御アプリケーション317は、明示的マスター530に、第2の所定の期間(例えば、ローカルマスター520が地域的マスター510からファイル218を取り出した(525)後の2〜4時間)の後で、より高価なソース(例えば、地域的マスター510等)からファイル218を取り出すよう指示し得る。更に、制御アプリケーション317は、明示的マスター530に、第3の所定の期間(例えば、ローカルマスター520が地域的マスター510からファイル218を取り出した(525)後の4〜6時間)の後で、フィルソース130からファイル218を取り出すよう指示し得る。
特定の明示的クラスタ430内の明示的マスター530が、ファイル218のコピーを受信したら、明示的クラスタ430に含まれる非マスター540の各々は、明示的マスター530からファイル218を取り出し可能になる。明示的クラスタ430内の非マスター540と明示的マスター530との間での取り出しは、典型的には、いかなる第三者ネットワーク料金またはストレージ料金もかからないので、有利である。一部の実施形態では、制御アプリケーション317は、非マスター540に、明示的マスター530からファイル218を取り出す前に、必要に応じて設けられる第1の所定の期間(例えば、明示的マスター530がローカルマスター520からファイル218を取り出した(535)後の1〜3時間)だけ待機するよう指示する。更に、制御アプリケーション317は、非マスター540に、より高価なソース(例えば、ローカルマスター520、地域的マスター510、およびフィルソース130等)からファイル218を取り出す前に、待機するよう指示し得る。
ハッシュデータ構造内に一続きに位置するコンテンツサーバ110が複数の人気のあるファイル218を受信した結果、性能が低下するという「魅力的な隣人(hot neighbor)」問題を回避するために、制御アプリケーション317は、ハッシュデータ構造を生成する前に、必要に応じて、各サーバIDを複数の値と組み合わせる。例えば、制御アプリケーション317は、各サーバIDを、決まった範囲の1,000個の定数と組み合わせ得る。次に、制御アプリケーション317は、各組合せに対するハッシュ処理を行って、各コンテンツサーバ110についての1,000個のハッシュ値を生成する。その結果、各コンテンツサーバ110は、ハッシュデータ構造内に複数回現れることになり、コンテンツサーバ110の同じサブセットが複数の人気のあるファイル218を受信する可能性が大きく低減される。その一例を以下に示す。
特定の例において、特定の地域的クラスタ410は、20個のコンテンツサーバを含むものとする。ハッシュデータ構造(例えば、ハッシュリング)を生成するために、制御アプリケーション317は、20個のサーバIDの各々を、決まった範囲の定数(例えば、1〜1000)と組み合わせ、各組合せに対してハッシュ処理を適用し、得られた20,000個のハッシュ値をソートして、ハッシュリングを生成する。更に、コンテンツサーバ110の名称はA〜Tであるとすると、得られたハッシュリングは以下のハッシュ値を含み得る:
00000000:D
00003064:A
00005662:S
00007174:N
00009947:A
00012516:T
00015577:Q
00016652:R
00021625:L
00025057:Q
00028665:K

23451234:F
23453753:R
23456802:Q
23459919:I
23462687:A
23463273:I
23466229:T
23471069:M
23475876:G
23476011:T
(ハッシュリングは最初に戻るようループする)
RF=3とすると、次に、制御アプリケーション317は、ファイル218と関連づけられたファイルIDに対するハッシュ処理を行い、ハッシュリング上で遭遇した最初の3つのコンテンツサーバ110を選択する。例えば、ファイルIDに対して行ったハッシュ処理が00015500のハッシュ値を生じたとすると、00015500の後に遭遇する最初のコンテンツサーバ110は00015577であるので、制御アプリケーション317はQをプライマリコンテンツサーバ110として選択し、RおよびLをレプリカコンテンツサーバ110として選択する。
図6Aおよび図6Bは、本発明の様々な実施形態による、地理的に分散されたコンテンツサーバ110にわたってファイル218を複製する方法のステップのフロー図を示す。この方法のステップは図1〜図5Cのシステムに関して説明されるが、当業者には、この方法のステップを任意の順序で行うよう構成された任意のシステムが本発明の範囲内に含まれることが理解されよう。
図6Aに示されているように、方法600はステップ605において開始し、そこで、制御アプリケーション317は、コンテンツサーバ110の特定の地域的クラスタ410に含まれる各コンテンツサーバ110と関連づけられたサーバ識別子(ID)に対する第1のハッシュ処理を行うことによって、ハッシュデータ構造(例えば、ハッシュリングまたはハッシュテーブル等)を生成する。ステップ610において、制御アプリケーション317は、ファイル218と関連づけられたファイルIDに基づく第2のハッシュ処理を行うことによって、ハッシュ値を生成する。一部の実施形態では、第1のハッシュ処理と第2のハッシュ処理とは同じ(例えば、MD5ハッシュ処理)である。しかし、様々な実施形態において、第1のハッシュ処理と第2のハッシュ処理とはそれぞれ異なる処理を含んでもよい。更に、一部の実施形態では、第1のハッシュ処理および/または第2のハッシュ処理は、サーバIDおよび/またはファイルIDを改変する1以上の変換を含み得る。
ステップ615において、制御アプリケーション317は、第1のハッシュ値をハッシュデータ構造と比較することによって、地域的クラスタ410に含まれる1以上の地域的マスター510を決定する。様々な実施形態において、1以上の地域的マスター510は、地域的クラスタ410に含まれるコンテンツサーバ110のサブセットで構成される。次に、ステップ620において、制御アプリケーション317は、各地域的マスター510に、フィルソース130からファイル218を取り出させる。例えば、制御アプリケーション317は、地域的マスター510から受信された、ファイルIDを指定するJSONアレイに応答して、各地域的マスター510に指示を発行することによって、地域的マスター510にファイル218を取り出させてもよい。
次に、ステップ625において、制御アプリケーション317は、地域的クラスタ410に含まれるコンテンツサーバ110のローカルクラスタ420を選択する。ステップ630において、制御アプリケーション317は、ファイルIDについて生成されたハッシュ値に基づいて、ローカルクラスタ420に含まれる1以上のローカルマスター520を決定するために、ハッシュデータ構造をフィルタリングする。様々な実施形態において、1以上のローカルマスター520は、ローカルクラスタ420に含まれるコンテンツサーバ110のサブセットで構成される。ステップ635において、制御アプリケーション317は次に、各ローカルマスター520に、地域的マスター510からファイル218を取り出す前に所定の期間だけ待機させる。一部の実施形態では、ローカルマスター520が地域的マスター510からファイル218を取り出す前に待機することを要求される所定の時間は、各ローカルマスター520について同じであり、一方、他の実施形態では、所定の時間はローカルマスター520にわたって様々であり得る。
ステップ640において、制御アプリケーション317は、更なるローカルクラスタ420についての1以上のローカルマスター520が決定される必要があるか否かを決定する。制御アプリケーション317が、更なるローカルクラスタ420についての1以上のローカルマスター520が決定される必要があることを決定した場合には、方法600は上述のステップ625に戻る。制御アプリケーション317が、更なるローカルクラスタ420についてのローカルマスター520が決定される必要がないことを決定した場合には、方法600は図6Bに示されているステップ645に進み、そこで、制御アプリケーション317は、コンテンツサーバ110の明示的クラスタ430を選択する。
ステップ650において、制御アプリケーション317は、ハッシュ値に基づいて、明示的クラスタ430に含まれる1以上の明示的マスター530を決定するために、ハッシュデータ構造をフィルタリングする。様々な実施形態において、1以上の明示的マスター530は、明示的クラスタ430に含まれるコンテンツサーバ110のサブセットで構成される。
地域的マスター510、ローカルマスター520、および明示的マスター530は、サーバIDおよびファイルIDに基づいて決定されるので、インフラネットワーク100内においてファイル218が複製された位置、および、各位置からファイル218を取り出し可能な時間は、サーバIDおよびファイルIDのレコードを有する任意のコンテンツサーバ110によって決定可能である。従って、例えば制御サーバ217等のエンティティがマスターインデックスを維持することを必要とせずに、ファイル218は、インフラネットワーク100を通して非集中的な耐障害性が高い方法で複製され得る。
ステップ655において、制御アプリケーション317は、各明示的マスター530に、ローカルマスター520からファイル218を取り出す前に所定の期間だけ待機させる。一部の実施形態では、明示的マスター530がローカルマスター520からファイル218を取り出す前に待機することを要求される所定の時間は、各明示的マスター530について同じであり、一方、他の実施形態では、所定の時間は明示的マスター530にわたって様々であり得る。
ステップ660において、制御アプリケーション317は、更なる明示的クラスタ430についての1以上の明示的マスター530が決定される必要があるか否かを決定する。制御アプリケーション317が、更なる明示的クラスタ430についての1以上の明示的マスター530が決定される必要があることを決定した場合には、方法600は上述のステップ645に戻る。制御アプリケーション317が、更なる明示的クラスタ430についての明示的マスター530が決定される必要がないことを決定した場合には、方法600はステップ665に進み、そこで、制御アプリケーション317は、各非マスターサーバ540に、明示的マスター530からファイル218を取り出す前に所定の期間だけ待機させる。一部の実施形態では、非マスターサーバ540が明示的マスター530からファイル218を取り出す前に待機することを要求される所定の時間は、各非マスターサーバ540について同じであり、一方、他の実施形態では、所定の時間は非マスターサーバ540にわたって様々であり得る。
ステップ670において、制御アプリケーション317は、更なるファイル218についての地域的マスター510、ローカルマスター520、および/または明示的マスター530が決定される必要があるか否かを決定する。制御アプリケーション317が、更なるファイル218についての地域的マスター510、ローカルマスター520、および/または明示的マスター530が決定される必要があることを決定した場合には、方法600はステップ610に戻る。制御アプリケーション317が、更なるファイル218についての地域的マスター510、ローカルマスター520、および/または明示的マスター530が決定される必要がないことを決定した場合には、方法600は終了する。
要約すると、制御アプリケーションは、複数のサーバIDに対するハッシュ処理を行って、ハッシュデータ構造を生成する。次に、制御アプリケーションは、ファイルIDに対するハッシュ処理を行い、ハッシュ値をハッシュデータ構造と比較して、1以上の地域的マスターを選択する。次に、ファイルが複製されるローカルマスターおよび明示的マスターをそれぞれ決定するために、ハッシュデータ構造は、各ローカルクラスタおよび明示的クラスタについてフィルタリングされる。制御アプリケーションは、更に、インフラネットワークを通してファイルが複製される速度を制御するために、各ローカルマスター階層、明示的マスター階層、および非マスター階層に所定の遅延を割り当てる。
本開示の技術の少なくとも1つの長所は、エンティティがマスターインデックスを維持することを必要とせずに、コンテンツサーバの特定の階層を介して、予測可能で非集中的な耐障害性が高い方法で、各ファイルをネットワークにわたって複製できることである。更に、ファイルが複製される各階層に含まれるコンテンツサーバの数は、例えば、ファイルに対する人気および需要に基づいて、階層毎にまたはファイル毎に複製因子を指定することによって、制御され得る。更に、下位の階層が上位の階層に含まれるコンテンツサーバを溢れさせることを防止して、サーバ負荷の変動の深刻度を低減するために、各階層に所定の遅延が割り当てられ得る。更に、各階層に含まれるコンテンツサーバは、ファイルと関連づけられた識別子に基づいて決定されるので、各ファイルは、それぞれ異なる一続きのコンテンツサーバを介して、ネットワークインフラを通って伝搬し得る。その結果、ネットワーク負荷および処理負荷がコンテンツサーバ間により均等に分散され、コンテンツサーバを介してウェブに基づくアプリケーションにアクセスしているユーザに対して提供されるサービスの全体的な品質が高まる。
説明の目的で、様々な実施形態の説明を示したが、これらは網羅的であることを意図したものではなく、開示された実施形態に限定することは意図しない。当業者には、記載された実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が自明である。
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具現化され得る。従って、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとり得るものであり、それらの全てを、本明細書においては一般的に「回路」、「モジュール」、または「システム」と称する。更に、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する1以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
1以上のコンピュータ可読媒体の任意の組合せが用いられ得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組合せであり得るが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例(網羅的ではないリスト)としては、1以上のワイヤを有する電気的接続、ポータブルコンピュータのディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光ストレージ装置、磁気ストレージ装置、またはそれらの任意の適切な組合せが挙げられる。本明細書の文脈において、コンピュータ可読記憶媒体は、指示を実行するシステム、装置、またはデバイスによって用いられる、またはそれらに関連して用いられるプログラムを収容または格納可能な、任意の有体の媒体であり得る。
上記において、本開示の態様を、本開示の実施形態による方法、装置(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明した。フローチャートおよび/またはブロック図の各ブロック、並びに、フローチャートおよび/またはブロック図のブロックの組合せは、コンピュータプログラムの指示によって実装され得ることが理解されよう。これらのコンピュータプログラム指示は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに供給されてマシンを生成し得るものであり、そのコンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される指示が、フローチャートおよび/またはブロック図の1または複数のブロックにおいて指定されている機能/動作の実装を可能にするようになっている。そのようなプロセッサは、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルプロセッサであり得るが、それらに限定されない。
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および処理を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されている論理的機能を実装するための1以上の実行可能な指示を含むモジュール、セグメント、またはコードの一部を表し得る。なお、幾つかの別の実装例においては、ブロック内に記されている機能が、図面に記されている順序から外れて生じ得る。例えば、続けて示されている2つのブロックが、含まれる機能に応じて、実際には略並列に実行される場合もあり、または、それらのブロックが逆の順序で実行される場合もある。また、ブロック図および/またはフローチャートの各ブロック、並びに、ブロック図および/またはフローチャートのブロックの組合せは、指定されている機能もしくは動作を行う専用ハードウェアに基づくシステムによって、または、専用ハードウェアとコンピュータ指示との組合せによって実装され得る。
上記において、特定の実施形態を参照して本発明を説明した。しかし、当業者には、添付の特許請求の範囲において述べられる本発明のより広い趣旨および範囲から逸脱することなく、本発明に対して様々な修正および変更が行われ得ることが理解されよう。例えば、限定するものではなく、本明細書における説明の多くは、特定のタイプのファイル、ハッシュ処理、およびサーバ階層を参照しているが、当業者には、本明細書に記載されるシステムおよび技術が、他のタイプのデータファイル、アルゴリズム、および階層にも適用可能であることが認識されよう。従って、上記の説明および図面は、限定するものではなく、説明的なものと見なされるものである。
上記は本開示の実施形態に向けられているが、本開示の基本的な範囲から逸脱することなく、本開示の他のおよび更なる実施形態も考案され得るものであり、本開示の範囲は添付の特許請求の範囲によって決定される。
100 ネットワークインフラ
105 通信ネットワーク
110 コンテンツサーバ
115 エンドポイント装置
120 制御サーバ
130 フィルソース
206 システムディスク
208 入出力装置インターフェース
210 ネットワークインターフェース
212 相互接続
214 メモリ
216 入出力(I/O)装置
217 サーバアプリケーション
218 ファイル
306 システムディスク
308 入出力装置インターフェース
310 ネットワークインターフェース
312 相互接続
314 メモリ
316 I/O装置
317 制御アプリケーション
318 データベース
410 地域的クラスタ
420 ローカルクラスタ
430 明示的クラスタ
510 地域的マスター
520 ローカルマスター
530 明示的マスター

Claims (20)

  1. プロセッサによって実行される制御アプリケーションにより実装される方法であって、
    地域的サーバクラスタに含まれる1以上の地域的マスターサーバを決定する工程と、
    各前記地域的マスターサーバに、フィルソースからファイルを取り出させる工程と、
    前記地域的サーバクラスタに含まれる少なくとも1つのローカルサーバクラスタについて、
    前記少なくとも1つのローカルサーバクラスタに含まれる1以上のローカルマスターサーバを決定する工程と、
    各前記ローカルマスターサーバに、前記1以上の地域的マスターサーバのうちの1つから前記ファイルを取り出させる工程と
    を含むことを特徴とする方法。
  2. 前記少なくとも1つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
    前記明示的サーバクラスタに含まれる1以上の明示的マスターサーバを決定する工程と
    各前記明示的マスターサーバに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる工程と
    を更に含む、請求項1記載の方法。
  3. 少なくとも1つの前記ローカルマスターサーバに、前記1以上の地域的マスターサーバのうちの1つから前記ファイルを取り出す前に、第1の所定の期間だけ待機させる工程と、少なくとも1つの前記明示的マスターサーバに、前記少なくとも1つのローカルマスターサーバから前記ファイルを取り出す前に、第2の所定の期間だけ待機させる工程とを更に含む、請求項2記載の方法。
  4. ハッシュデータ構造を生成するために、前記地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子(ID)が関連づけられた複数のサーバIDに基づく第1のハッシュ処理を行う工程と、
    第1のハッシュ値を生成するために、前記ファイルと関連づけられたファイルIDに基づく第2のハッシュ処理を行う工程と
    を更に含み、
    前記1以上の地域的マスターサーバを決定する前記工程が、前記第1のハッシュ値を前記ハッシュデータ構造と比較する工程を含む、請求項1記載の方法。
  5. 前記1以上のローカルマスターサーバを決定する前記工程が、前記第1のハッシュ値に基づいて、前記ハッシュデータ構造に対するフィルタリング処理を行う工程を含む、請求項4記載の方法。
  6. 前記少なくとも1つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
    前記明示的サーバクラスタに含まれる1以上の明示的マスターサーバを決定するために、前記第1のハッシュ値に基づいて前記ハッシュデータ構造をフィルタリングする工程と、
    各前記明示的マスターに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる工程と
    を更に含む、請求項5記載の方法。
  7. 前記ハッシュデータ構造がハッシュリングを含み、前記第1のハッシュ処理および前記第2のハッシュ処理が、一貫したハッシュ処理を含む、請求項4記載の方法。
  8. 前記第1のハッシュ処理を行う前記工程が、各前記サーバIDについて、
    複数の異なるサーバIDインスタンスを生成するために、前記サーバIDを複数の異なる値と組み合わせる工程と、
    複数のハッシュデータ構造値を生成するために、各前記複数のサーバIDインスタンスに対する前記第1のハッシュ処理を行う工程と、
    前記複数のハッシュデータ構造値を前記ハッシュデータ構造に格納する工程と
    を含む、請求項4記載の方法。
  9. 前記地域的マスターサーバの数および前記ローカルマスターサーバの数が、前記ファイルと関連づけられた少なくとも1つの複製因子に基づく、請求項1記載の方法。
  10. 制御アプリケーションを格納するメモリと、
    前記メモリに結合されたプロセッサと
    を含む制御サーバであって、
    前記制御アプリケーションが、前記プロセッサによって実行された際、該プロセッサを、
    地域的サーバクラスタに含まれる第1の複数の地域的マスターサーバを決定し、
    各前記地域的マスターサーバに、フィルソースからファイルを取り出させ、
    前記地域的サーバクラスタに含まれる少なくとも1つのローカルサーバクラスタについて、
    前記少なくとも1つのローカルサーバクラスタに含まれる1以上のローカルマスターサーバを決定し、
    各前記ローカルマスターサーバに、前記第1の複数の地域的マスターサーバのうちの1つから前記ファイルを取り出させる
    よう構成することを特徴とする制御サーバ。
  11. 前記制御アプリケーションが、更に、前記プロセッサを、前記少なくとも1つのローカルサーバクラスタに含まれる各明示的サーバクラスタについて、
    前記明示的サーバクラスタに含まれる1以上の明示的マスターサーバを決定し、
    各前記明示的マスターに、前記ローカルサーバクラスタと関連づけられたローカルマスターサーバから前記ファイルを取り出させる
    よう構成する、請求項10記載の制御サーバ。
  12. 前記制御アプリケーションが、更に、前記プロセッサを、少なくとも1つの前記ローカルマスターサーバに、前記第1の複数の地域的マスターサーバのうちの1つから前記ファイルを取り出す前に第1の所定の期間だけ待機させ、少なくとも1つの前記明示的マスターサーバに、前記少なくとも1つのローカルマスターサーバから前記ファイルを取り出す前に第2の所定の期間だけ待機させるよう構成する、請求項11記載の制御サーバ。
  13. 前記制御アプリケーションが、更に、前記プロセッサを、
    ハッシュデータ構造を生成するために、前記地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子(ID)が関連づけられた複数のサーバIDに基づく第1のハッシュ処理を行い、
    第1のハッシュ値を生成するために、前記ファイルと関連づけられたファイルIDに基づく第2のハッシュ処理を行う
    よう構成し、
    前記プロセッサが、前記第1のハッシュ値を前記ハッシュデータ構造と比較することによって、前記第1の複数の地域的マスターサーバを決定するよう構成される、請求項10記載の制御サーバ。
  14. 前記制御アプリケーションが、更に、前記プロセッサを、
    第2のハッシュ値を生成するために、第2のファイルと関連づけられた第2のファイルIDに基づく第3のハッシュ処理を行い、
    前記地域的サーバクラスタに含まれる第2の複数の地域的マスターサーバであって、前記第1の複数の地域的マスターサーバに含まれない少なくとも1つのサーバを含む第2の複数の地域的マスターサーバを決定するために、前記第2のハッシュ値を前記ハッシュデータ構造と比較し、
    各前記地域的マスターサーバに、前記フィルソースから前記第2のファイルを取り出させ、
    前記地域的サーバクラスタに含まれる前記少なくとも1つのローカルサーバクラスタについて、
    前記ローカルサーバクラスタに含まれる複数のローカルマスターサーバであって、前記1以上のローカルマスターサーバに含まれない少なくとも1つのサーバを含む複数のローカルマスターサーバを決定するために、前記第2のハッシュ値に基づいて、前記ハッシュデータ構造に対するフィルタリング処理を行い、
    各前記ローカルマスターサーバに、前記第2の複数の地域的マスターサーバのうちの1つから前記第2のファイルを取り出させる
    よう構成する、請求項13記載の制御サーバ。
  15. 前記制御アプリケーションが、前記プロセッサを、前記地域的サーバクラスタに含まれるサーバからファイルIDのアレイを受信したことに応答して、前記第1のハッシュ処理を行い、前記第1のハッシュ値を前記ハッシュデータ構造と比較するよう構成する、請求項13記載の制御サーバ。
  16. 前記ファイルIDのアレイが、前記サーバから受信されたJavaScript(登録商標) Object Notation(JSON)オブジェクトに含まれる、請求項15記載の制御サーバ。
  17. 前記制御アプリケーションが、前記プロセッサを、
    前記少なくとも1つのローカルサーバクラスタに含まれる各前記ローカルサーバクラスタについて、
    前記ローカルサーバクラスタに含まれない全てのサーバを前記ハッシュデータ構造から除外し、
    前記1以上のローカルマスターサーバを選択するために、前記ハッシュデータ構造内に残っている、前記第1のハッシュ値に最も近いハッシュ値を有する1以上のサーバを決定する
    ことによって、前記1以上のローカルマスターサーバを決定するよう構成する、請求項13記載の制御サーバ。
  18. 前記第1の複数の地域的マスターサーバに含まれるサーバの第1の数が、地域的マスターサーバ階層と関連づけられた第1の複製因子に基づくものであり、前記1以上のローカルマスターサーバに含まれるサーバの第2の数が、ローカルマスターサーバ階層と関連づけられた第2の複製因子に基づくものである、請求項10記載の制御サーバ。
  19. プロセッサによって指示が実行された際に、前記プロセッサに、
    ハッシュリングを生成するために、地域的サーバクラスタに含まれるそれぞれ異なるサーバに各サーバ識別子(ID)が関連づけられた複数のサーバIDに基づく第1のハッシュ処理を行う工程と、
    第1のハッシュ値を生成するために、ファイルと関連づけられたファイルIDに基づく第2のハッシュ処理を行う工程と、
    前記地域的サーバクラスタに含まれる1以上の地域的マスターサーバを選択するために、前記ハッシュリング上の、前記第1のハッシュ値に最も近い1以上のハッシュ値を決定する工程と、
    各前記地域的マスターサーバに、フィルソースから前記ファイルを取り出させる工程と、
    前記地域的サーバクラスタに含まれる複数のローカルサーバクラスタの各々について、
    前記ローカルサーバクラスタに含まれる1以上のローカルマスターサーバを決定するために、前記第1のハッシュ値に基づいて、前記ハッシュリングに対するフィルタリング処理を行う工程と、
    各前記ローカルマスターサーバに、前記1以上の地域的マスターサーバのうちの1つから前記ファイルを取り出させる工程と
    を行わせる指示を含むことを特徴とする、非一過性のコンピュータ可読記憶媒体。
  20. 前記ハッシュリングに対する前記フィルタリング処理を行う前記工程が、各前記ローカルサーバクラスタについて、
    前記ローカルサーバクラスタに含まれない全てのサーバを前記ハッシュリングから除外する工程と、
    前記1以上のローカルマスターサーバを選択するために、前記ハッシュリング内に残っている、前記第1のハッシュ値に最も近いハッシュ値を有する1以上のサーバを決定する工程と
    を含む、請求項19記載の非一過性のコンピュータ可読記憶媒体。
JP2017556643A 2015-04-30 2016-04-28 階層化キャッシュフィル Active JP6564471B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562155430P 2015-04-30 2015-04-30
US62/155,430 2015-04-30
US15/067,099 US11010341B2 (en) 2015-04-30 2016-03-10 Tiered cache filling
US15/067,099 2016-03-10
PCT/US2016/029872 WO2016176499A1 (en) 2015-04-30 2016-04-28 Tiered cache filling

Publications (2)

Publication Number Publication Date
JP2018524656A JP2018524656A (ja) 2018-08-30
JP6564471B2 true JP6564471B2 (ja) 2019-08-21

Family

ID=56024386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017556643A Active JP6564471B2 (ja) 2015-04-30 2016-04-28 階層化キャッシュフィル

Country Status (11)

Country Link
US (2) US11010341B2 (ja)
EP (1) EP3289490B1 (ja)
JP (1) JP6564471B2 (ja)
KR (1) KR102031476B1 (ja)
CN (1) CN107810501B (ja)
AU (2) AU2016255442B2 (ja)
CA (1) CA2984312C (ja)
DK (1) DK3289490T3 (ja)
MX (1) MX2017013857A (ja)
SG (1) SG11201708828UA (ja)
WO (1) WO2016176499A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6620788B2 (ja) * 2017-06-15 2019-12-18 富士通クライアントコンピューティング株式会社 データ提供システム、情報処理方法および情報処理プログラム
US11947516B1 (en) * 2018-02-22 2024-04-02 Amazon Technologies, Inc. Multi-tier definition management for distributed data stores
US10880360B2 (en) * 2019-04-05 2020-12-29 International Business Machines Corporation File transmission in a cluster
CN110830564B (zh) * 2019-10-30 2022-11-01 北京金山云网络技术有限公司 Cdn调度方法、装置、系统及计算机可读存储介质
CN112015561B (zh) * 2020-09-16 2024-07-30 支付宝(杭州)信息技术有限公司 用于流式计算服务的方法、装置和系统

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372870B1 (en) * 2003-01-21 2016-06-21 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems and cluster storage system
JP2005031987A (ja) 2003-07-14 2005-02-03 Nec Corp コンテンツ配信システムにおけるコンテンツ配置管理システム及びコンテンツ配置管理プログラム
KR101099145B1 (ko) * 2005-04-22 2011-12-27 톰슨 라이센싱 계층적 콘텐츠의 네트워크 캐싱
US8255420B2 (en) 2006-05-23 2012-08-28 Noryan Holding Corporation Distributed storage
JP2008035337A (ja) 2006-07-31 2008-02-14 Brother Ind Ltd ノード装置、配信装置、管理装置、情報処理プログラム、コンテンツ配信方法及びコンテンツ配信システム
US20080065704A1 (en) 2006-09-12 2008-03-13 Microsoft Corporation Data and replica placement using r-out-of-k hash functions
JP4830889B2 (ja) 2007-02-15 2011-12-07 ブラザー工業株式会社 情報配信システム、情報配信方法及びノード装置等
US8122006B2 (en) * 2007-05-29 2012-02-21 Oracle International Corporation Event processing query language including retain clause
US8108933B2 (en) * 2008-10-21 2012-01-31 Lookout, Inc. System and method for attack and malware prevention
JP5233799B2 (ja) 2009-03-31 2013-07-10 ブラザー工業株式会社 コンテンツ配信システム、ノード装置、コンテンツ配信方法及びコンテンツ取得処理プログラム
US8332463B2 (en) 2009-05-27 2012-12-11 Brother Kogyo Kabushiki Kaisha Distributed storage system, connection information notifying method, and recording medium in which distributed storage program is recorded
JP2011118593A (ja) 2009-12-02 2011-06-16 Nec Corp データ転送サーバ、データ転送システム、データ転送方法およびプログラム
US20110191447A1 (en) * 2010-01-29 2011-08-04 Clarendon Foundation, Inc. Content distribution system
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US11195057B2 (en) * 2014-03-18 2021-12-07 Z Advanced Computing, Inc. System and method for extremely efficient image and pattern recognition and artificial intelligence platform
KR101326242B1 (ko) * 2012-01-20 2013-11-11 양재상 건물 바닥의 단열방수공법
CN102855294B (zh) 2012-08-13 2016-12-21 北京联创信安科技股份有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
KR101959970B1 (ko) 2012-09-05 2019-07-04 에스케이텔레콤 주식회사 컨텐츠 전송 서비스 방법, 이를 위한 캐시 장치
US9268808B2 (en) 2012-12-31 2016-02-23 Facebook, Inc. Placement policy
US9002991B2 (en) * 2013-04-06 2015-04-07 Miranda Technologies Partnership System and methods for cloud-based media play out
US9495420B2 (en) * 2013-05-22 2016-11-15 International Business Machines Corporation Distributed feature collection and correlation engine
KR20150011087A (ko) 2013-07-22 2015-01-30 에스케이텔레콤 주식회사 컨텐츠 전송 서비스를 위한 분산 캐싱 관리 방법 및 이를 위한 중앙 관리 장치
US10255188B2 (en) * 2014-03-17 2019-04-09 Vmware, Inc. Migrating workloads across host computing systems based on cache content usage characteristics
KR102394959B1 (ko) * 2014-06-13 2022-05-09 삼성전자주식회사 멀티미디어 데이터를 관리하는 방법 및 장치
CN104065568B (zh) 2014-07-07 2017-01-18 电子科技大学 一种Web服务器集群的路由方法
EP3432508B1 (en) * 2016-04-19 2021-05-26 Telefonica Cibersecurity & Cloud Tech S.L.U. Computer-implemented method for generating passwords and computer program products of same
WO2018024344A1 (en) * 2016-08-05 2018-02-08 Telefonaktiebolaget Lm Ericsson (Publ) Transport protocol server relocation
EP3587462B1 (en) * 2017-02-24 2021-08-11 Zeon Corporation Modified polymer latex production method
US20190230156A1 (en) * 2018-01-19 2019-07-25 Nutanix, Inc. System and method of managing cloud resources and services across two or more regions in a single view
US10616707B2 (en) * 2018-01-25 2020-04-07 Nutanix, Inc. Method of showing availability zones on a map for customer-owned and cloud provider-owned datacenters
US11532013B2 (en) * 2019-06-17 2022-12-20 Optimizely, Inc. Optimized simultaneous use of content experimentation and content caching
JP6836643B1 (ja) * 2019-11-27 2021-03-03 株式会社スカイコム 管理サーバ、文書ファイル管理システム、文書ファイル管理方法、および文書ファイル管理プログラム
US11429589B2 (en) * 2020-05-26 2022-08-30 Zscaler, Inc. Data loss prevention via indexed document matching
US11372728B2 (en) * 2020-08-06 2022-06-28 EMC IP Holding Company LLC Retention time based consistent hash ring
US11748303B2 (en) * 2020-11-23 2023-09-05 Ford Global Technologies, Llc Systems and methods for remote storage of information associated with a distributed ledger network
US11513904B2 (en) * 2020-12-17 2022-11-29 EMC IP Holding Company LLC Gold image library management system to reduce backup storage and bandwidth utilization
US20220197944A1 (en) * 2020-12-22 2022-06-23 Netapp Inc. File metadata service

Also Published As

Publication number Publication date
EP3289490B1 (en) 2021-03-17
SG11201708828UA (en) 2017-11-29
KR102031476B1 (ko) 2019-10-11
CA2984312C (en) 2021-08-10
EP3289490A1 (en) 2018-03-07
CN107810501A (zh) 2018-03-16
US20160321286A1 (en) 2016-11-03
MX2017013857A (es) 2018-06-13
CA2984312A1 (en) 2016-11-03
CN107810501B (zh) 2022-01-11
AU2016255442B2 (en) 2021-04-15
US11010341B2 (en) 2021-05-18
DK3289490T3 (da) 2021-04-26
AU2016255442A1 (en) 2017-11-16
KR20170139671A (ko) 2017-12-19
US20210271639A1 (en) 2021-09-02
WO2016176499A1 (en) 2016-11-03
AU2021205036A1 (en) 2021-08-12
US11675740B2 (en) 2023-06-13
JP2018524656A (ja) 2018-08-30

Similar Documents

Publication Publication Date Title
US11675740B2 (en) Tiered cache filling
US8849756B2 (en) Selecting data nodes in distributed storage system
EP2974297B1 (en) Network coded storage with multi-resolution codes
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
US10963353B2 (en) Systems and methods for cross-regional back up of distributed databases on a cloud service
AU2023241318B1 (en) Watermark-based techniques for change-data-capture
KR101527634B1 (ko) 샤딩 서비스를 제공하는 방법 및 장치
AU2021343451B2 (en) Configurable access-based cache policy control
US10749921B2 (en) Techniques for warming up a node in a distributed data store
US20200228597A1 (en) Hash data structure biasing
TW201638799A (zh) 計算系統中之軟體影像的分佈式存儲
WO2009088007A1 (ja) コンテンツ管理装置、コンテンツ管理システム、コンテンツ管理方法およびプログラム
CN116360679A (zh) 用于分解的分布式存储系统中的数据复制的设备和方法
US11474948B2 (en) Adaptive retrieval of objects from remote storage
US11829500B2 (en) File interface to dynamically manage access to remote files
KR101523143B1 (ko) 클라우드 컴퓨팅 환경에서의 하둡-기반의 분산 멀티미디어 스트리밍 서비스 제공 시스템 및 스트리밍 서비스의 제공 방법
JP6197666B2 (ja) 記憶装置、複製方法及び複製プログラム
US20240340467A1 (en) Techniques for caching media content when streaming live events
CN107612990A (zh) 一种基于云信息云计算服务的云存储终端设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190228

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: 20190703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190726

R150 Certificate of patent or registration of utility model

Ref document number: 6564471

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