IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

2022-532493コンテンツ配信システムにおけるキャッシュ管理
<>
  • -コンテンツ配信システムにおけるキャッシュ管理 図1A
  • -コンテンツ配信システムにおけるキャッシュ管理 図1B
  • -コンテンツ配信システムにおけるキャッシュ管理 図2
  • -コンテンツ配信システムにおけるキャッシュ管理 図3A
  • -コンテンツ配信システムにおけるキャッシュ管理 図3B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-15
(54)【発明の名称】コンテンツ配信システムにおけるキャッシュ管理
(51)【国際特許分類】
   H04L 67/568 20220101AFI20220708BHJP
   H04L 67/02 20220101ALI20220708BHJP
【FI】
H04L67/568
H04L67/02
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021564164
(86)(22)【出願日】2020-03-12
(85)【翻訳文提出日】2021-12-22
(86)【国際出願番号】 US2020022490
(87)【国際公開番号】W WO2020231502
(87)【国際公開日】2020-11-19
(31)【優先権主張番号】62/847,890
(32)【優先日】2019-05-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508140877
【氏名又は名称】レベル スリー コミュニケーションズ,エルエルシー
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】クラウダー、ウィリアム
(57)【要約】
本明細書で説明される例は、コンテンツ配信システムのキャッシュを管理するため装置および方法に関し、これは、キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求を受信する段階と、ビジネスロジックエージェントの第1のキャッシュストレージにコンテンツデータを充填する段階と、キャッシュされたコンテンツデータをキャッシュエージェントに提供する段階と、キャッシュエージェントの第2のキャッシュストレージにコンテンツデータを充填している間に、キャッシュエージェントから追加のコンテンツ要求を受信したことに応じて、キャッシュされたコンテンツデータを維持する段階と、を含み得る。追加のコンテンツ要求は、キャッシュエージェントが追加のクライアントのために同じコンテンツデータを要求していることを示し得る。
【特許請求の範囲】
【請求項1】
コンテンツ配信システムのキャッシュを管理するための方法であって、
ビジネスロジックエージェントがキャッシュエージェントから、前記キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求を受信する段階であって、前記ビジネスロジックエージェントがおよび前記キャッシュエージェントが、ネットワークを介して動作可能に結合されている、受信する段階と、
前記ビジネスロジックエージェントが、前記ビジネスロジックエージェントの第1のキャッシュストレージに前記コンテンツデータを充填する段階であって、前記コンテンツデータが、前記コンテンツ配信システムの上流ノードから受信される、充填する段階と、
前記ビジネスロジックエージェントが前記キャッシュされたコンテンツデータを前記キャッシュエージェントに提供する段階と、
前記キャッシュエージェントから追加のコンテンツ要求を受信したことに応じて、前記キャッシュエージェントの第2のキャッシュストレージにコンテンツデータを充填する間に、前記ビジネスロジックエージェントが前記キャッシュされたコンテンツデータを維持する段階であって、前記追加のコンテンツ要求は、前記キャッシュエージェントが追加のクライアントのために同じコンテンツデータを要求していることを示す、維持する段階と、
を備える、方法。
【請求項2】
前記コンテンツ配信システムが、コンテンツ配信ネットワーク(CDN)であり、
前記ビジネスロジックエージェントおよび前記キャッシュエージェントが前記CDNの同じエッジノード上にあり、
前記上流ノードが、前記コンテンツデータを格納するオリジンサーバ、または、前記コンテンツデータを格納する前記CDN内の前記エッジノードと前記オリジンノードとの間にあるノードであり、
前記ネットワークが、ローカルホスト接続である、
請求項1に記載の方法。
【請求項3】
前記ローカルホスト接続が、ハイパーテキストトランスファープロトコル(HTTP)接続およびHTTP/2接続のうちの少なくとも1つを介したものである、請求項2に記載の方法。
【請求項4】
前記コンテンツ配信システムが、コンテンツ配信ネットワーク(CDN)であり、
前記キャッシュエージェントが、前記CDNのエッジノード上にあり、
前記ビジネスロジックエージェントが、前記CDNの中間ノード上にあり、前記中間ノードが、前記エッジノードとは異なっており、
前記上流ノードが、前記コンテンツデータを格納するオリジンサーバ、または、前記コンテンツデータを格納する前記CDN内の前記エッジノードと前記オリジンノードとの間にあるノードである、
請求項1に記載の方法。
【請求項5】
前記キャッシュエージェントが、クライアントから受信したHTTP要求に対してサービス提供するように構成されたハイパーテキストトランスファープロトコル(HTTP)サービス提供エンジンを含み、
前記キャッシュエージェントがキャッシュエンジンを含み、前記キャッシュエンジンが前記第2のキャッシュストレージを含む、
請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記コンテンツ要求を受信する前に前記ビジネスロジックエージェントが前記キャッシュエージェントから認証要求を受信する段階と、
前記コンテンツデータが前記コンテンツ配信システムの顧客により提供されていることを認証する段階と、
前記コンテンツデータが前記顧客により提供されていることの認証に応じて、前記ビジネスロジックエージェントが前記キャッシュエージェントに認証応答を送信する段階であって、前記認証応答が承認を含む、送信する段階と、
をさらに備える、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記コンテンツ要求が前記上流ノードを識別し、
前記ビジネスロジックエージェントが、前記コンテンツ要求に基づいて前記上流ノードから前記コンテンツデータを受信する、
請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記コンテンツ要求が、前記上流ノードに対してアドレス指定されている、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記コンテンツ要求が、前記コンテンツデータのアドレスと前記コンテンツデータの範囲とを含み、
前記コンテンツデータの前記アドレスが、ユニフォームリソースロケータ(URL)を含み、
前記アドレスおよび前記範囲に基づいて、前記追加のコンテンツ要求のいずれかが、前記コンテンツ要求により要求されるものと同じコンテンツデータを要求しているかどうかを前記ビジネスロジックエージェントが判断する、
請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記コンテンツ要求が、フィル識別情報(ID)を含み、前記方法がさらに、
前記フィルIDに基づいて、前記コンテンツデータの新しいコピーが必要であることを前記ビジネスロジックエージェントが判断する段階と、
前記新しいコピーが必要であると判断したことに応じて前記ビジネスロジックエージェントが前記コンテンツデータの前記新しいコピーを前記第1のキャッシュストレージに充填する段階と、
を備える、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記コンテンツ要求が、条件付き要求ヘッダを含み、前記方法がさらに、
前記条件付き要求ヘッダに基づいて、前記コンテンツ要求に対応するキーを前記ビジネスロジックエージェントが判断する段階を備える、
請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記キャッシュエージェントの前記第2のキャッシュストレージに前記コンテンツデータを充填している間に、前記キャッシュされたコンテンツデータを維持する段階が、前記追加のコンテンツ要求のうちの2つの連続するものが予め定められた時間間隔内に受信されたと判断したことに応じて、前記キャッシュされたコンテンツデータを維持することを含む、
請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記追加のコンテンツ要求のうち最も直近のものを受信してから予め定められた時間間隔の間に新しい追加のコンテンツ要求を受信しなかったことを判断する段階をさらに備える、
請求項1から12のいずれか一項に記載の方法。
【請求項14】
コンテンツ配信システムのキャッシュを管理するための方法であって、
キャッシュエージェントがクライアントからコンテンツデータの要求を受信する段階と、
前記キャッシュエージェントが前記コンテンツデータを充填する必要があることを前記キャッシュエージェントが判断する段階と、
前記キャッシュエージェントが前記クライアントのための前記コンテンツデータを要求していることを示すコンテンツ要求を前記キャッシュエージェントがビジネスロジックエージェントに送信する段階であって、前記ビジネスロジックエージェントおよび前記キャッシュエージェントがネットワークを介して動作可能に結合されており、前記ビジネスロジックエージェントが、前記コンテンツ要求に応じて前記ビジネスロジックエージェントの第1のキャッシュストレージに前記コンテンツデータを充填する、送信する段階と、
前記キャッシュエージェントが、前記キャッシュエージェントの第2のキャッシュストレージに上流ノードからの前記コンテンツデータを充填する段階と、
前記キャッシュエージェントが追加のクライアントから追加のコンテンツ要求を受信する段階であって、前記追加のコンテンツ要求は、追加のクライアントにより同じコンテンツデータが要求されていることを示す、受信する段階と、
前記第2のキャッシュストレージに前記コンテンツデータを充填している間に、ビジネスロジックエージェントによって前記キャッシュされたコンテンツデータが前記追加のクライアントに提供される段階と、
を備える、方法。
【請求項15】
前記コンテンツ配信システムが、コンテンツ配信ネットワーク(CDN)であり、
前記ビジネスロジックエージェントおよび前記キャッシュエージェントが前記CDNの同じエッジノード上にあり、
前記上流ノードが、前記コンテンツデータを格納するオリジンサーバ、または、前記コンテンツデータを格納する前記CDN内の前記エッジノードと前記オリジンノードとの間にあるノードであり、
前記ネットワークが、ローカルホスト接続である、
請求項14に記載の方法。
【請求項16】
前記ローカルホスト接続が、ハイパーテキストトランスファープロトコル(HTTP)接続およびHTTP/2接続のうちの少なくとも1つを介したものである、請求項15に記載の方法。
【請求項17】
前記コンテンツ配信システムが、コンテンツ配信ネットワーク(CDN)であり、
前記キャッシュエージェントが、前記CDNのエッジノード上にあり、
前記ビジネスロジックエージェントが、前記CDNの中間ノード上にあり、前記中間ノードが、前記エッジノードとは異なっており、
前記上流ノードが、前記コンテンツデータを格納するオリジンサーバ、または、前記コンテンツデータを格納する前記CDN内の前記エッジノードと前記オリジンノードとの間にあるノードである、
請求項14に記載の方法。
【請求項18】
前記キャッシュエージェントが、クライアントから受信したHTTP要求に対してサービス提供するように構成されたハイパーテキストトランスファープロトコル(HTTP)サービス提供エンジンを含み、
前記キャッシュエージェントがキャッシュエンジンを含み、前記キャッシュエンジンが前記第2のキャッシュストレージを含む、
請求項14から17のいずれか一項に記載の方法。
【請求項19】
前記コンテンツ要求を送信する前に、前記キャッシュエージェントが前記ビジネスロジックエージェントに認証要求を送信する段階と、
前記キャッシュエージェントが前記ビジネスロジックエージェントから認証応答を受信する段階であって、前記認証応答が承認を含む、受信する段階と、
をさらに備える、請求項14から18のいずれか一項に記載の方法。
【請求項20】
前記キャッシュエージェントが前記上流ノードを選択する段階であって、前記コンテンツ要求が前記上流ノードを識別する、選択する段階をさらに備える、
請求項14から19のいずれか一項に記載の方法。
【請求項21】
前記コンテンツ要求が前記上流ノードに対してアドレス指定されている、請求項14から20のいずれか一項に記載の方法。
【請求項22】
前記コンテンツ要求が、前記コンテンツデータのアドレスと前記コンテンツデータの範囲とを含み、
前記コンテンツデータの前記アドレスが、ユニフォームリソースロケータ(URL)を含み、
前記アドレスおよび前記範囲に基づいて、前記追加のコンテンツ要求のいずれかが、前記コンテンツ要求により要求されるものと同じコンテンツデータを要求しているかどうかを前記ビジネスロジックエージェントが判断する、
請求項14から21のいずれか一項に記載の方法。
【請求項23】
前記コンテンツ要求が、フィル識別情報(ID)を含み、前記フィルIDは、前記ビジネスロジックエージェントの前記第1のキャッシュストレージに前記コンテンツデータの新しいコピーを充填する必要があるかどうかを示す、
請求項14から22のいずれか一項に記載の方法。
【請求項24】
前記コンテンツ要求が、条件付き要求ヘッダを含み、前記ビジネスロジックエージェントによって前記コンテンツ要求に対応するキーが前記条件付き要求ヘッダに基づいて判断される、
請求項14から23のいずれか一項に記載の方法。
【請求項25】
コンテンツ配信システムのノードであって、
ネットワークを提供するネットワークデバイスと、
ビジネスロジックエージェントおよびキャッシュエージェントを実装する少なくとも1つのプロセッサであって、前記ビジネスロジックエージェントおよび前記キャッシュエージェントは前記ネットワークを介して動作可能に結合されている、少なくとも1つのプロセッサと、
前記ビジネスロジックエージェントの第1のキャッシュストレージおよび前記キャッシュエージェントの第2のキャッシュストレージを実装する少なくとも1つのメモリとを備え、
前記少なくとも1つのプロセッサが、
前記キャッシュエージェントを使用して、前記キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求を前記ビジネスロジックエージェントに送信することと、
前記ビジネスロジックエージェントを使用して、前記コンテンツ配信システムの上流ノードから前記コンテンツデータを受信することと、
前記ビジネスロジックエージェントを使用して、前記コンテンツデータを前記第1のキャッシュストレージに充填することと、
前記ビジネスロジックエージェントを使用して、キャッシュされた前記コンテンツデータを前記クライアントに提供することと、
前記第2のキャッシュストレージに前記コンテンツデータを充填している間に、前記ビジネスロジックエージェントを使用して、前記ビジネスロジックエージェントが前記キャッシュエージェントから追加のコンテンツ要求を受信したことに応じて、前記キャッシュされたコンテンツデータを維持することであって、前記追加のコンテンツ要求は、前記キャッシュエージェントが追加のクライアントのために同じコンテンツデータを要求していることを示す、維持することと、
を行う、ノード。
【請求項26】
コンテンツ配信システムのノードのプロセッサに、
キャッシュエージェントを使用して、前記キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求をビジネスロジックエージェントに送信する手順と、
前記ビジネスロジックエージェントを使用して、前記コンテンツ配信システムの上流ノードから前記コンテンツデータを受信する手順と、
前記ビジネスロジックエージェントを使用して、前記第1のキャッシュストレージに前記コンテンツデータを充填する手順と、
前記ビジネスロジックエージェントを使用して、キャッシュされた前記コンテンツデータを前記クライアントに提供する手順と、
前記第2のキャッシュストレージに前記コンテンツデータを充填している間に、前記ビジネスロジックエージェントを使用して、前記ビジネスロジックエージェントが前記キャッシュエージェントから追加のコンテンツ要求を受信したことに応じて、前記キャッシュされたコンテンツデータを維持する手順であって、前記追加のコンテンツ要求は、前記キャッシュエージェントが、追加のクライアントのために同じコンテンツデータを要求していることを示す、維持する手順と、
を実行させる、プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
[関連出願への相互参照]
本願は、2019年5月14日出願の「Cache Management in Content Delivery Systems」と題された米国仮特許出願第62/847,890号の利益を主張し、その内容は参照により本明細書に組み込まれる。
【0002】
コンテンツ配信システムまたはネットワーク(例えば、コンテンツ配信ネットワーク(CDN))は、オリジンサーバが、オリジンサーバのコンテンツデータ(例えば、動画、画像、ウェブサイトのコンテンツデータなど)を、コンテンツデータを消費するクライアントに配給するのを容易にするために構成されたサーバの地理的に分散したネットワークである。コンテンツ配信システム内の各サーバは、ノードおよびマシンなどと称され得る。コンテンツデータをオリジンサーバから、オリジンサーバとは地理的に遠隔にあるクライアントに配給するために、クライアントに対して地理的に近接しているノードが、オリジンサーバの代わりにそれらのクライアントにコンテンツデータを提供することができる。具体的には、CDNは、オリジンサーバのコンテンツデータを複製してキャッシュし、複製およびキャッシュされたコンテンツデータをクライアントに提供することができる。
【発明の概要】
【0003】
本明細書にはコンテンツ配信システムのキャッシュを管理するためのシステム、装置、および方法が提供され、これは、ビジネスロジックエージェントがキャッシュエージェントから、キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求を受信する段階であって、ビジネスロジックエージェントがおよびキャッシュエージェントが、ネットワークを介して動作可能に結合されている、受信する段階と、ビジネスロジックエージェントが、ビジネスロジックエージェントの第1のキャッシュストレージデバイスにコンテンツデータを充填する段階であって、コンテンツデータが、コンテンツ配信システムの上流ノードから受信される、充填する段階と、ビジネスロジックエージェントがキャッシュされたコンテンツデータをキャッシュエージェントに提供する段階と、キャッシュエージェントから追加のコンテンツ要求を受信したことに応じて、キャッシュエージェントの第2のキャッシュストレージにコンテンツデータを充填する間に、ビジネスロジックエージェントがキャッシュされたコンテンツデータを維持する段階であって、追加のコンテンツ要求は、キャッシュエージェントが追加のクライアントのために同じコンテンツデータを要求していることを示す、維持する段階と、を含み得る。
【0004】
コンテンツ配信システムはCDNであり得る。ビジネスロジックエージェントおよびキャッシュエージェントは、CDNの同じエッジノード上にあり得る。上流ノードは、好ましくは、コンテンツデータを格納するオリジンサーバ、または、コンテンツデータを格納するCDN内のエッジノードとオリジンノードとの間にあるノードである。ネットワークはローカルホスト接続であり得る。ローカルホスト接続は、ハイパーテキストトランスファープロトコル(HTTP)接続およびHTTP/2接続のうちの少なくとも1つを介したものであり得る。
【0005】
代替的には、キャッシュエージェントはCDNのエッジノード上にあり、ビジネスロジックエージェントはCDNの中間ノード上にある。中間ノードは、好ましくは、エッジノードとは異なる。
【0006】
キャッシュエージェントは、クライアントから受信したHTTP要求に対してサービス提供するように構成されたHTTPサービス提供エンジンを含み得る。キャッシュエージェントはキャッシュエンジンを含み得る。キャッシュエンジンは第2のキャッシュストレージを含み得る。
【0007】
実施形態はさらに、コンテンツ要求を受信する前にビジネスロジックエージェントがキャッシュエージェントから認証要求を受信する段階と、コンテンツデータがコンテンツ配信システムの顧客により提供されていることを認証する段階と、コンテンツデータが顧客により提供されていることの認証に応じて、ビジネスロジックエージェントがキャッシュエージェントに認証応答を送信する段階であって、認証応答が承認を含む、送信する段階とを可能にする。
【0008】
コンテンツ要求は上流ノードを識別し得る。ビジネスロジックエージェントは、コンテンツ要求に基づいて上流ノードからコンテンツデータを受信し得る。コンテンツ要求は上流ノードに対してアドレス指定され得る。
【0009】
コンテンツ要求は、コンテンツデータのアドレスおよびコンテンツデータの範囲を含み得る。コンテンツデータのアドレスはユニフォームリソースロケータ(URL)を含み得る。ビジネスロジックエージェントは、アドレスおよび範囲に基づいて、追加のコンテンツ要求のいずれかが、コンテンツ要求により要求されるものと同じコンテンツデータを要求しているかどうかを判断し得る。
【0010】
コンテンツ要求はフィル識別情報(ID)を含み得、方法はさらに、フィルIDに基づいて、コンテンツデータの新しいコピーが必要であることをビジネスロジックエージェントが判断する段階と、新しいコピーが必要であるとの判断に応じてビジネスロジックエージェントがコンテンツデータの新しいコピーを第1のキャッシュストレージに充填する段階と、を含み得る。
【0011】
コンテンツ要求は条件付き要求ヘッダを含み得、方法はさらに、条件付き要求ヘッダに基づいて、コンテンツ要求に対応するキーをビジネスロジックエージェントが判断することを可能にし得る。
【0012】
実施形態はさらに、キャッシュエージェントの第2のキャッシュストレージにコンテンツデータを充填している間に、キャッシュされたコンテンツデータを維持することを可能にし、追加のコンテンツ要求のうちの2つの連続するものが予め定められた時間間隔内に受信されたと判断したことに応じて、キャッシュされたコンテンツデータを維持することを含む。
【0013】
実施形態はさらに、追加のコンテンツ要求のうち最も直近のものを受信してから予め定められた時間間隔の間に新しい追加のコンテンツ要求を受信しなかったことを判断する段階を可能にする。
【0014】
別の態様によれば、コンテンツ配信システムのキャッシュを管理するためのシステム、装置、および方法は、キャッシュエージェントがクライアントからコンテンツデータの要求を受信する段階と、キャッシュエージェントがコンテンツデータを充填する必要があることをキャッシュエージェントが判断する段階と、キャッシュエージェントがクライアントのためのコンテンツデータを要求していることを示すコンテンツ要求をキャッシュエージェントがビジネスロジックエージェントに送信する段階であって、ビジネスロジックエージェントおよびキャッシュエージェントがネットワークを介して動作可能に結合されており、ビジネスロジックエージェントが、コンテンツ要求に応じてビジネスロジックエージェントの第1のキャッシュストレージにコンテンツデータを充填する、送信する段階と、キャッシュエージェントが、キャッシュエージェントの第2のキャッシュストレージに上流ノードからのコンテンツデータを充填する段階と、キャッシュエージェントが追加のクライアントから追加のコンテンツ要求を受信する段階であって、追加のコンテンツ要求は、追加のクライアントにより同じコンテンツデータが要求されていることを示す、受信する段階と、第2のキャッシュストレージにコンテンツデータを充填している間に、ビジネスロジックエージェントによってキャッシュされたコンテンツデータが追加のクライアントに提供される段階と、を含み得る。
【0015】
実施形態はさらに、キャッシュエージェントが上流ノードを選択する段階を可能にし、コンテンツ要求は上流ノードを識別する。
【0016】
これらおよび他の特徴は、これらの動作の構成および様式と合わせて、添付の図面と共に以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0017】
図1A】いくつかの実施形態によるコンテンツ配信システムの図である。
【0018】
図1B】いくつかの実施形態によるコンテンツ配信システムの図である。
【0019】
図2】本開示のいくつかの実施形態によるノードを示すブロック図である。
【0020】
図3A】様々な実施形態によるコンテンツ配信システムのキャッシュを管理するための方法を示すフロー図である。
【0021】
図3B】様々な実施形態によるコンテンツ配信システムのキャッシュを管理するための方法を示すフロー図である。
【発明を実施するための形態】
【0022】
本明細書で説明される実施形態は、コンテンツ配信システム(例えば、CDN)におけるキャッシュ管理のためのシステム、装置、および方法に関する。コンテンツ配信システムにおいて、エッジノードは、クライアントからコンテンツデータに対する要求を最初に受信するノードである。クライアントとは、オリジンサーバにより提供されるコンテンツデータを消費、または別様に受け取ることを望むエンドユーザにより操作されるデバイスを指す。コンテンツデータとは、オリジンサーバにより格納され、クライアントへのプロビジョニングのためにコンテンツ配信システムを通してキャッシュされたデータの一部、セグメント、オブジェクト、ファイル、またはスライスを指す。オリジンサーバとは、コンテンツデータをクライアントに送達する際に顧客を促す、コンテンツ配信システムの顧客により操作されるデバイスを指す。コンテンツ配信システムのノードは、クライアントにより要求されたコンテンツデータをキャッシュするためのキャッシュヒエラルキーに編成され得る。
【0023】
いくつかの実装では、エッジノードには、キャッシュおよびビジネスロジック機能のために2つの別個のエージェントが設けられる。例えば、追加のクライアントが同じコンテンツデータを要求する場合、例えば、コンテンツデータ(例えば、動画の少なくとも一部)が人気であり頻繁に要求される場合に、キャッシュエージェントは、クライアントから受信したコンテンツ(例えば、ハイパーテキストトランスファープロトコル(HTTP)要求)に対する要求を処理し、要求されたコンテンツデータを受信およびキャッシュするように構成される。ビジネスロジックエージェントは、エッジノードのためのビジネスロジックを実装するように構成される。例えば、ビジネスロジックエージェントは、要求されたコンテンツデータがコンテンツ配信システムの顧客に属するかどうか、コンテンツ配信システムがコンテンツデータを要求しているクライアントにコンテンツデータを配信することができるかどうか(コンテンツデータがコンテンツ配信システムの顧客に属すると仮定する)などを判断することができる。好ましくは、キャッシュエージェントおよびビジネスロジックエージェントは異なる機能を有し、別個のエージェントとして実装される。換言すれば、ビジネスロジックエージェントはキャッシュエージェントの外部にあり、逆もまた同様である。
【0024】
いくつかの態様によれば、クライアントからコンテンツデータの要求を受信すると、キャッシュエージェントは、要求に対してサービス提供することを可能にする承認をビジネスロジックエージェントから取得する。次に、キャッシュエージェントは、要求されたコンテンツデータがキャッシュエージェントのローカルにあるキャッシュに既に格納されているかどうかを判断する。キャッシュエージェントのローカルにあるキャッシュがコンテンツデータを格納していないとの判断に応じて、キャッシュエージェントは、追加のクライアントから受信される将来の要求に役立てるために、キャッシュエージェントのローカルにあるキャッシュにコンテンツデータを充填する必要があると判断する。要求を満たすために、キャッシュエージェントは、オリジンサーバ、またはコンテンツデータを格納またはキャッシュする別の上流ノードからコンテンツデータを取り込み、キャッシュフィルを実行する(例えば、キャッシュエージェントのローカルにあるキャッシュにコンテンツデータを充填する)。キャッシュエージェントは、キャッシュエージェントのローカルにあるキャッシュに格納されたコンテンツデータのコピーをクライアントに提供することができる。
【0025】
低遅延環境では、キャッシュエージェントがキャッシュフィルを実行する間に、キャッシュエージェントはキャッシュロックを有効化し得る。キャッシュロックをオンにすると、キャッシュフィルが完了するまで、同じコンテンツデータに対する任意の追加の要求(追加のクライアントからの)が保留される。これは、最初にコンテンツデータを要求する(追加のクライアントの前に)第1のクライアントは、コンテンツデータをすぐに(例えば、キャッシュフィルが進行している間に)取得し得る一方、同じコンテンツデータを要求する追加のクライアントは、キャッシュフィルが完了するまで、キャッシュロックが無効化されるまで、かつ第1のクライアントが全てのコンテンツデータを取得するまで、コンテンツデータのいずれも取得できないことを意味する。
【0026】
従来、キャッシュエージェントは、キャッシュエージェントにおけるキャッシュフィルが完了する前に(キャッシュロックが無効化される前に)追加の要求に対するサービス提供を可能にするいかなるフィル・イン・プログレス機能も有さない。キャッシュエージェントのいくつかの従来の実装では、キャッシュエージェントは、任意のフィル・イン・プログレス特徴を効率的に実装するのに十分なシグナリングメカニズムを有さない。キャッシュエージェントのいくつかの従来の実装は、追加のクライアントがポーリングして、キャッシュロックが解除されたかどうかを判断することを可能にする。中央処理装置(CPU)のサイクルを浪費する頻繁なポーリングを回避するために、ポーリング間隔(例えば、500ms)が設定され得る。それに関して、所与のポーリング間隔が失効するよりはるか前にキャッシュロックが無効化された場合、時間が浪費される。キャッシュフィルを実行するのに必要な時間はまた、コンテンツデータのサイズ(例えば、リソースサイズ)に基づいて変動し得るため、ポーリングを効率的に実装することができない。
【0027】
さらに、キャッシュエージェントのいくつかの従来の実装は、キャッシュロックが有効化されている間にオリジンサーバ、またはコンテンツデータが既に格納/キャッシュされている別の上流ノードに接続するように追加のクライアントに指示し、その結果、追加のクライアントは、オリジナルサーバまたは上流ノードから直接コンテンツデータを取得することができる。コンテンツ配信システムが地理的に分散したネットワークであるため、分散ネットワークを介した追加のクライアントとオリジンサーバまたは別の上流ノードとの間の接続は、大量の帯域幅を要求し得る、コンテンツ配信システム内のトラフィックを激化させ得る、顧客のオリジンサーバを圧倒し得る。
【0028】
本明細書で説明される実施形態は、(クライアントからの要求を処理し、コンテンツデータをキャッシュするための)キャッシュエージェントおよび(認証などのビジネスロジックを実装するための)ビジネスロジックエージェントを実装する従来のコンテンツ配信システムにおけるキャッシュ管理を改善する。例えば、キャッシュエージェントのローカルにあるキャッシュに要求されたコンテンツデータを充填している間にキャッシュエージェントではキャッシュロックが有効化される一方、ビジネスロジックエージェントは、ビジネスロジックエージェントのローカルにあるキャッシュにコンテンツデータのコピーを維持する。キャッシュエージェントにより受信される同じコンテンツデータに対する追加の要求は、ビジネスロジックエージェントのローカルにあるキャッシュに格納されたコンテンツデータのコピーを使用してサービス提供され得るが、キャッシュエージェントのローカルにあるキャッシュは、キャッシュロックが原因でそれらの要求に対してサービス提供することができない。したがって、ビジネスロジックエージェントのローカルにあるキャッシュは、キャッシュロックの間のキャッシュエージェントのためのインテリジェントフィルバッファリングプロキシとして動作し得る。
【0029】
図1Aは、いくつかの実施形態によるコンテンツ配信システム100aの図である。図1Aを参照すると、コンテンツ配信システム100aは、オリジンサーバ150によって提供されたコンテンツデータを様々なクライアント102a~102nに配信するために構成される。示されるように、ユーザ101a~101nの各々は、オリジンサーバ150によって提供されるコンテンツデータまたはサービスにアクセスするためにクライアント102a~102nと共に動作する、またはそれらに関連付けられている。いくつかの実施形態では、クライアント102a~102nの各々は、本明細書で説明される動作を実行するためのハードウェアおよびソフトウェアで構成された、デスクトップコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、パッドデバイス、またはスマートフォンデバイスなどであり得る。例えば、クライアント102a~102nの各々は、少なくとも、処理回路、ネットワークデバイス、およびユーザインタフェースを含む。処理回路は、本明細書で説明されるクライアント102a~102nの機能を実行するように構成される。ネットワークデバイスは、クライアント102a~102nをコンテンツ配信システム100aのノード(例えば、エッジノード110)に接続するように構成される。ユーザインタフェースは、コンテンツデータに基づいて出力する(例えば、メディアコンテンツ、ゲーム、および情報などを表示する)、ならびに、ユーザ101a~101nからユーザ入力を受信するように構成される。
【0030】
いくつかの例では、コンテンツ配信システム100aは、オリジンサーバ150に由来するコンテンツデータをクライアント102a~102nに配信および配給するためのCDNに対応する。例えば、コンテンツ配信システム100aは、ノード110、140、・・・および150を含み、オリジンサーバ150は少なくとも1つのノード(図示せず)に接続され、少なくとも1つのノードのうちの1つはノード140に接続され、ノード140はエッジノード110に接続されている。オリジンサーバ150、ノード140、エッジノード110、および図示されていないコンテンツ配信システム100aに内の他のノードは、異なる場所に位置して得るため、地理的に分散したコンテンツ配信システム100aが形成される。ノード140とオリジンサーバ150との間に追加のノードがあってもよいが、ノード140はオリジンサーバ150に直接接続されてもよく、または、ノード140がオリジンサーバ150であってもよい。
【0031】
オリジンサーバ150のコンテンツデータは、コンテンツ配信システム100aにわたり、ノード140および他のノード(図示せず)を含め、複数の場所(例えば、複数のノード)で複製およびキャッシュされ得る。本明細書で使用される場合、ノード140とは、オリジンサーバ150によって提供されるコンテンツデータのコピーを格納する、コンテンツ配信システム100a内の(オリジンサーバ150とエッジノード110との間にある)任意のノードを指す。オリジンサーバ150とは、コンテンツデータのソースを指す。オリジンサーバ150は、顧客がコンテンツ配信システム100aを使用してコンテンツデータを配信するのに利用料を支払うように、コンテンツ配信システム100aの顧客(例えば、コンテンツオーナ、コンテンツ発行元、またはシステム100aの利用者)に属してよい。コンテンツデータの例には、ウェブページおよびウェブオブジェクト(例えば、テキスト、グラフィック、スクリプトなど)、ダウンロード可能なオブジェクト(例えば、メディアファイル、ソフトウェア、文書など)、ライブストリーミングメディア、オンデマンドメディア、ソーシャルネットワーク、およびアプリケーション(例えば、オンラインマルチプレイヤーゲーム、デートアプリ、電子商取引アプリ、ポータルなど)などが含まれるが、これらに限定されない。
【0032】
エッジノード110とオリジンサーバ150との間にあるノード110、140、および他のノード(図示せず)は、コンテンツ配信システム100aの「バックボーン」を形成し、オリジンサーバ150からクライアント102a~102nへの経路を提供する。ノード140がエッジノード110とオリジンサーバ150との間にあるため、ノード140はエッジノード110に関して上流である。バックボーンを構成するノードは、それらのノードの場所に基づいて、オリジンサーバ150からクライアント102a~102nへのホップまたはリンクの数、遅延、可用性、コスト、および他の好適な基準を考慮に入れて動的または静的に選択され得る。
【0033】
いくつかの実施形態では、エッジノード110のクライアント102a~102nに対する近接性のため、エッジノード110は「エッジノード」と称される。例えば、エッジノード110のクライアント102a~102nに対する近接性のため、エリア105内にあるクライアント102a~102nは、エッジノード110に関連付けられ、接続され得る。換言すれば、エッジノード110はコンテンツ配信システム100aのエッジにあり、エッジノード110は、クライアント102a~102nに直接接続される。通常、エッジノードは接続されているクライアントに近いほど、エッジノードからのコンテンツデータの受信に関してそれらのクライアントが経験する遅延は少なくなる。そのため、性能はエッジノード110のクライアント102a~102nに対する地理的な近接性に左右される。CDNプロバイダは通常、エッジノードを意図されるクライアントにできるだけ近くに位置させる。そのため、エッジノード110はエリア105内に位置し得る。いくつかの実施形態では、エッジノード110はオリジンサーバ150に直接接続され得る。
【0034】
いくつかの実施形態では、ノード140(およびノード140とオリジンサーバ150との間にある図示されない他のノード)は「中間ノード」と称される。中間ノードは、様々なネットワークリンクまたは「ホップ」を介してエッジノードをオリジンサーバ150にリンクする。中間ノードは、コンテンツデータ(およびその更新)をエッジノードに提供し得る。すなわち、オリジンサーバ150は、エッジノード110が現在、クライアント102a~102nによって要求されたコンテンツデータのコピーをキャッシュしていない場合に、ノード140を通じてコンテンツデータ(およびその更新)をエッジノード110に提供し得る。
【0035】
クライアント102a~102nのうちの1とエッジノード110との間の各リンクは、データを交換するための好適なネットワーク接続に対応する。さらに、ノード/サーバ110、140、・・・および150のうちの2つの間の各リンクは、データを交換するための好適なネットワーク接続を表す。ネットワーク接続は、示される様式でのクライアント102a~102n、およびノード110、140などとオリジンサーバ150との間のデータ、値、命令、およびメッセージなどの交換を許容する構造である。ネットワーク接続は、任意の好適なローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)接続であり得る。例えば、各ネットワークリンクは、周波数分割多元接続(FDMA)、時分割多元接続(TDMA)、同期型光ネットワーク(SONET)、高密度波長分割多重(DWDM)、光伝送ネットワーク(OTN)、符号分割多元接続(CDMA)(特に、進化データ最適化(EVDO))、ユニバーサル移動体通信システム(UMTS)(特に、時分割同期CDMA(TD-SCDMAまたはTDS)、広帯域符号分割多元接続(WCDMA(登録商標))、ロングタームエボリューション(LTE)、進化型マルチメディアマルチキャストサービス(eMBMS)、高速ダウンリンクパケットアクセス(HSDPA)など)、ユニバーサル地上波無線アクセス(UTRA)、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))、符号分割多元接続1x無線伝送技術(1x)、汎用パケット無線サービス(GPRS)、パーソナル通信サービス(PCS)、802.11X、ジグビー、Bluetooth(登録商標)、Wi-Fi(登録商標)、任意の好適な有線ネットワーク、および/またはこれらの組み合わせなどによってサポートされ得る。
【0036】
示されるように、エッジノード110は、キャッシュエージェント120およびビジネスロジックエージェント130を含む。キャッシュエージェント120は、オープンソースプラットフォームであり得、クライアント102a~102nから受信したコンテンツに対する要求(例えば、HTTP要求)を処理し、追加のクライアントが同じコンテンツデータを要求する場合に、要求されたコンテンツデータを受信およびキャッシュするように構成される。これに関し、キャッシュエージェント120は、要求サービス提供エンジン122およびキャッシュエンジン124を含む。
【0037】
要求サービス提供エンジン122の一例は、クライアント102a~102nから受信したHTTP要求を受信し、処理するように構成されたHTTPサービス提供エンジンである。要求サービス提供エンジン122は、HTTP要求を受信し、処理するための好適なプロトコル(例えば、HTTP)用に構成される。換言すれば、要求サービス提供エンジン122は、説明される様式でエンドユーザ101a~101nからのHTTP要求に回答するように構成される。
【0038】
キャッシュエンジン124は、キャッシュエージェント120によるキャッシュを実装するように構成される。例えば、キャッシュエンジン124は、キャッシュストレージ126を含む、またはそれに動作可能に結合されている。キャッシュストレージ126は、キャッシュエンジン124およびキャッシュエージェント120のローカルにある。キャッシュエージェント120によって(例えば、キャッシュエンジン124によって)キャッシュされたコンテンツデータは、キャッシュストレージ126に格納される。
【0039】
ビジネスロジックエージェント130は、エッジノード110においてビジネスロジックを実装するように構成される。例えば、ビジネスロジックエージェント130はビジネスロジックエンジン132を含む。ビジネスロジックエンジン132は、認証、キャッシュエージェント120にビジネス情報を提供してキャッシュエージェント120が正しい統計およびログを維持することを可能にすること、およびキャッシュキーの計算などのために構成される。例えば、ビジネスロジックエンジン132は、クライアント102a~102nによって要求されたコンテンツデータがコンテンツ配信システム100aの有効な顧客に属するかどうか、コンテンツデータがクライアント102a~102nにサービス提供されることを顧客のルールが許可するかどうか、および、コンテンツデータがクライアント102a~102nにサービス提供されることをコンテンツ配信システム100aのルールが許可するかどうかなどを判断するように構成される。
【0040】
さらに、ビジネスロジックエージェント130は、キャッシュストレージ126に格納されたコンテンツデータがキャッシュロックされている場合に、キャッシュエージェント120のためのインテリジェントフィルバッファリングプロキシを実装するように構成されたフィルバッファプロキシエンジン134を含む。例えば、フィルバッファプロキシエンジン134は、キャッシュストレージ136を含む、またはそれと動作可能に結合されている。キャッシュストレージ136は、フィルバッファプロキシエンジン134およびビジネスロジックエージェント130のローカルにある。ビジネスロジックエージェント130によって(例えば、フィルバッファプロキシエンジン134によって)キャッシュされたコンテンツデータはキャッシュストレージ136に格納される。ビジネスロジックエンジン132およびフィルバッファプロキシエンジン134の両方を含むビジネスロジックエージェント130は、ビジネスロジックエンジン132およびフィルバッファプロキシエンジン134の両方による認証およびフィルバッファリングの両方にビジネスロジックエージェント130によって開かれた同じ接続が使用されるおかげで、同じ処理で認証およびフィルバッファリングサービスの両方が実装され得ることを示す。代替的には、ビジネスロジックエンジン132およびフィルバッファプロキシエンジン134は、あるノード(例えば、エッジノード110またはノード111)上の別個のプロセスで実行され得る。
【0041】
図1Aに示されるように、キャッシュエージェント120およびビジネスロジックエージェント130は、同じノード(エッジノード110)、同じサーバ、同じコンピュータ、同じ「ボックス」などに提供される。キャッシュエージェント120およびビジネスロジックエージェント130は異なる機能を有し、別個のエージェントとして実装される。キャッシュエージェント120およびビジネスロジックエージェント130は、同じエッジノード110の処理および格納能力により実装される。換言すれば、ビジネスロジックエージェント130は同じエッジノード110上のキャッシュエージェント120の外部にあり、逆もまた同様である。2つのエージェント120および130を同じエッジノード110上に提供することで、要求のサービス提供/キャッシュロジックとビジネスロジックとの分離が可能となり、そのため、別個のロジックを管理するため、およびソフトウェアに対する更新を提供するための細分性が提供される。キャッシュエージェント120が既に上流ターゲット選択能力を有するいくつかの例では、ビジネスロジックエージェント130において上流ターゲット選択を複製する必要がない。ビジネスロジックエージェント130に欠陥があることが検出された場合、本明細書で説明されるフィルバッファ能力がビジネスロジックエージェント130から解除または除去され得、キャッシュロック特徴は、(効率性はより低いが)キャッシュロックが有効化された同じコンテンツデータに対して複数の要求をアドレス指定し得る。
【0042】
図1Aに示されるように、キャッシュエージェント120およびビジネスロジックエージェント130は、ネットワーク140aを介して互いに動作可能に結合されている。いくつかの例では、ネットワーク140aは、同じノード上の2つのエージェントに通信を提供するように構成されたローカルホスト接続である。いくつかの例では、ローカルホスト接続は、HTTP接続、HTTP/2接続、伝送制御プロトコル(TCP)接続などである。いくつかの例では、キャッシュエージェント120およびビジネスロジックエージェント130がエッジノード110の異なるハードウェア(例えば、異なるプロセッサ、異なるメモリなど)上に実装されている実施形態において、ローカルホスト接続は周辺コンポーネント相互接続(PCI)接続である。したがって、ネットワーク140aはノード内ネットワーク接続である。
【0043】
本明細書でさらに詳細に説明されるように、本開示は、認証およびフィルバッファリングの両方のために、キャッシュエージェント120とビジネスロジックエージェント130との間のネットワーク140aを介した接続を活用することによってデュアルエージェントスキームを改善する。要求サービス提供エンジン122によってクライアント102a~102nのうちの1つから受信される各要求について別個の接続が開かれる。要求サービス提供エンジン122によってクライアント102a~102nのうちの1から受信される同じ要求に関して、認証およびフィルバッファリングプロキシに対する複数の要求(例えば、認証要求、コンテンツ要求など)は、同じ接続上で連続して通信およびサービス提供され得る。換言すれば、この接続は「生かされる」。いくつかの例では、例えば、HTTP/2実装での場合にそうであるように、複数の認証要求およびコンテンツ要求の多重化サービスが同じ接続上で可能とされ得る。
【0044】
図1Bは、いくつかの実施形態によるコンテンツ配信システム100bの図である。図1Aおよび1Bを参照すると、コンテンツ配信システム100bは、オリジンサーバ150によって提供されたコンテンツデータを様々なクライアント102a~102nに配信するために構成される。コンテンツ配信システム100bはコンテンツ配信システム100aと同様であるが、コンテンツ配信システム100b、キャッシュエージェント120、およびビジネスロジックエージェント130が異なるノード110および111上に提供される点でコンテンツ配信システム100aとは異なっている。例えば、キャッシュエージェント120は、要求のサービス提供およびキャッシュ機能のためにエッジノード110上に提供され得、ビジネスロジックエージェント130は、ビジネスロジック機能のために別のノード111上に提供される。ノード111および140は、エッジノード110に対して上流ノードである。
【0045】
キャッシュエージェント120およびビジネスロジックエージェント130は、ネットワーク140bを介して動作可能に結合されている。ネットワーク140bは、キャッシュエージェント120とビジネスロジックエージェント130との間でのデータ、値、命令、およびメッセージなどの交換を許容するように構造化されている。ネットワーク140bは、任意の好適なLANまたはWAN接続であり得る。例えば、ネットワーク140bは、FDMA、TDMA、SONET、DWDM、OTN、CDMA(特に、EVDO)、UMT(特に、TD-SCDMAまたはTDS WCDMA(登録商標)、LTE、eMBMS、HSDPAなど)、UTRA、GSM(登録商標)、1x、GPR、PC、802.11X、ジグビー、Bluetooth(登録商標)、Wi-Fi(登録商標)、任意の好適な有線ネットワーク、および/またはその組み合わせなどによってサポートされ得る。したがって、ネットワーク140bはノード間ネットワーク接続である。
【0046】
1つのノード(エッジノード110)がノード111に接続されているものとして示されているが、1つまたは複数の追加のエッジノード(限定されるものではないが、エッジノード110など)がノード111に接続されてもよい。換言すれば、要求のサービス提供およびキャッシュのために構成された複数のエッジノードは、ビジネスロジックのために構成された同じ中間ノードに接続され得る。そのようなノード展開は、ハードウェアの効率的な割当を可能にする。例えば、エッジノード110はキャッシュに関係しているため、キャッシュエージェント120を含むエッジノード110は、より大きい格納能力、およびより小さい計算能力を有し得る。いくつかの例では、HTTP処理のためにエッジノード110に基本的な計算能力が提供され得る。ノード111がビジネスロジック(例えば、認証、ルールチェックなど)に関係しているため、ビジネスロジックエージェント130を含むノード111は、より大きい計算能力、およびより小さい格納能力を有し得る。
【0047】
いくつかの例では、フィルバッファリングプロキシエンジン134は、ビジネスロジックエンジン132とは別個であり得る。例えば、フィルバッファリングプロキシエンジン134およびビジネスロジックエンジン132は、同じノード上で動作する別個のプロセス/アプリケーションであり得る。代替的には、フィルバッファリングプロキシエンジン134およびビジネスロジックエンジン132は、異なるノード上で動作し、好適なネットワークを介して接続された別個のプロセス/アプリケーションであり得る。そのような実施形態では、認証/メタデータのみが要求されているか(例えば、キャッシュエンジン124が既にコンテンツデータのコピーを有する)、または(認証の成功を仮定して)コンテンツデータも取得するべきであるかどうかを示す指示が認証要求に含まれ得る。
【0048】
図2は、いくつかの実施形態によるノード200を示すブロック図である。図1A~2を参照すると、ノード200は、ノード110、111、140、およびいくつかの実施形態では、ノード140とオリジンサーバ150との間にあるノード(もしあれば)の非限定的な例である。示されるように、ノード200は、処理回路210およびネットワークデバイス220のうちの1つまたは複数を含む。
【0049】
処理回路210は、ノード200に関連して本明細書で説明される様々な機能を実行するように構成される。処理回路210は、プロセッサ212およびメモリ214を含む。プロセッサ212は、汎用プロセッサ、特定用途向け集積回路(ASIC)、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、処理コンポーネントのグループ、または他の好適な電子処理コンポーネントを用いて実装され得る。メモリ214は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、不揮発性RAM(NVRAM)、フラッシュメモリ、ハードディスクストレージ、または別の好適なデータストレージユニットを用いて実装され得る。メモリ214は、プロセッサ212によって実行される様々なプロセスを容易にするためのデータおよび/またはコンピュータコードを格納する。さらに、メモリ214は、有形の非一時的な揮発性メモリまたは不揮発性メモリであるか、またはそれを含む。したがって、メモリ214は、データベースコンポーネント、オブジェクトコードコンポーネント、スクリプトコンポーネント、または、本明細書で説明される様々な機能をサポートするための任意の他のタイプの情報構造を含む。
【0050】
いくつかの例では、エッジノード110(図1A)の処理回路210は、エッジノード110上の別個のエージェントとしてキャッシュエージェント120およびビジネスロジックエージェント130を実装するように構成される。エッジノード110(図1A)のメモリ214は、キャッシュストレージ126および136を、別個のエージェントに動作可能に結合された別個のストレージとして実装するために使用され得る。一例では、キャッシュストレージ126および136は、メモリ214上の別個の区分に対応する。別の例では、メモリ214は、各々が好適な内部バスを介してエッジノード110(図1A)の他のコンポーネントに接続された、別個のメモリデバイスを含み得る。キャッシュストレージ126は別個のメモリデバイスのうちの最初のものに実装され、キャッシュストレージ136は別個のメモリデバイスのうちの2番目のものに実装される。
【0051】
いくつかの例では、エッジノード110(図1B)の処理回路210は、キャッシュエージェント120を実装するように構成され、ノード111(図1B)の処理回路210は、ビジネスロジックエージェント130を実装するように構成される。エッジノード110(図1B)のメモリ214はキャッシュストレージ126を実装するために使用されてよく、ノード111(図1B)のメモリ214はキャッシュストレージ136を実装するために使用されてよい。
【0052】
ネットワークインタフェース220は、クライアント(例えば、クライアント102a~102n)、コンテンツ配信システム100aもしくは100b内の他のノード、および/またはオリジンサーバ150との通信を確立するように構造化され得る。いくつかの例では、ネットワークインタフェース220は、ネットワーク140aまたは140bを確立するように構成される。ネットワークインタフェース220は、それらを達成するためのハードウェアおよびソフトウェアを含む。いくつかの実装では、ネットワークインタフェース220は、セルラートランシーバ(セルラ規格用に構成された)、ローカル無線ネットワークトランシーバ(802.11X、ジグビー、Bluetooth(登録商標)、Wi-Fi(登録商標)など用)、有線ネットワークインタフェース、および/またはこれらの組み合わせ(例えば、セルラートランシーバおよびBluetooth(登録商標)トランシーバの両方)を含む。
【0053】
図3Aは、様々な実施形態によるコンテンツ配信システム100aまたは100bのキャッシュを管理するための方法300aを示すフロー図である。図1A~3Aを参照すると、方法300aは、キャッシュエージェント120がキャッシュロックを有効化したコンテンツデータに関してキャッシュエージェント120に対するインテリジェントフィルバッファリングについてビジネスロジックエージェント130のキャッシュストレージ136を活用することに関係している。方法300aは、キャッシュエージェント120によって実行される。
【0054】
302において、キャッシュエージェント120(例えば、要求サービス提供エンジン122)は、コンテンツデータに対する要求をクライアント102aから受信する。要求の一例はHTTP要求である。要求は、クラウドから、および/またはインターネットから受信され得る。クライアント102aとは、方法300aについてエッジノード110からコンテンツデータを要求しているクライアント102a~102nのうちの最初のものを指す。
【0055】
いくつかの例では、要求を受信したことに応じて、キャッシュエージェント120(例えば、要求サービス提供エンジン122)は、ネットワーク140aまたは140b内のその特定の要求に対応する接続を開放する。例えば、要求サービス提供エンジン122は、ビジネスロジックエージェント130と要求関連データを通信するためにローカルホストネットワーク(例えば、ネットワーク140a)内のクライアント102aから受信した要求に対応するポートを開放し得る。別の例では、要求サービス提供エンジン122は、ビジネスロジックエージェント130と要求関連データを通信するためにネットワーク140b内のクライアント102aから受信した要求に対応する専用の接続を開放し得る。
【0056】
キャッシュエージェント120(例えば、要求サービス提供エンジン122)は、クライアント102aから受信した要求を認証するために、ネットワーク140aを介して(例えば、開放されたポートを介して)または140bを介して(例えば、専用の接続を介して)ビジネスロジックエンジン132に認証要求を送信する。ビジネスロジックエンジン132は、クライアント102aによって要求されたコンテンツデータがシステム100aまたは100bの有効な顧客に属するかどうか、コンテンツデータがクライアント102aにサービス提供されることを顧客のルールが許可するかどうか、および、コンテンツデータがクライアント102aにサービス提供されることをコンテンツ配信システム100aまたは100bのルールが許可するかどうかなどを判断するように構成される。要求サービス提供エンジン122は、ビジネスロジックエンジン132から認証応答を受信する。認証応答は、クライアント102aから受信した要求に対してサービス提供することができるかどうか(例えば、「はい」または「いいえ」)を要求サービス提供エンジン122に示す。いくつかの例では、要求に対してサービス提供することができるかどうかの指示に加えて、認証応答は、例えば、限定されるものではないが、サーバ識別情報(ID)、サブスクライバID、使用するキャッシュキーなどのメタデータを含み得る。認証応答に基づいてクライアント102aから受信した要求に対してサービス提供することができないとの判断に応じて、要求サービス提供エンジン122は適宜にクライアント102aに応答する。
【0057】
一方で、認証応答に基づいてクライアント102aから受信した要求に対してサービス提供することができるとの判断に応じて、キャッシュエンジン124は、キャッシュエージェント120がコンテンツデータを充填する必要があるかどうかを判断する。例えば、304において、キャッシュエンジン124は、要求されたコンテンツデータがキャッシュストレージ126においてキャッシュされているかどうかを判断する。キャッシュストレージ126においてコンテンツデータがキャッシュされている(304:はい)との判断に応じて、キャッシュエージェント120は、306において、キャッシュエージェント120のキャッシュストレージ126からクライアント102aにコンテンツデータを提供する。
【0058】
一方で、コンテンツデータがキャッシュストレージ126においてキャッシュされていない(304:いいえ)との判断に応じて、キャッシュエージェント120(例えば、キャッシュエンジン124)は、310において、キャッシュエージェント120がクライアント102aのためのコンテンツデータを要求していることを示すコンテンツ要求をフィルバッファプロキシエンジン134に送信する。コンテンツ要求は、ポート、または認証のためにネットワーク140aまたは140b内で確立された(クライアント102aからの要求専用として)接続を介して送信され得る。
【0059】
いくつかの例では、コンテンツ要求は、コンテンツデータのアドレス、およびコンテンツデータが受信/取得される上流ノードのアドレスを含む。いくつかの例では、コンテンツデータのアドレスは、ユニフォームリソースロケータ(URL)である。上流ノードとは、ホスト102aによって要求されるコンテンツデータのコピーを格納するノードを指す。上流ノードの例は、ノード140およびオリジンサーバ150を含む。キャッシュエンジン124は、上流ノードを選択することができる。キャッシュエンジン124は、限定されるものではないが、上流ノード選択ツール(例えば、コンシステントハッシュ法を用いる)、システム100aまたは100bのノードの正常性(例えば、遅延、容量など)を追跡する正常状態情報などを含む、好適なキャッシュツールを有する。キャッシュエンジン124は、そのようなキャッシュツールを使用して、例えば、コンテンツデータのコピーの可用性、遅延、エッジノード110に対する近接性(例えば、システム100aおよび100bにおける)、ノード111に対する近接性(例えば、システム100bにおける)、遅延、可用性/正常性などに基づいて、コンテンツデータのコピーを現在格納している正常な上流ノードを識別することができる。上流ノードのアドレスは、ノード/サーバID、IPアドレスなどであり得る。
【0060】
いくつかの例では、フィルバッファプロキシエンジン134は、キャッシュエージェント120には「透明」に見える。例えば、キャッシュエージェント120(例えば、キャッシュエンジン124)において、キャッシュエージェント120が上流ノードに送信されるコンテンツ要求を構成しても(上流ノードのIPアドレスに従って)、プロトコルは、フィルバッファプロキシエンジン134の既知のIPアドレスを使用して代わりにフィルバッファプロキシエンジン134に接続するようにキャッシュエージェント120gを構成するようなプロトコルが実装され得る。換言すれば、プロトコルは、フィルバッファプロキシエンジン134に対するコンテンツ要求における上流ノードのアドレスを維持しながら、受信者アドレスを上流ノードのアドレスからフィルバッファプロキシエンジン134の既知のアドレスに変換する。キャッシュエージェント120が利用可能なキャッシュツールを既に有しているため、フィルバッファプロキシエンジン134はノード選択を実行しない。
【0061】
312において、キャッシュエンジン124は、キャッシュストレージ126にコンテンツデータを充填し始め、コンテンツデータに関してキャッシュストレージ126におけるキャッシュロックを有効化する。いくつかの実施形態では、コンテンツ要求を受信したことに応じて、フィルバッファプロキシエンジン134は、コンテンツ要求において識別された上流ノードに接続し、上流ノードからコンテンツデータを受信する。フィルバッファプロキシエンジン134は、キャッシュストレージ136にコンテンツデータを充填し始め、ポート、またはネットワーク140aまたは140bの接続を介してキャッシュエージェント120にコンテンツデータを中継する。したがって、キャッシュストレージ126には、上流ノードとエッジノード110との間のプロキシまたは中継として動作するフィルバッファプロキシエンジン134を介して上流ノードからコンテンツデータが充填される。キャッシュストレージ126にコンテンツデータが充填される間、コンテンツデータに関してキャッシュロックが有効化される。キャッシュストレージ126にコンテンツデータが充填される間、クライアント102aが、コンテンツデータを取得する前にキャッシュストレージ126にコンテンツデータが充填されている間中待機している必要がないように、コンテンツデータはクライアント102aに送信され得る。しかしながら、別のクライアントからの同じコンテンツデータに対する任意の追加の要求は、キャッシュロックが有効化されている限り、キャッシュストレージ126からサービス提供され得ない。
【0062】
314において、キャッシュエージェント120は、追加のクライアント102bから同じコンテンツデータに対する追加の要求を受信する。要求(例えば、HTTP要求)に基づいて、キャッシュエージェント120は、追加の要求が同じコンテンツに対するものであるが異なるクライアントからのものであることを判断し得る。
【0063】
いくつかの例では、追加の要求を受信したことに応じて、キャッシュエージェント120(例えば、要求サービス提供エンジン122)は、ネットワーク140aまたは140b内の特定の要求に対応する接続を開放する。例えば、要求サービス提供エンジン122は、ビジネスロジックエージェント130とデータを通信するためにローカルホストネットワーク(例えば、ネットワーク140a)内のクライアント102bから受信した要求に対応するポートを開放し得る。ポートは、302において受信した要求に関して解放されたポートとは異なる。別の例では、要求サービス提供エンジン122は、ビジネスロジックエージェント130とデータを通信するためにネットワーク140b内のクライアント102bから受信した要求に対応する専用の接続を開放し得る。専用の接続は、302において受信した要求に関して解放された専用の接続とは異なる。
【0064】
いくつかの実施形態では、キャッシュエージェント120(例えば、要求サービス提供エンジン122)は、302において受信した要求に関して説明したのと同様の様式で、クライアント102bから受信した要求を認証するために、ネットワーク140aまたは140bを介してビジネスロジックエンジン132に認証要求を送信する。要求サービス提供エンジン122は、ビジネスロジックエンジン132から認証応答を受信し、認証応答は、クライアント102bから受信した要求に対してサービスすることができるかどうかを要求サービス提供エンジン122に示す。説明したように、認証応答はさらに、限定されるものではないが、サーバID、サブスクライバID、使用するキャッシュキーなどのメタデータを含み得る。認証応答に基づいてクライアント102bから受信した要求に対してサービス提供することができないとの判断に応じて、要求サービス提供エンジン122は適宜にクライアント102bに応答する。
【0065】
一方で、認証応答に基づいてクライアント102bから受信した要求に対してサービス提供することができるとの判断に応じて、キャッシュエンジン124は、316において、キャッシュストレージ126におけるコンテンツデータの充填が完了したかどうか(例えば、キャッシュロックが無効化または解除されたかどうか)を判断する。充填が完了した、および/またはキャッシュロックが無効化もしくは解除された(316:はい)との判断に応じて、キャッシュエンジン124は、318において、キャッシュストレージ126を使用してコンテンツデータをクライアントに提供する。
【0066】
一方で、充填が完了していない、および/またはキャッシュロックが無効化もしくは解除されていない(316:いいえ)との判断に応じて、フィルバッファプロキシエンジン134によって追加のクライアント102bにキャッシュされたコンテンツデータが提供される。キャッシュストレージ126にコンテンツデータが充填されている間に、フィルバッファプロキシエンジン134によってクライアント102bにキャッシュされたコンテンツデータが提供される。例えば、充填が完了していない、および/またはキャッシュロックが無効化もしくは解除されていない(316:いいえ)との判断に応じて、キャッシュエンジン124は、320において、追加のコンテンツ要求をフィルバッファプロキシエンジン134に送信するように構成される。追加のコンテンツ要求は、ポート、または認証のためにネットワーク140aまたは140b内で確立された(クライアント102b専用として)接続を介して送信され得る。キャッシュエンジン124は、説明した様式でこの追加の要求について上流ノードを選択することができる。310において送信されたコンテンツ要求と同様に、追加のコンテンツ要求は、コンテンツデータのアドレス、およびコンテンツデータが受信/取得される上流ノードのアドレスを含む。説明したように、追加のコンテンツ要求に関して、フィルバッファプロキシエンジン134は、説明した様式においてキャッシュエージェント120には「透明」に見える。
【0067】
いくつかの実装では、システム100aおよび100bは、ラージオブジェクトスライシングを用いることができる。リソースは数ギガバイト以上のサイズであり得るため、リソースは、効率性、遅延、および帯域幅の問題を低減するために、複数の部分またはスライスに分解またはスライスされ得る。スライスのサイズは、同じになるように標準化され得る。所与のリソースを構成するスライスは、HTTP範囲に対応し得る。換言すれば、コンテンツデータのアドレス(例えば、URL)がコンテンツデータの特定のスライスを指定しないため、HTTP範囲はさらに、コンテンツデータの特定のスライスを識別する。したがって、コンテンツ要求はさらに、コンテンツデータのアドレスに加えてコンテンツデータの範囲を含み得る。範囲は、コンテンツ要求上の範囲ヘッダにおいて指定され得る。フィルバッファプロキシエンジン134は、314において受信した要求が同じコンテンツデータに対応しているかどうかを決定するためのキーの一部として範囲ヘッダを使用する。換言すれば、フィルバッファプロキシエンジン134は、追加のコンテンツ要求のいずれかが同じコンテンツデータを要求しているかどうかをアドレスおよびHTTP範囲に基づいて判断することができる。コンテンツデータが複数のスライス/範囲を有するキャッシュストレージ136においてフィルバッファプロキシエンジン134がコンテンツデータの完全バージョン(コンテンツデータのアドレスにより識別された)を既に充填または格納している一例では、320において受信したコンテンツ要求は、コンテンツデータの特定のスライスを識別する範囲ヘッダを含む。フィルバッファプロキシエンジン134は、範囲ヘッダに基づいて特定のスライスを識別し、キャッシュストレージ136に格納された完全バージョンから、説明した様式で、コンテンツデータのスライスについてサービス提供することができる。
【0068】
322において、フィルバッファプロキシエンジン134を介して追加のクライアント102bにコンテンツデータが提供される。追加のコンテンツ要求が同じ上流ノードを識別する例では、フィルバッファプロキシエンジン134は、クライアント102aに関して第1のコンテンツ要求を処理するための上流ノードとの接続を既に確立している。フィルバッファプロキシエンジン134と上流ノードとの間の同じ接続を活用して、クライアント102bからの追加の要求に対して同じコンテンツデータをサービス提供することができる。コンテンツ要求が異なる上流ノードを識別する例では、フィルバッファプロキシエンジン134は、コンテンツデータを受信するための異なる上流ノードとの接続を確立するように構成される。
【0069】
いくつかの実施形態では、キャッシュストレージ126においてキャッシュロックが有効化されている間に、ブロック322は、314で受信した要求を中断し、代わりにフィルバッファプロキシエンジン134に接続して、キャッシュストレージ136からコンテンツデータを受信するようにクライアント102bに指示することを含む。例えば、充填が完了していない、および/またはキャッシュロックが無効化もしくは解除されていない(316:いいえ)との判断に応じて、要求サービス提供エンジン122は、314で受信した要求を中断し(例えば、タイムアウト=0に設定)、コンテンツデータを受信するためにフィルバッファプロキシエンジン134に接続するようにクライアント102bに示す、フィルバッファプロキシエンジン134のアドレス(例えば、IPアドレス)を含むメッセージをクライアント102bに送信する。クライアント102bは、フィルバッファプロキシエンジン134に接続し、キャッシュストレージ136に格納されたコンテンツデータを受信することができる。
【0070】
代替的な実施形態では、ブロック322は、キャッシュエージェント120が、ポート、または認証のためにネットワーク140aもしくは140b内で確立された(クライアント102b専用として)接続を介してコンテンツデータを受信することと、クライアント102bにコンテンツデータを中継することとを含む。いくつかの例では、ポートまたは認証のために確立された接続を介した、かつ、キャッシュエージェント120を介したフィルバッファプロキシエンジン134からクライアント102bへの専用のトンネルが確立され得る。コンテンツデータは、専用のトンネルを介してフィルバッファプロキシエンジン134からクライアント102bに伝達され得る。
【0071】
方法300aは、説明した様式でクライアント102a~102nのうちの追加のものからの追加の要求がキャッシュエージェント120によって受信されると、ブロック314に戻る。本明細書でさらに詳細に説明されるように、所与のコンテンツに対する要求が受信されている限り、フィルバッファプロキシエンジン134は、キャッシュストレージ136にコンテンツデータのコピーを維持し、上流ノードへの上流接続を維持する。同じコンテンツデータに対する追加の要求が受信されていないとの判断に応じて、コンテンツデータがキャッシュストレージ136からクリアされ得、上流ノードへのフィルバッファプロキシエンジン134の接続が終了され得る。
【0072】
図3Bは、様々な実施形態によるコンテンツ配信システム100aまたは100bのキャッシュを管理するための方法300bを示すフロー図である。図1A~3Bを参照すると、方法300bは、キャッシュエージェント120がキャッシュロックを有効化したコンテンツデータに関してキャッシュエージェント120に対するインテリジェントフィルバッファリングについてフィルバッファプロキシエンジン134のキャッシュストレージ136を活用することに関係している。方法300bは、ビジネスロジックエージェント130によって実行され、方法300aに対応する。
【0073】
説明したように、ビジネスロジックエージェント130(例えば、ビジネスロジックエンジン132)は、ネットワーク140aを介して(例えば、開放されたポートを介して)または140bを介して(例えば、専用の接続を介して)、キャッシュエージェント120(例えば、要求サービス提供エンジン122)から認証要求を受信し得る。ビジネスロジックエンジン132は、クライアント102aによって要求されたコンテンツデータがシステム100aまたは100bの有効な顧客に属するかどうか、コンテンツデータがクライアント102aにサービス提供されることを顧客のルールが許可するかどうか、および、コンテンツデータがクライアント102aにサービス提供されることをコンテンツ配信システム100aまたは100bのルールが許可するかどうかなどを判断する。ビジネスロジックエンジン132は、認証応答を要求サービス提供エンジン122に送信する。認証応答は、クライアント102aから受信した要求に対してサービス提供することができるかどうか(例えば、「はい」または「いいえ」)を要求サービス提供エンジン122に示す。いくつかの例では、要求に対してサービス提供することができるかどうかの指示に加えて、認証応答は、例えば、限定されるものではないが、サーバID、サブスクライバID、使用するキャッシュキーなどのメタデータを含み得る。
【0074】
キャッシュエージェント120はキャッシュストレージ126にコンテンツデータのコピーを格納しない一方、ビジネスロジックエージェント(例えば、フィルバッファプロキシエンジン134)は、352において、キャッシュエージェント120がクライアント102のためのコンテンツデータを要求していることを示すコンテンツ要求をキャッシュエージェント120から受信する。いくつかの例では、コンテンツ要求は、コンテンツデータのアドレス、およびコンテンツデータが受信/取得される上流ノードのアドレスを含む。
【0075】
354において、フィルバッファプロキシエンジン134は、キャッシュストレージ136にコンテンツデータを充填する。コンテンツデータは上流ノードから受信され、そのアドレスはコンテンツ要求に含まれる。例えば、コンテンツ要求を受信したことに応じて、フィルバッファプロキシエンジン134は、コンテンツ要求において識別された上流ノードに接続し、上流ノードからコンテンツデータを受信する。
【0076】
356において、フィルバッファプロキシエンジン134は、キャッシュされたコンテンツデータをキャッシュエージェント120(例えば、キャッシュエンジン124)に提供する。フィルバッファプロキシエンジン134は、キャッシュストレージ136にコンテンツデータを充填し始め(例えば、354において)、ポート、またはネットワーク140aまたは140bの接続を介してキャッシュエージェント120にコンテンツデータを中継する。したがって、キャッシュストレージ126には、上流ノードとエッジノード110との間のプロキシまたは中継として動作するフィルバッファプロキシエンジン134を介して上流ノードからコンテンツデータが充填される。
【0077】
キャッシュストレージ126にコンテンツデータを充填している間、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、キャッシュエージェント120から追加のコンテンツ要求を受信したことに応じて、キャッシュストレージ136にキャッシュされたコンテンツデータを維持する。追加のコンテンツ要求は、キャッシュエージェント120が追加のクライアントのために同じコンテンツデータを要求していることを示す。
【0078】
1つの例示的な実装では、358において、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、追加のコンテンツ要求がキャッシュエージェント120から受信されたかどうかを判断する。いくつかの例では、358における判断は、同じコンテンツデータに対する最後のコンテンツ要求がフィルバッファプロキシエンジン134によって受信されてからの予め定められた時間間隔に基づく。換言すれば、キャッシュされたコンテンツデータは、追加のコンテンツ要求のうちの2つの連続したものが予め定められた時間間隔内に受信されたこと、または、352において受信したコンテンツ要求および追加のコンテンツ要求が予め定められた時間間隔内に受信されたと判断したことに応じて、キャッシュストレージ136に維持される。予め定められた時間間隔の例は、限定されるものではないが、1秒、5秒、10秒、30秒、1分、2分、10分などを含む。
【0079】
予め定められた時間間隔を実装することにより、キャッシュストレージ136を使用した充填が完了し、キャッシュエンジン124がキャッシュロックを解除していない(例えば、キャッシュストレージ126を使用した充填が完了していない)状況を伴う「競争問題」に対処する。すなわち、キャッシュストレージ126および136を使用した充填が異なる時間に終了し得る。この状況において、充填が完了したすぐ後にフィルバッファプロキシエンジン134がキャッシュストレージ136からコンテンツデータを解放すると、フィルバッファプロキシエンジン134は、上流ノードへの新しい接続を確立してキャッシュストレージ136を再充填する必要があり得る。したがって、予め定められた時間間隔は、フィルバッファプロキシエンジン134がキャッシュされたコピーを解放する前の残り時間に対応し、そのため、できるだけ多くの追加のコンテンツ要求に役立てるようにキャッシュされたコピーの効率的な使用を提供する。
【0080】
同じコンテンツデータに対する追加のコンテンツ要求が受信されていない(358:いいえ)との判断に応じて、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、360において、キャッシュストレージ136からキャッシュされたコンテンツデータを解放し得る。すなわち、追加のコンテンツ要求のうち最も直近のものが受信されたから予め定められた時間間隔にわたって新しい追加のコンテンツ要求が受信されていないとの判断に応じて、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、360において、キャッシュストレージ136からキャッシュされたコンテンツデータを解放し得る。
【0081】
一方で、同じコンテンツデータに対する追加のコンテンツ要求(クライアント102bからの要求に対応する)が受信されている(358:はい)との判断に応じて、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、362において、キャッシュされたコンテンツデータを維持する。すなわち、追加のコンテンツ要求のうち最も直近のものが受信されたから予め定められた時間間隔内に新しい追加のコンテンツ要求が受信されたとの判断に応じて、ビジネスロジックエージェント134(例えば、フィルバッファプロキシエンジン134)は、362において、キャッシュされたコンテンツデータを維持する。
【0082】
説明したように、各追加のコンテンツ要求について、その特定の要求に対応する接続(ポートまたは専用の接続)がネットワーク140aまたは140bにおいて確立される。いくつかの例では、最後のポートまたは専用の接続が開放されてから予め定められた時間間隔内にネットワーク140aまたは140bにおいて新しいポートまたは専用の接続が開放されている限り、フィルバッファプロキシエンジン134は、キャッシュストレージ136にキャッシュされたコンテンツデータを維持する。各新しいポートまたは専用の接続は、説明された様式での認証のためにキャッシュエージェント120とビジネスロジックエージェント130との間でデータを通信するために使用され得る。ブロック362は、認証の成功に応じて実行される。同じポート、または認証のために確立された専用の接続を使用して追加のコンテンツ要求が受信され得る。
【0083】
キャッシュストレージ126にコンテンツデータが充填されている間に、364において、フィルバッファプロキシエンジン134によってクライアント102bにキャッシュされたコンテンツデータが提供される。352において受信したコンテンツ要求と同様に、追加のコンテンツ要求は、コンテンツデータのアドレス、およびコンテンツデータが受信/取得される上流ノードのアドレスを含む。いくつかの例では、追加のコンテンツ要求はまた、説明した様式でコンテンツデータのスライスを区別するための範囲ヘッダを含み得る。コンテンツデータのアドレス、上流ノードのアドレス、および範囲ヘッダ(もしあれば)を使用して、フィルバッファプロキシエンジン134は、コンテンツデータ(またはその一部)、および追加のコンテンツ要求を使用してコンテンツデータを取得するためのノードを識別することができる。
【0084】
追加のコンテンツ要求が同じ上流ノードを識別する例では、フィルバッファプロキシエンジン134は、クライアント102aに関して第1のコンテンツ要求を処理するための上流ノードとの接続を既に確立している。フィルバッファプロキシエンジン134と上流ノードとの間の同じ接続を活用して、クライアント102bからの追加の要求に対して同じコンテンツデータをサービス提供することができる。コンテンツ要求が異なる上流ノードを識別する例では、フィルバッファプロキシエンジン134は、コンテンツデータを受信するための異なる上流ノードとの接続を確立するように構成される。
【0085】
いくつかの実施形態では、ブロック364は、クライアント102bに直接接続する(例えば、キャッシュエージェント120を介して中継することなく直接的なネットワーク接続を介して)ことと、キャッシュストレージ126においてキャッシュロックが有効化されている間にキャッシュストレージ136からのコンテンツデータをクライアント102bに送信することとを含む。
代替的な実施形態では、ブロック364は、キャッシュエージェント120がクライアント102bにコンテンツデータを中継することができるように、ポート、または認証のためにネットワーク140aもしくは140b内で確立された(クライアント102b専用として)接続を介してキャッシュエージェント120にコンテンツデータを送信することを含む。いくつかの例では、ポートまたは認証のために確立された接続を介した、かつ、キャッシュエージェント120を介したフィルバッファプロキシエンジン134からクライアント102bへの専用のトンネルが確立され得る。コンテンツデータは、専用のトンネルを介してフィルバッファプロキシエンジン134からクライアント102bに伝達され得る。
【0086】
方法300bは、任意の追加のコンテンツ要求が受信されたかどうかを判断するためにブロック358に戻る。
【0087】
いくつかの場合では、別の「競争問題」が生じ得る。この「競争問題」は、キャッシュストレージ126を使用した充填が完了し(例えば、クライアント102aによる要求に対するサービス提供がキャッシュエージェント120によって完了される)、フィルバッファリングプロキシエンジン134がコンテンツデータを解放していない(例えば、クライアント102a~102nのうちの別のものによる要求に対するサービスのためのキャッシュストレージ136を使用した充填が完了していない)状況に関する。この時点で、キャッシュストレージ126に格納されたキャッシュされたコンテンツデータは失効し得、無効化され得、または、別の好適な理由で更新/リフレッシュする必要があり得る。この場合、フィルバッファプロキシエンジン134が既に実行している充填についての新しいコンテンツ要求をキャッシュエージェント120がフィルバッファプロキシエンジン134に送信しないことを確実にするためのメカニズムが必要となる。すなわち、フィルバッファプロキシエンジン134が、新しいコンテンツ要求に対処するためにコンテンツデータの失効/無効化したコピーを使用することを防止するためのメカニズムが必要となる。
【0088】
このように、フィルバッファプロキシエンジン134によって受信されるコンテンツ要求は、いくつかの実施形態では、フィルIDを含む。フィルIDは、キャッシュエージェント120が現在は古いコピーを有するため、コンテンツデータの新しくフレッシュな失効していない有効なコピーがキャッシュエージェント120により要求されていることを示す。フィルIDは、コンテンツ要求内のヘッダであり得る。第1のフィルIDは、新しいコピーでなくても、コンテンツデータの任意のコピーが使用され得ることを示す。第2のフィルIDは、コンテンツデータの新しいコピーを使用する必要があり、フィルバッファプロキシエンジン134が、新しい接続を使用して上流ノードからコンテンツデータの新しいコピーを取得する必要があることを示す。このように、フィルバッファプロキシエンジン134は、フィルIDに基づいてコンテンツデータの新しいコピーが必要であることを判断することができる。フィルバッファプロキシエンジン134は、新しいコピーが必要であると判断したことに応じて、キャッシュストレージ136にコンテンツデータの新しいコピーを充填する。
【0089】
いくつかの例では、フィルバッファプロキシエンジン134は、フィルIDヘッダを使用することによって、自身のいかなる失効ロジックも実装する必要はない。これは、フィルバッファプロキシエンジン134が非常に短期のキャッシュを実装しているかどうかにかかわらず真である。フィルバッファプロキシエンジン134が長期のキャッシュを実行していた場合でも、要求されたコンテンツデータを区別するためにフィルIDヘッダを使用することは、いったんコンテンツデータが失効すると、フィルバッファプロキシエンジン134がコンテンツデータの新しいコピーを要求し(新しいフィルIDを受信したことに基づいて)、古いコンテンツデータはもう要求されないため古い(フィルIDの前の)コンテンツデータはキャッシュストレージ136から失効することを意味する。したがって、フィルIDヘッダは競争を解決するのみでなく、フィルバッファプロキシエンジン134がHTTP失効を理解する必要性を除去することによって、フィルバッファプロキシエンジン134における処理も簡略化する。
【0090】
いくつかの実施形態では、キー計算の一部として条件付き要求ヘッダ(または条件付きヘッダ)が使用され得る。例えば、キャッシュストレージ126に格納されている間にコンテンツコピーが失効したことに応じて、キャッシュエンジン124は、コンテンツデータの上流で条件付き要求を行う。条件付き要求は、コンテンツデータが失効し、失効してからコンテンツデータが変更されている場合にはコンテンツデータの新しいコピーが必要であること、そして、コンテンツデータが変更されていない場合には、そのことを示す応答が要求される(それにより自身がそれを使用することができるように)ことを示すHTTPヘッダを保持する。従来、キャッシュロックが無効化され、キャッシュエージェント120が同じコンテンツデータの複数のコピーを受信するため、キャッシュエージェント120は、コンテンツデータに対して複数の条件付き要求を送信する。
【0091】
本開示では、条件付き要求ヘッダは、コンテンツデータが変更されていないとの応答をキャッシュエージェント120がフィルバッファプロキシエンジン134から受信することができることを確実にするために、上流フィルを区別するためのフィルバッファプロキシエンジン134のキーロジックに含まれる。コンテンツデータの完全バージョンが既に充填されており、条件付き要求がコンテンツ要求の一部として受信されているとフィルバッファプロキシエンジン134が判断したことに応じて、フィルバッファプロキシエンジン134は、説明した様式で、キャッシュストレージ136に現在格納されているコンテンツデータのコピーを使用してコンテンツ要求に応答する。コンテンツデータが充填されておらず、条件付き要求がコンテンツ要求の一部として受信されているとフィルバッファプロキシエンジン134が判断したことに応じて、次に、フィルバッファプロキシエンジン134は、キーとして(またはキー計算の一部として)条件付き要求を使用する。
【0092】
キーは、フィルバッファプロキシエンジン134が複数のリソースに対する複数のコンテンツ要求を区別するために使用される。例えば、フィルバッファプロキシエンジン134は、受信した各コンテンツ要求についてキーを計算する。キーは、好適なキー生成関数によって、様々なパラメータ(例えば、限定されるものではないが、コンテンツデータが取得されるターゲット上流ノード、コンテンツデータを要求しているホスト/クライアント、コンテンツデータのアドレス(例えば、URL)、フィルID、初期ヘッダなど)を実行することによって判断され得る。
【0093】
したがって、コンテンツ要求は条件付き要求ヘッダを含む。フィルバッファプロキシエンジン134は、条件付き要求ヘッダに基づいてコンテンツ要求に対応するキーを判断する。
【0094】
本明細書で説明される実施形態は、図面を参照して説明してきた。図面は、本明細書で説明されるシステム、方法、およびプログラムを実装する特定の実施形態の特定の詳細を示している。しかしながら、図面を用いた実施形態の説明は、図面に存在し得るいかなる限定も本開示に課すものと解釈するべきではない。
【0095】
本明細書の請求項の要素は、その要素が「ための手段」という表現を使用して明示的に引用されていない限り、米国特許法112条(f)の条項の下で解釈されないこと理解すべきである。
【0096】
本明細書で使用される場合、「回路」という用語は、本明細書で説明される機能を実行するように構造化されたハードウェアを含み得る。いくつかの実施形態では、それぞれの各「回路」は、本明細書で説明される機能を実行するハードウェアを構成するための機械可読媒体を含み得る。回路は、処理回路、ネットワークインタフェース、周辺デバイス、入力デバイス、出力デバイス、センサなどを含むがこれらに限定されない1つまたは複数の回路コンポーネントとして具現化され得る。いくつかの実施形態では、回路は、1つまたは複数のアナログ回路、電子回路(例えば、集積回路(IC)、ディスクリート回路、システムオンチップ(SOC)回路など)、電気通信回路、ハイブリッド回路および任意の他のタイプの「回路」の形態を取り得る。これに関連して、「回路」は、本明細書で説明した動作の実現を達成するか、または容易にするための任意のタイプのコンポーネントを含み得る。例えば、本明細書で説明した回路は、1つまたは複数のトランジスタ、論理ゲート(例えば、NAND、AND、NOR、OR、XOR、NOT、XNORなど)、抵抗器、マルチプレクサ、レジスタ、コンデンサ、インダクタ、ダイオード、ワイヤ等を含み得る。
【0097】
「回路」は、1つまたは複数のメモリまたはメモリデバイスに通信可能に結合された1つまたは複数のプロセッサも含み得る。これに関連して、1つまたは複数のプロセッサは、メモリに格納された命令を実行し得るか、または、本来であれば1つまたは複数のプロセッサにアクセス可能な命令を実行し得る。いくつかの実施形態では、1つまたは複数のプロセッサは、様々な態様で具現化され得る。1つまたは複数のプロセッサは、少なくとも本明細書で説明した動作を実行するのに十分な様式で解釈され得る。いくつかの実施形態では、1つまたは複数のプロセッサは、複数の回路により共有され得る(例えば、回路Aおよび回路Bが、いくつかの例示的な実施形態では、メモリの異なるエリアを介して格納されるか、またはそうでなければアクセスされる命令を実行し得る同じプロセッサを備え得るか、またはそうでなければ共有し得る)。代替的に、または追加的に、1つまたは複数のプロセッサは、1つまたは複数のコプロセッサとは無関係に特定の動作を実行するように、または別様に実行するように構造化され得る。他の例示的な実施形態では、2つまたはそれよりも多くのプロセッサがバスを介して結合されることで、独立した、並行の、パイプライン化またはマルチスレッド化された命令の実行が可能になり得る。各プロセッサは、1つまたは複数の汎用プロセッサ、ASIC、FPGA、DSP、またはメモリにより提供される命令を実行するように構造化された他の好適な電子データ処理コンポーネントとして実装され得る。1つまたは複数のプロセッサは、シングルコアプロセッサ、マルチコアプロセッサ(例えば、デュアルコアプロセッサ、トリプルコアプロセッサ、クアッドコアプロセッサなど)、マイクロプロセッサなどの形態を取り得る。いくつかの実施形態では、1つまたは複数のプロセッサは、装置の外部にあってよく、例えば、1つまたは複数のプロセッサは、リモートプロセッサ(例えば、クラウドベースプロセッサ)であってよい。代替的に、または追加的に、1つまたは複数のプロセッサは、装置の内部および/またはローカルであってよい。これに関連して、所与の回路またはそのコンポーネントが、ローカルに(例えば、ローカルサーバ、ローカルコンピューティングシステムなどの一部として)、またはリモートで(例えば、クラウドベースサーバなどのリモートサーバの一部として)配置され得る。そのために、本明細書で説明した「回路」は、1つまたは複数の位置にわたって分散されたコンポーネントを含み得る。
【0098】
当該実施形態のシステム全体または部分を実装するための例示的なシステムは、処理ユニットと、システムメモリと、システムメモリを含む様々なシステムコンポーネントを処理ユニットに結合させるシステムバスとを含むコンピュータの形態の汎用コンピューティングコンピュータを含み得る。各メモリデバイスは、非一時的揮発性記憶媒体、不揮発性記憶媒体、非一時的記憶媒体(例えば、1つまたは複数の揮発性メモリおよび/または不揮発性メモリ)などを含み得る。いくつかの実施形態では、不揮発性媒体は、ROM、フラッシュメモリ(例えば、フラッシュメモリ、例えばNAND、3D NAND、NOR、3D NORなど)、EEPROM、MRAM、磁気ストレージ、ハードディスク、光ディスクなどの形態を取り得る。他の実施形態では、揮発性記憶媒体は、RAM、TRAM、ZRAMなどの形態を取り得る。上述のものの組み合わせも、機械可読媒体の範囲内に含まれる。これに関連して、機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用処理機械に特定の機能または機能のグループを実行させる命令およびデータを含む。対応するメモリデバイスの各々は、プロセッサ命令および関連データを含む、1つまたは複数の関連する回路により実行されるオペレーションに関する情報(例えば、データベースコンポーネント、オブジェクトコードコンポーネント、スクリプトコンポーネントなど)を本明細書で説明した例示的な実施形態に従って維持するように、またはそうでなければ格納するように動作可能であってよい。
【0099】
本明細書で説明した「入力デバイス」という用語は、キーボード、キーパッド、マウス、ジョイスティックまたは同様の機能を実行する他の入力デバイスを含むがこれらに限定されない任意のタイプの入力デバイスを含み得ることにも留意されたい。比較的に、本明細書で説明した「出力デバイス」という用語は、コンピュータモニタ、プリンタ、ファクシミリ機または同様の機能を実行する他の出力デバイスを含むがこれらに限定されない任意のタイプの出力デバイスを含み得る。
【0100】
本明細書における図は方法ステップの特定の順序および構成を示し得るが、これらのステップの順序は示されているものとは異なり得ると理解されることに留意されたい。例えば、2つ以上のステップが、同時に、または部分的に同時に実行され得る。また、個別のステップとして実行されるいくつかの方法ステップが組み合わされてよく、組み合わされたステップとして実行されているステップが個別のステップに分けられてよく、特定のプロセスのシーケンスが逆にされるかまたは別様に変更されてよく、個別のプロセスの性質または数は変更されたり変化させられたりしてよい。任意の要素または装置の順序またはシーケンスは、代替的な実施形態に従って変更されたり置き換えられたりしてよい。したがって、全てのそのような修正は、添付の特許請求の範囲において定義される本開示の範囲内に含まれるよう意図されている。そのような変形は、選択される機械可読媒体およびハードウェアシステムと、設計者の選択とに依存する。全てのそのような変形は本開示の範囲内であることが理解される。同様に、本開示のソフトウェアおよびウェブの実装は、ルールベースロジックと様々なデータベース検索ステップ、相関付けステップ、比較ステップ、および決定ステップを実現する他のロジックとを伴う標準的なプログラミング技術を用いて実現され得る。
【0101】
実施形態についての前述の説明を例示および説明の目的で提示した。包括的なものとすることも、本開示を開示された正確な形式に限定することも意図されておらず、修正および変更が、上述の教示に鑑みて可能であるか、または本開示から取得され得る。当該実施形態は、本開示の原理およびその実際の用途を説明することで、様々な実施形態を当業者が利用することを可能にするために、かつ、様々な修正が、意図された特定の用途に適合するよう、選択および説明されている。添付の特許請求の範囲において表される本開示の範囲から逸脱することなく、他の置き換え、修正、変更および省略が、当該実施形態の設計、動作条件および実施形態で行われ得る。
図1A
図1B
図2
図3A
図3B
【国際調査報告】