JP6438037B2 - 通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法 - Google Patents

通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法 Download PDF

Info

Publication number
JP6438037B2
JP6438037B2 JP2016546887A JP2016546887A JP6438037B2 JP 6438037 B2 JP6438037 B2 JP 6438037B2 JP 2016546887 A JP2016546887 A JP 2016546887A JP 2016546887 A JP2016546887 A JP 2016546887A JP 6438037 B2 JP6438037 B2 JP 6438037B2
Authority
JP
Japan
Prior art keywords
response
token
server
data
content
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
JP2016546887A
Other languages
English (en)
Other versions
JP2016538669A (ja
Inventor
フラック、マーティン、ティー
スタイナー、モリッツ、エム
ルディン、スティ−ヴン、エル
ハタラ、ジョゼフ
Original Assignee
アカマイ テクノロジーズ インコーポレイテッド
アカマイ テクノロジーズ インコーポレイテッド
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 アカマイ テクノロジーズ インコーポレイテッド, アカマイ テクノロジーズ インコーポレイテッド filed Critical アカマイ テクノロジーズ インコーポレイテッド
Publication of JP2016538669A publication Critical patent/JP2016538669A/ja
Application granted granted Critical
Publication of JP6438037B2 publication Critical patent/JP6438037B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/76Proxy, i.e. using intermediary entity to perform cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0884Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Description

本開示は一般に、分散データ処理システム及びコンピュータ・ネットワークを介したユーザへのコンテンツの配信に関し、より具体的に言えば、コンピュータ・ネットワークを介したコンテンツの配信を高速化するためにコンテンツをキャッシングするための技法に関する。
分散コンピュータ・システムは従来技術で知られている。こうした分散コンピュータ・システムの1つが、サービス・プロバイダによって動作及び管理される「コンテンツ配信ネットワーク」又は「CDN」である。サービス・プロバイダは典型的には、第三者に代わってコンテンツ配信サービスを提供する。この種の「分散システム」は、典型的には、コンテンツ配信又は委託サイト・インフラストラクチャのサポートなどの様々なサービスを容易にするように設計されたソフトウェア、システム、プロトコル、及び技法と共に、ネットワークによってリンクされた自律コンピュータの集合を指す。このインフラストラクチャは、典型的には複数のテナント、コンテンツ・プロバイダによって共有される。インフラストラクチャは一般に、こうしたコンテンツ・プロバイダ又は他のテナントに代わって、ウェブ・ページ、ストリーミング媒体、及びアプリケーションなどのコンテンツの記憶、キャッシング、又は伝送に使用される。プラットフォームは、DNS照会ハンドリング、提供、データの監視及び報告、コンテンツ・ターゲティング、個人化、並びにビジネス・インテリジェンスを含むが限定されない、それらと共に使用される補助技術も提供することができる。
図1に示されたような既知のシステムでは、分散コンピュータ・システム100がコンテンツ配信ネットワーク(CDN)として構成され、インターネットを中心に分散された機械102のセットを有する。典型的には、ほとんどの機械はインターネットの縁部付近、すなわちエンド・ユーザ・アクセス・ネットワーク又はその近傍に配置されたサーバである。ネットワーク・オペレーション・コマンド・センター(NOCC)104を使用して、システム内の様々な機械の動作を処理及び管理することができる。ウェブ・サイト106などのコンテンツ・プロバイダと提携している第三者サイトは、分散コンピュータ・システム100への、及び特に(時には「エッジ」サーバと呼ばれる)CDNサーバへの、コンテンツ(例えば、HTML又は他のマークアップ言語ファイル、埋め込まれたページ・オブジェクト、ストリーミング媒体、ソフトウェア・ダウンロードなど)の配信をオフロードする。こうしたサーバはまとめて、特定の地理的位置でポイント・オブ・プレゼンス(POP)107にグループ化することができる。
CDNサーバは、典型的には、インターネット上でパブリックにルーティング可能なノードに、モバイル・ネットワーク内に配置されたノード内又はノードの近傍に、企業ベースの専用ネットワーク内又は専用ネットワークの近傍に、或いはそれらの組み合わせに配置される。
典型的には、コンテンツ・プロバイダは、所与のコンテンツ・プロバイダ・ドメイン又はサブドメインを、サービス・プロバイダの権威あるドメイン名サービスによって管理されるドメインへとエイリアス化することによって(例えばDNS CNAMEによって)、それらのコンテンツ配信をオフロードする。サーバ・プロバイダのドメイン名サービスは、コンテンツをより確実及び効率的に取得するために、コンテンツを所望するエンド・ユーザ・クライアント機械122を分散コンピュータ・システムに(又はより具体的には、プラットフォーム内のCDNサーバのうちの1つに)導く。CDNサーバは、例えばローカル・キャッシュから、別のCDNサーバから、コンテンツ・プロバイダに関連付けられたオリジン・サーバ106から、又は他のソースから要求されたコンテンツをフェッチすることによって、クライアント要求に応答する。
キャッシュ可能なコンテンツの場合、CDNサーバは典型的には、各キャッシュ可能オブジェクトに対して有効期間(TTL)を設定することに依拠するキャッシング・モデルを採用する。これがフェッチされた後、オブジェクトが典型的にはオリジン・サーバ106から再有効化又は再フェッチされる時点であるTTLが満了するまで、オブジェクトを所与のCDNサーバにローカルに記憶することができる。キャッシュ不能オブジェクト(時には「動的」コンテンツと呼ばれる)の場合、オブジェクトがクライアントによって要求されるごとに、CDNサーバは典型的にはオリジン・サーバ106に戻らなければならない。CDNは、オリジン・サーバ106よりもクライアント要求を取り扱うCDNサーバに近い様々なCDNサーバ内の顧客コンテンツの中間キャッシングを提供するために、サーバ・キャッシュ階層を動作させることが可能であって、こうしたキャッシュ階層サブシステムの1つが米国特許第7376716号に記載されており、その開示は参照により本明細書に組み込まれている。
図1には詳細に示されていないが、分散コンピュータ・システムは、CDNサーバから使用量及び他のデータを収集し、そのデータを領域又は領域のセット全体にわたって集約し、監視、ロギング、警告、課金、管理、並びに他の動作及び処理機能を容易にするためにそのデータを他のバックエンド・システム110、112、114、及び116に渡す、分散データ収集システム108などの他のインフラストラクチャも含むことができる。分散ネットワーク・エージェント118は、ネットワーク並びにサーバ・ロードを監視し、ネットワーク、トラフィック、及びロード・データをDNS照会ハンドリング機構115に提供する。分散データ移送機構120を使用して、制御情報(例えば、コンテンツを管理するため、ロード・バランシングを容易にするためなどのメタデータ)をCDNサーバに分散することができる。CDNは、米国特許第7472178号に記載されており、その開示が参照により本明細書に組み込まれているような、CDNサーバにアクセス可能なネットワーク・データセンタ内に配置可能であり、コンテンツのソースとして動作可能な、ネットワーク・ストレージ・サブシステム(本明細書では時には「NetStorage」と呼ばれる)を含むことができる。
図2に示されるように、CDN内の所与の機械200は、1つ又は複数のアプリケーション206をサポートする(Linux又は変形などの)オペレーティング・システム・カーネル204を実行する商品ハードウェア(例えばマイクロプロセッサ)202を備える。例えばコンテンツ配信サービスを容易にするために、所与のマシンは典型的には、(ハイパーテキスト転送プロトコル)HTTPプロキシ207、ネーム・サーバ208、ローカル監視プロセス210、分散データ収集プロセス212などのアプリケーションのセットを実行する。HTTPプロキシ207(本明細書では時にはグローバル・ホスト又は「ゴースト」と呼ばれる)は典型的には、機械からのコンテンツのキャッシュ及び配信を管理するためのマネージャ・プロセスを含む。ストリーミング媒体の場合、機械は、サポートされる媒体フォーマットによって必要とされる、ウィンドウズ・メディア・サーバ(WMS)又はFlashサーバなどの1つ又は複数の媒体サーバを含むことができる。
図2に示される所与のCDNサーバは、好ましくはドメイン固有、コンテンツ・プロバイダ固有ベースで、好ましくは構成システムを使用してCDNサーバに分散された構成ファイルを使用して、1つ又は複数の拡張コンテンツ配信機能を提供するように構成可能である。所与の構成ファイルは、好ましくはXMLベース(拡張マークアップ言語ベース)であり、1つ又は複数の高度なコンテンツ・ハンドリング機能を容易にするコンテンツ・ハンドリング規則及び指示のセットを含む。構成ファイルは、データ移送機構を介してCDNサーバに配信することができる。本明細書によってコンテンツが参照により組み込まれている米国特許第7240100号は、CDNサーバ・コンテンツ制御情報を配信及び管理するための有用なインフラストラクチャについて記載しており、この制御情報及び他の制御情報(時には「メタデータ」と呼ばれる)は、CDNサービス・プロバイダ自体、又は(エクストラネットなどを介して)オリジン・サーバを操作するコンテンツ・プロバイダ顧客によって、提供することができる。参照により本明細書に組み込まれている米国特許第7111057号は、CDNマシンからコンテンツをパージするためのアーキテクチャについて記載している。CDNプラットフォームに関するより詳細な情報は米国特許第6108703号及び第7596619号で見ることが可能であり、その教示は本明細書によってそれらの全体が参照により組み込まれている。
典型的な動作において、コンテンツ・プロバイダは、CDNによってサービスが提供されることを希望するコンテンツ・プロバイダ・ドメイン又はサブドメインを識別する。CDNサービス・プロバイダは、(例えば正規名又はCNAME、或いは他のエイリアス技法を介して)コンテンツ・プロバイダ・ドメインをCDNホスト名に関連付け、その後CDNプロバイダは、そのCDNホスト名をコンテンツ・プロバイダに提供する。コンテンツ・プロバイダ・ドメイン又はサブドメインに対するDNS照会がコンテンツ・プロバイダのドメイン名サーバで受信されると、それらのサーバはCDNホスト名を戻すことで応答する。そのネットワーク・ホスト名はCDNを指示し、その後そのホスト名はCDNネーム・サービスを介して解決される。そのため、CDNネーム・サービスは1つ又は複数のIPアドレスを戻す。要求側クライアント・アプリケーション(例えばブラウザ)は、その後(例えばHTTP又はHTTPSを介して)IPアドレスに関連付けられたCDNサーバ機械にコンテンツを要求する。要求は、元のコンテンツ・プロバイダ・ドメイン又はサブドメインを含むホスト・ヘッダを含む。ホスト・ヘッダを伴う要求を受信すると同時に、CDNサーバはその構成ファイルをチェックして、要求されたコンテンツ・ドメイン又はサブドメインが実際にCDNによってハンドリングされているかどうかを決定する。ハンドリングされている場合、CDNサーバは、構成に指定されているようにそのドメイン又はサブドメインに関するそのコンテンツ・ハンドリング規則及び指示を適用する。これらのコンテンツ・ハンドリング規則及び指示は、前述のようにXMLベースの「メタデータ」構成ファイル内に配置可能である。
CDNプラットフォームは、通信効率が改善され得るインターネット全体にわたるオーバーレイとみなすことができる。オーバーレイ上の改善された通信は、CDNサーバがオリジン・サーバ106から、又は中間キャッシュ・ペアレントとして動作している別のCDNサーバから、要求されたコンテンツを取得する必要がある場合、或いは、コンテンツ・プロバイダに代わって、又は別の方法で、オーバーレイ全体にわたるキャッシュ不能コンテンツの通信を高速化する場合に役立ち得る。CDNサーバ間及び/又はオーバーレイ全体にわたる通信は、ルート選択、TCP強化を含むプロトコル最適化、持続的接続のプーリング及び再使用、コンテンツ及びヘッダ圧縮並びに重複排除、並びに、とりわけその開示が参照により本明細書に組み込まれている米国特許第6820133号、第7274658号、第7607062号、及び第7660296号に記載されたような他の技法を使用して、強化又は改善することができる。
通信の強化及び高速化をもたらすオーバーレイとして、CDNサーバ・リソースを使用して、企業データ・センター間及び/又は(非公開で管理可能な)支店本店オフィス間での、並びに企業ユーザによって使用される第三者サービス型ソフトウェア(SaaS)プロバイダとの間の、ワイド・エリア・ネットワーク(WAN)高速化サービスを容易にすることができる。
これらのラインに沿って、CDN顧客は、顧客の企業ファイアウォール内でホストされているイントラネット・ウェブ・アプリケーションを高速化するため、並びに、ファイアウォール内のユーザ間においてインターネット・クラウド内でホストされているアプリケーションへの(例えばSaaSプロバイダからの)橋渡しをするウェブ・アプリケーションを高速化するために、「ファイアウォール内(behind the firewall)」管理サービス製品に加入することができる。
これらの2つの使用ケースを達成するために、CDNソフトウェアは、1つ又は複数の顧客データ・センター内でホストされている(潜在的には顧客ハードウェア上で実行する仮想機械内の)機械上、及びリモートの「支店オフィス」内でホストされている機械上で、実行可能である。顧客データ・センター内で実行しているCDNソフトウェアは、典型的にはサービス構成、サービス管理、サービス報告、リモート管理アクセス、顧客SSL証明書管理、並びに構成済みウェブ・アプリケーションに関する他の機能を提供する。支店オフィス内で実行しているソフトウェアは、そこに配置されているユーザに、ラスト・マイル・ウェブ高速化を提供する。CDN自体は典型的には、顧客ファイアウォール内で実行しているノードと、CDNサービス・プロバイダの他のインフラストラクチャ(例えばネットワーク及び運営施設)との間にゲートウェイを提供するために、CDNデータ・センター内でホストされているCDNハードウェアを提供する。この種の管理ソリューションは、自社のイントラネットに関してCDN技術を活用して、ワイド・エリア・ネットワーク最適化ソリューションを提供するための機会を企業に提供する。この種のソリューションは、企業に対する高速化をインターネット上のどこにでもサービスを提供するアプリケーションへと拡大する。企業のCDNベースの専用オーバーレイ・ネットワークと、既存のCDN公衆インターネット・オーバーレイ・ネットワークとを橋渡しすることによって、リモートの支店オフィスにいるエンド・ユーザはエンドツーエンドの高速化されたアプリケーションを取得する。図3は、あり得るオーバーレイ全体にわたるデータ・フローの例と共に、前述のようなWAN最適化された「ファイアウォール内」サービス提供に関する一般的なアーキテクチャを示す。ファイアウォール内サービス提供に関する他の情報は、米国特許第7600025号の教示内に見ることが可能であり、その教示は本明細書によって参照により組み込まれている。
現在CDNで使用されているような既知の技法は多くの利点を提供するが、インターネット上のトラフィックの増加する重要な部分である、ノーストア又は明示的TTLキャッシング手法が準最適な、トラフィックをより良く高速化するための技法が求められている。アプリケーション・プログラマ・インターフェース(API)を介してアクセスされるコンテンツは、こうしたトラフィックの一例である。上記を序論として、本開示の主題である改良されたシステム、方法、及び装置を以下で説明する。
本開示はとりわけ、インターネット上でのコンテンツの配信のためのシステム、デバイス、及び方法を説明する。既知の有効期間(TTL)ベースのキャッシング及びノーストア手法を向上させる、キャッシング・モデルを説明する(但し以下で説明するように、こうした技法は本明細書の教示と共に使用可能である)。本明細書で説明する手法は、無期限のキャッシングをサポートすることが可能でありながら、下位のオリジン・コンテンツが変更されるとすぐに更新し、それらをとりわけアプリケーション・プログラミング・インターフェース(API)を使用して取り出されるコンテンツに適合したものとするが、これに限定されるものではない。
例えば一実施形態において、オリジン・サーバは、クライアント・コンテンツ要求に対する応答にトークンの形の識別子を用いて注釈を付けるようにプログラミング可能である。(APIの場合、オリジン・サーバ上で実行するAPIは、APIに対して行われたクライアント要求への応答にトークンを用いて注釈を付けるようにプログラミング可能である。)トークンは、配信プラットフォーム内のキャッシング・プロキシ・サーバ内で、オリジン応答をキャッシングするプロセスをドライブすることができる。発行された応答に関するTTLは、無限であるか又は相対的に長いものとみなすことが可能であり、プロキシ内にキャッシュされた応答からの高速化を可能にする。その後、トークンをハンドルとして使用し、以前の応答を無効にすることができる。
好ましくは、トークンは、オリジンで応答を作成するために使用されるデータ又は論理に対応するか又はこれを示すことが可能である。例えば、オリジンでのコンテンツ生成をドライブするデータベース内の特定のレコードは、トークンに対応し得る。トークンは、オリジンでのファイル又は他のデータにも対応し得る。こうしたレコード、ファイル、又は他のオリジン・データが更新された場合、トークンに関する無効化アサーションを(例えばオリジンから)発行し、適切なプロキシ・キャッシュに伝搬することができる。そして、当該トークンでタグ付けされたプロキシ・キャッシュ内の応答は変更されたデータに依存するため、それらの応答を無効化することが可能である。トークンは任意のアイテム又はデータ・セットに対応し得るものであるため、手法は、オリジン・データベース構造及びコンテンツ生成インフラストラクチャに関してフレキシブルである。
トークンは、様々な他の方法で使用可能である。例えばトークンを使用して、応答を作成するためにデータの選択又は分類アルゴリズムが使用された旨を示すことができる。後に、応答内のデータの選択又は分類が期限切れになったときに、応答を無効にするためのハンドルとして「選択/分類」トークンを使用することができる。このようにトークンは、オリジンで適用され応答内に表現された論理を示すことができる。
更なる例として、トークンは、特定の構文スタイルで値の範囲を表現することによって、「範囲」トークンとみなすこともできる。応答には、例えば応答が関わる値の範囲を示す範囲トークンでタグ付けすることができる。以前に列挙された範囲トークンの範囲内にある特定の値を後に無効化することによって、それらの範囲トークン及びそれらが接続された応答を無効にすることができる。
本明細書で説明する主題は、コンテンツの配信及びオンライン・プラットフォーム・アーキテクチャにおける多種多様な適用例を有し、CDNのサービス及び技術と共に使用可能である。
当業者であれば理解されるように、上記の説明は序論を提供するために単に本発明の例に言及するものである。他の実施形態は本書の残りの部分で説明する。上記は限定的なものではなく、その教示は様々なシステム、方法、装置、及び持続性コンピュータ可読媒体内で実現可能である。本明細書に記載された機能は、異なる機械間で様々な方法で組み合わせるか又は分割することが可能であるため、特定の機械への機能の割り振りは限定的なものではないことにも留意されたい。
本発明は、添付の図面に関連した以下の詳細な説明からより完全に理解されよう。
コンテンツ配信ネットワークとして構成された既知の分散コンピュータ・システムの一実施形態を示す概略図である。 図1のシステム内のコンテンツ配信サーバが実装可能な機械の一実施形態を示す概略図である。 オーバーレイCDNプラットフォーム全体にわたるメッセージ・フロー及び高速化の一実施形態を示す概略図である。 本明細書の教示を活用するキャッシング技法を使用してコンテンツの配信を高速化する例示のシステムにおける、メッセージ・フローの一実施形態を示す概略図である。 本明細書の教示を活用するキャッシング技法を使用してコンテンツの配信を高速化する例示のシステムにおける、メッセージ・フローの別の実施形態を示す概略図である。 APIコンテンツを高速化する場合の、API応答間の関係の例及び下位のAPIデータベースの例を示すブロック図である。 本発明の教示に従った、ホログラム・ノードの例示ネットワーク及びノード間のメッセージング・フローを示す概略図である。 図6に示されたネットワークの例示のネットワーク状態を示す概略図である。 キャッシング・サーバの階層状配置構成でのメッセージ・フローの例を示す概略図である。 キャッシング・サーバの階層状配置構成でのメッセージ・フローの例を示す概略図である。 キャッシング・サーバの階層状配置構成でのメッセージ・フローの例を示す概略図である。 キャッシング・サーバの階層状配置構成でのメッセージ・フローの例を示す概略図である。 キャッシング・サーバの階層状配置構成でのメッセージ・フローの例を示す概略図である。 図6〜図7に示されるノードに関するソケット・セット設計の例を示す概略図である。 図9に示されるソケット・セット設計を使用する3つのノードに関する例示のネットワーク状態を示す概略図である。 本明細書の教示を実装するために使用可能なコンピュータ・システム内のハードウェアを示すブロック図である。
以下の説明は、本明細書で開示される方法及び装置の構造、機能、製造、及び使用の原理を全面的に理解するための、本発明の実施形態を示す。本明細書で説明され添付の図面に示されるシステム、方法、及び装置は非限定的な例であり、特許請求の範囲のみが求められる保護の範囲を定義する。例示の一実施形態に関連して説明又は図示された特徴は、他の実施形態の特徴と組み合わせることができる。こうした修正及び変形は、本発明の範囲内に含められることが意図される。本明細書に記載されたすべての特許、公開、及び参照は、それらの全体が参照により本明細書に明白に組み込まれている。原文「e.g.」という略語は、本明細書において非限定的な句「例えば」の省略形として使用される。
本開示によれば、サーバの機能は、無期限のキャッシング期間、別の言い方をすれば、期間満了ベースの無効化に代わる、又はそれを補足する通知ベースの無効化をサポートするキャッシング・システムを使用して、コンテンツの高速化を提供するように修正される。サーバは、典型的には本明細書の教示に従って修正されたキャッシング・プロキシ・サーバであり、分散CDNプラットフォームの一部とすることができる。
本明細書で説明する技法は、ある実施形態において、様々な種類のトラフィックに対して改良された高速化を提供することが可能であり、(限定はしないが)特にAPIトラフィックに有用である。本開示は、製品化されたAPIの高速化を可能にするように、コンテンツ・プロバイダ顧客がそのユーザにAPIを与え、そのAPIを介して配信された要求/応答がCDNを介して搬送及び高速化されるような、APIトラフィックのキャッシングに対する手法を説明する。具体的な例及び例示を提供するために本明細書ではしばしばAPI使用ケースが用いられるが、本明細書の教示はAPIトラフィックに限定されない。通知ベースの無効化を伴う無期限のキャッシングから恩恵を受けることが可能ないずれのトラフィックも、本明細書の教示から恩恵を受けることが可能である。恩恵は様々であり得るが、本明細書の教示は任意の種類のオブジェクトの配信に関して使用可能である。
一実施形態において、システムは前述のCDNプロキシ・サーバなどのキャッシング・プロキシ・サーバのセットを採用し、これらのキャッシング・プロキシ・サーバは本明細書の教示に従って修正される。こうした修正済みサーバは本明細書では「ホログラム」サーバと呼ばれることがあり、これは、システムとデータベースの信頼できるコピーをこれらの教示では必要としない(が適合性もある)CDNシステム自体の中に配置することとを区別するために、「データベースのホログラムをネットワーク内に投影する」ことから着想を得たニーモニックである。
いくつかの実装において、ホログラム・サーバは、例えば、ネットワーク・エッジに配備されたCDNプロキシ・サーバの最前線に対するキャッシュ親として働くことによって、(例えば、本明細書で説明するキャッシング及び高速化機能を提供しない)他のCDNプロキシ・サーバの補足で使用可能であることに留意されたい。
動作時、顧客のオリジン・インフラストラクチャは、好ましくはある非標準HTTPヘッダ内でAPI応答と共に1つ又は複数のトークン(タグと呼ばれることがある)を発行することができる。これはオリジン・プログラミングに対する調整である。トークンは、CDNプラットフォーム内及び特にホログラム・サーバで、これらのAPI応答のキャッシング及び無効化のプロセスをドライブする。オリジンによって発行されるトークンは、API応答で使用されるいくつかのデータを記録する。API応答に関するTTLは、これらの応答について無期限(又は非常に長い、例えば1年)であるものとみなすことが可能であり、それらをキャッシュできるようにする。後にオリジンはトークンごとに無効化し、潜在的には多数の以前のAPI応答を無効化する。
トークンはキャッシュ・ハンドリング指示として使用可能であり、応答コンテンツがキャッシュ内に存在し、下位のオリジン・データが静穏な場合長期間サービスするために有効を維持し、その後オリジンでの突然の変更に応答して迅速に更新することが可能である。この手法は、現在はキャッシュ不能の動的オブジェクトを高速化するための主要な手法である、ノーストアでもTTLベースでもないキャッシングをサポートすることが可能であり、最終的に一致する(しかし好ましくは迅速に一致する)データ・モデルを与える。手法はデータベースにとらわれず、コンテンツ・プロバイダの顧客がオリジンで好むいずれかのSQL又はNoSQLデータベースを利用できるようにする。
トークンは様々なことを示すことができる。一般的なケースでは、トークンは所与のAPI応答に現れるか又はこれを構築する際に使用された、データの項目に関連付けられる。こうしたトークンは、APIの下位にあるオリジン・データベースにおけるその所与のデータ・トークンの変更がもはや有効でない場合、API応答を(キャッシングの観点から)無効にするためのハンドルとして動作することができる。したがってトークンは、下位のデータベースに対応可能であるか、又はその中に何らかの用意された同等のものを有する。例えばトークンは、オリジン・データベース内のレコードに対して1次キーを表すことが可能であり、そのレコードが変更された場合、トークンを使用してそのレコードに基づいていたそれらのAPI応答を無効にすることができる。
トークンは、データベース内のデータの実際のフィールド又は行に代わる抽象を表すことができる。したがってトークンは、オリジンで所与の応答を作成するために使用された論理を示すことができる。例えばトークンを使用して、API応答がデータ分類、データ選択アルゴリズム、又は他のアルゴリズムの成果であることを示すことができる。こうしたトークンは、例えば(データ自体ではなく)データの分類又は選択が期限切れになった場合に、キャッシュされた応答を無効にするためのハンドルとして使用可能である。テーブル内の最も新しい10項目を表す応答のケースを考えてみる。この応答はこうしたトークンを活用することができる。10個の現在の構成項目に対してトークンを発行することで、より新しい項目が到着した時に適切に無効化が行われることはなく、より新しい項目が到着すると、10個のオリジナル項目トークンのうちの1つではなく、このテーブルに関する分類トークンの無効化を開始することができる。
トークンは、認識される特定の構文スタイルで値の範囲を表現することによって、「範囲」トークンとみなすこともできる。応答には、例えば応答内で戻されるマップ・データに関する緯度/経度範囲などの応答が関係する値の範囲を示す、範囲トークンでタグ付けすることができる。以前に列挙された範囲トークンの範囲内の特定の値を後に無効化することで、それらの範囲トークン及びそれらが接続された応答を無効にすることができる。したがって、(マップ内の特定の座標での当該の新しい地点の追加などの)範囲内の所与の地点を更新して、以前の応答のキャッシュ無効化を開始することができる。
トークンの手段は、好ましくは、特定の応答を記録しているトークンが、応答を構築したがその後の何らかの時点で変更された可能性のあるデータ及び論理に、集合的に結び付けられるように、並びに、オリジン・システムがそれ自体の状態をどのように維持及び監視するか、ハンドルによっていくつかのデータを便宜上どのように言い表すか、及び、1つ又は複数のトークンを介してデータに対するすべての変更をどのように確実に表現するかを考慮して、後にそれらのトークンで無効化するための機能に便宜上合わせるように、選択される。
図4aは、一実施形態の一般的な概要を提供し、APIコンテンツのプロキシ化及びキャッシングによってオリジンに関するAPIトラフィックを高速化するホログラム・サーバを示す。図4aには2つの代替が示されている。実線は、ホログラム・サーバがクライアント要求に答え、オリジンまで直接前進するフローを示す。破線は、ホログラム・サーバがクライアント要求を受け取り、オリジンの近くの別のホログラム・サーバへと前進し、その後オリジンへと前進する別のフローを示す。結果として生じる(付加トークンを備える)応答は、オリジンから親ホログラム、子ホログラム・サーバへと下方に渡される。ホログラムはトークンと共に応答をキャッシュし、後続のクライアント要求について、トークンが依然として有効な場合、ホログラム・サーバはローカル・キャッシュから応答をサービスすることができる。典型的には、キャッシュされた応答は、その関連付けられたトークンのいずれかが無効化されている場合、後続のクライアントにサービスするのには無効であると見なすことができる。
図4bは、ホログラム・サーバが(ホログラム機能を有していない)他のCDNプロキシ・サーバをサポートして配備され、キャッシュ階層機能をそれらの他のCDNプロキシ・サーバに提供する、別の実施形態を示す。図4bにおいて、非ホログラムCDNプロキシ・サーバはクライアント要求に答え、オリジンに直接戻すのではなく、応答を求めるためにホログラム・サーバへの転送要求を出す。ホログラム・サーバは、(キャッシュされた応答が有効な場合)それらのキャッシュから応答するか、要求を別のホログラム・サーバへと転送するか、要求を(最終的にオリジンに転送するために)CDNプロキシに転送するか、又は要求をオリジンに直接転送する。
図5は単なる例として、API応答、オリジン・データベース内のレコードを表すトークンの間の関係の例を示す。図5では、キー1に関連付けられたレコードが更新されたため、データ・トークン1が無効化されている例が示されている。この場合、システム内でのデータ・トークン1の無効化は、API応答A及びAPI応答Bが両方ともデータ・トークン1に依存しているため、それらの両方がキャッシュ内で無効化されることを意味する。
好ましい実装において、システムはCDNに組み込まれ、データベースをホストし、APIからのデータの権威あるソースとして働くオリジン・インフラストラクチャから分離される。しかしながら本明細書の教示は、CDNサービスの外部での実装にも適用される。
アプリケーション・プログラマ・インターフェース(API)
API、すなわちアプリケーション・プログラマ・インターフェースは、典型的にはしばしばそれら自体の組織の外部で、1チームのプログラマによって別のチームに対して作られたサービス、データベース、又はシステムを取り囲むラッパーである。いくつかのAPIは公共消費のために作られ、いくつかのAPIは組織機能として会社の様々なチームによる内部使用のために作られる。APIは一般に、不必要な細部のカプセル化を促し、ビジネス論理及び最良実施を強制する。APIはしばしば、理解するのはAPIのみで他には一切必要ないため、API無しよりもかなり簡略的な、システム又はエコシステムに大きく寄与させるための「焦点化エージェント」として働く。
一般的な技術シーンでは、APIはしばしば、どのように挙動するかに関する定義及び通常は戻すことになるデータを備えている、呼び出しのドキュメント化されたセットとしてしばしば了解される。ウェブとの関連において、APIはしばしば、ウェブ・サーバ・システムの内部及びシステムに接続された状態で動作し、情報をウェブ・クライアントに戻すか、又はアクションを起こして結果をウェブ・クライアントに報告することになる、あるドメイン又はURL経路で理解されたHTTP要求のパターンを備える。
ウェブ・クライアントは、ウェブ・ブラウジングのケースのように、情報が戻されたときに単に直接表示又はレンダリングすることはそれほど多くはなく、むしろ何らかの論理を使用し、データに対してプログラマティックに動作することになる。しばしばその論理はJavaScriptで、或いはクライアント・アプリケーションに生来的に、例えばiOS又はAndroidオペレーティング・システム用に作成されたようなモバイル・アプリケーションで符号化されている。このようにしてトランザクションは達成可能であるが、アプリケーション内の「ページ」上に単に情報をレイアウトすることも一般的な用法であると言うべきであり、但しこれは、技術的にはウェブ・ブラウザ・ソフトウェアの考察との関連において理解されるようなHTMLページではない可能性がある。
データはしばしば、GET及びPOST又は他のHTTP呼び出しを使用してウェブAPI内に渡され、XML又はJavaScriptオブジェクト表記(JSON)、他のオープン・フォーマット、或いは独自仕様のフォーマットを使用して、ウェブAPIから戻される。フォーマットは一般に、コンピュータにとって解析しやすいように設計される。
例示のAPI呼び出し
多くのAPIワークは、SQLデータベース照会からXML又はJSONをもたらすREST呼び出しのラッパーである。時には照会はきわめて複雑であるか、又は一連の照会が単一の応答のために実行される。時にはアプリケーション層キャッシングは性能に関わる。
例えば、以下のような、ドメインapi.flight-example.comに対する航空会社のフライト・ステータス検索について考えてみる。
GET/xml/flight?id=12345 HTTP/1.1
...
このAPI要求は、応答で以下のXMLペイロードをもたらすものと想定する。
<flightInfo>
<flightId>12345</flightId>
<carrier>
<iata>AA</iata>
<name>Airy Airlines</name>
<country>US</country>
</carrier>
<number>AA100</number>
<airports>
<departure>
<iata>JFK</iata>
<name>John F. Kennedy International Airport</name>
<street1>JFK Airport</street1>
<street2/>
<cityName>New York</cityName>
<city>NYC</city>
<state>NY</state>
<postcode>11430</postcode>
<country>US</country>
<countryName>United States</countryName>
<regionName>North America</regionName>
<timezoneName>America/New_York</timezoneName>
<weatherzone>NYZ076</weatherzone>
<latitude>40.642335</latitude>
<longitude>-73.78817</longitude>
<elevationFeet>13</elevationFeet>
</departure>
<arrival>
<iata>LHR</iata>
<name>Heathrow Airport</name>
<cityName>London</cityName>
<city>LON</city>
<state>EN</state>
<country>GB</country>
<countryName>United Kingdom</countryName>
<regionName>Europe</regionName>
<timezoneName>Europe/London</timezoneName>
<latitude>51.469603</latitude>
<longitude>-0.453566</longitude>
<elevationFeet>80</elevationFeet>
</arrival>
</airports>
<status>late</status>
<times>
<departure>
<scheduled>
<local>2013-01-01T18:10:00.000</local>
<utc>2013-01-01T22:10:00.000Z</utc>
</scheduled>
<actual>
<local>2013-01-01T18:05:00.000</local>
<utc>2013-01-01T22:05:00.000Z</utc>
</actual>
</departure>
<arrival>
<scheduled>
<local>2013-01-02T06:20:00.000</local>
<utc>2013-01-02T05:20:00.000Z</utc>
</scheduled>
<actual>
<local>2013-01-02T06:09:00.000</local>
<utc>2013-01-02T05:09:00.000Z</utc>
</actual>
</arrival>
<takeoff>
<scheduled>
<local>2013-01-01T18:49:00.000</local>
<utc>2013-01-01T22:49:00.000Z</utc>
</scheduled>
<actual>
<local>2012-08-07T18:23:00.000</local>
<utc>2012-08-07T22:23:00.000Z</utc>
</actual>
</takeoff>
</times>
<codeshares>
<codeshare>
<carrier>
<iata>GF</iata>
<name>Great Air</name>
</carrier>
<flightNumber>6654</flightNumber>
</codeshare>
</codeshares>
<airportinfo>
<departureTerminal>8</departureTerminal>
<departureGate>B3</departureGate>
<arrivalTerminal>3</arrivalTerminal>
<arrivalGate>36</arrivalGate>
</airportinfo>
<equipment>
<iata>777</iata>
<name>Boeing 777 Passenger</name>
<enginetype>jet</enginetype>
<equipmentNumber>N783AN</equipmentNumber>
</equipment>
</flightInfo>
本応答は、空港及び飛行機器を含み、さらに予定及び実際のイベントに関するタイムスタンプも含む、フライトに関する情報を担持する。本要求内の情報はフライトを待っている間に変更される可能性は全くなく、その後数時間にわたってAPIの任意の消費者にとってかなりリアルタイム・センシティブである変更が相次いで生じることになり、その後フライトが終了すると、データは再度永続的に静的な期間に落ち着くことになるであろう。フライトにつながる何らかの大きなデータの変更の場合、航空機、出発時間、又はターミナルといった種類のものである可能性があり、いずれの場合もこれらはできる限り即時に応答に反映されるべき変更である。
すべてのトラフィックがオリジンで終端する動的ノー・ストアCDN配信ソリューション全体にわたってこのタイプのAPI応答にサービスすることで、自己ホスティングよりも信頼性を高めることができる。CDN内に短期間の時間ベース(TTL)キャッシングを追加することで、オリジン・トラフィックをより許容可能にすることができるが、消費者に対するグローバルな待ち時間はTTLが高い場合にのみ抑えられ、あるレベルでデータの新鮮さを打ち消す。高いTTLの設定及び大規模CDNのパージ機能への訴求は、結果として、これ及び同様の使用ケースに対する満足な更新にとっては長すぎるパージ時間枠を生じさせることになる。ここではキャッシング及びパージング機能を見据える新しい方法が有用であり得、本明細書の教示によって対処される。
例示のAPI応答へのホログラム・データ・トークンの付加
ホログラム・システムは、上記のAPI例示応答のそれと同様のAPI出力を高速化することができる。
一実施形態において、オリジンAPI応答はホログラムに適合するように増補することができる。通常のヘッダとしてペイロードの前に、又はトレーラとしてペイロードの後に列挙可能な、「Xホログラム・データ」という名前のHTTPヘッダを追加することができる。トレーラの使用は、トレーラ内のメタデータがオリジンでのペイロード構築の副産物として生じることから有利であり得る。以下の例では、このヘッダの値はコンマ及び各コンマに続くオプションの空白によって分けられたトークンを担持し、トークンは(応答を構築するために使用される論理又は範囲ではなく)データを示す。
...
Trailer:X-Hologram-Data
...
X-Hologram-Data:flightId:12345,airport:JFK,airport:LHR,carrier:AA,flightnumber:AA100,carrier:GF,flightnum:GF6654,equipmentnumber:N783AN,equipment:777
追加されたヘッダ又はトレーラのサイズは恐らく2〜300バイトであり、典型的にはAPI応答全体のサイズにごくわずかを追加することになるため、ホログラム・キャッシングを実行可能にする。この例では、メタデータはコンマで分けられたトークンのリストである。前述のように、様々なタイプのトークン(データ・トークン、選択/分類トークンなど)があり得て、様々なフォーマットもあり得る。このケースでは、データ照会はフライトIDの直接検索であったため、オリジン・データを示すトークンのみが必要であり、すべてのトークンは本質的にテーブル/1次キーの組み合わせである。
(この例では、オリジンでのテーブル名及び構造がわかっているものと想定する。これは必ずしもAPI応答のXML内に反映されない。実際には、トークンはAPIと同じ開発者によって作成されたコードによって発行可能であるため、下位のデータ方式を理解している。)
トークンは、オリジンの下位データベース内の任意のデータ・セットに関するように構築可能である。この例では、APIをサポートしているデータベースは1次キーとしてフライトIDを含むフライト・テーブルを有するものと想定する。したがって、トークンをテーブル/1次キーに基づかせ、テーブル/1次キーをデータベース内に表すことが便利であるため、「table:key」の形が妥当なデフォルト・テンプレートである。
システムはフレキシブルであるが、システムは一般にトークンがオリジン・データベースにどのように関するかにとらわれない。名前が変化するか又は一定のままであるデータのバンドルをまとめて参照するための方法である限り、実際のテーブル名を使用する必要はない。完全な正規化は不要であり、データが変更された場合、このライン上に表されたトークンのうちの1つがオリジンによる影響を受けるものとみなされる限り、あらゆるテーブル関係が表される必要はない。要するに、トークンは実際の1次キーである必要はないが、好ましくはオリジンが迅速に参照し、データベース内の実際の1次キーに関係することが可能な、固有にインデックス付けされたキー又はハッシュを表す。実際には、テーブル−コロン−値構造も不要であり、正規表現「[A-Za-z0-9/:;_-」+」に一致する任意のトークンが受け入れ可能である。構文拡張を行えば、追加の特徴表現も許容できる。
このフレキシビリティは、任意の種類のデータをシステム用にトークン化できることを意味する。上記の例はSQLデータベース・コンテキストに焦点を当てているが、非SQL、memcache、又はファイル・システム要素までもトークンに変換することができる。(例えば、オリジンは記憶されたファイルの名前を表すトークンを有するように決定することができる。)
例に戻ると、API応答は2つの空港、出発及び到着空港を参照している。トークンでは空港の関係は重要でないため、どちらが出発でどちらが到着かは記録されておらず、システムはXMLの解析を試行する必要がないため、XMLへのいずれの後方参照もまったく必要ではなく、実際にこのデータ・ペイロードはJSON又は別のフォーマットとして符号化されている場合があることに留意されたい。
代替実施形態では、システムは、ヘッダ内のデータ・トークンを生成及び付加するためにオリジンに依拠するのではなく、API応答ペイロード自体からトークンを決定することが可能である。これは、そのコンテンツ・プロバイダのAPIトラフィックに対してCDN内のドメイン固有の構成の支援を伴うか又は伴わずに起こる可能性がある。CDN内のドメイン固有の構成は、様々なペイロードを制御ヘッダ又は適切なトークンを備える等価の表現に変換するための変換命令を含む。例えば構成は、応答に埋め込まれるトークン情報を指定するある所定のパターン又はマークアップについて、ホログラム・サーバによってスキャンされることになるオリジン応答ペイロードを要求する場合がある。トークン情報は、典型的には応答から取り除かれ、ホログラム・システム内での通信のためにヘッダ又は他の等価のフィールドに変換されることになる。
別の例として、XSLTファイルはXML放出API内の各URLパターンに関連付けることが可能であり、応答がホログラム・サーバ(例えばオリジンに最も近いホログラム・サーバ)を介してトラバースする場合、第1の場所の応答と共に伝送された可能性のある必要なヘッダと同じであるために生じるドキュメント、又は容易に解析可能なXMLフラグメントを生成するために、XSLTは規格を遵守するようにXMLに適用されることになる。同様にJSON応答の場合、JSONからの値が高くなるように進むデータ構造経路を表現するドキュメントを、XLSTの代わりに保存することができる。
変換後、変換されたドキュメントは通常はペイロードに付随する制御データ(トークン)を提供するが、変換は必ずしもペイロードを置換することを意図していない。制御データは、通常、サーバ間で変更する必要はないため、サーバがオリジンからの制御ヘッダを正常に保持し、その後変換を実行した場合、サーバは応答をダウンストリーム要求ホログラム・サーバに戻す前に変換から導出された制御ヘッダを他のHTTPヘッダに付加することができる。したがって図4a(破線)との関連において、親ホログラム・サーバは、装飾された応答を子ホログラム・サーバに伝送する前に、制御データを付加することができる。
更にAPI応答におけるXMLを見ていくと、タイムスタンプはフライト出発時間などのイベントに使用可能なことがわかる。これらはすべて、トークン「flightId:12345」の下のトークン・リスト内に表されるアトミック・データとみなされる。したがって、タイムスタンプが変更されるか又は新しいタイムスタンプが追加されると、オリジン・プログラミングは、トークン「flightId:12345」を有するすべての応答に影響し、(恐らくは)無効化されることが必要であることがわかるように構成される。
キャリア・コードは、各々関係するキャリア、及び関係するキャリアのフライト番号に対するトークンを列挙し、トークン・リスト内に表されている。このタイプのフライト番号は消費者フライト番号であるため、オリジンでの開発者はこれを別のテーブルに記憶させるように、及び「flightnum」テーブル指示子をトークンとして使用するように設計することができる。
最終的に、「equipmentNumber:N783AN」及び「equipment:777」トークンは、航空機自体及び飛行機(機器)のタイプについてのレコードを表す。
付加されたトークンに基づくキャッシング及びトークンの無効化
上記では、API応答ペイロードを伴うオリジンからのトークンの発行と、ペイロード内にコンテンツを生じさせたオリジン・データベース内のデータ構造をトークンがどのように表すことができるかを説明した。
API応答の場合、何らかの時間が表現されるTTLベースのキャッシングとは異なり、キャッシュ時間は無限か又は非常に長期にわたる可能性がある。ホログラム適合応答は、いずれの構成トークンも無効化されていない限り有効である。言い換えれば、一実装において、CDN内のHTTPプロキシ・キャッシュは、オリジンによって肯定的に無効化されるまでAPI応答を無期限にキャッシュすることができる。
上記のフライト・レコード例において、列挙された13のトークンのうちの1つについて無効化が受信されるまで、応答XMLドキュメントはエンド・ユーザ・クライアント要求に応答してサービスするために有効であるものとみなされる。かなり長い可能性があるこの期間中、ドキュメントはネットワーク内のホログラム・サーバによってキャッシュし、キャッシュから繰り返しサービスすることができる。
代替実施形態において、ホログラム・システムは、安全対策としてオリジンを用いたトークンの定期的な再有効化を要求することが可能であり、それらの対応するデータ・トークンが安全対策として又はデータ記憶保全手段として依然として有効であるにも関わらず、API応答を満了させるためにグローバルTTLをオーバーレイすることも可能である。これらはどちらも本明細書の教示に適合可能である。
実施形態において、オリジンから放出された標準のキャッシュ関係HTTPヘッダがホログラム制御ヘッダと共に表現され、したがってかなり長い期間が適切であることを考慮できるものと考えると、ホログラム・サーバはこうしたヘッダに従うことが可能である。すべての正常なHTTPヘッダに従うことは、本明細書の教示に適合する。
トークンを無効化するための多くの可能な技法が存在する。単なる例として、トークンは(i)トークンに対する無効化アサーションを所与のAPI応答に含めること、又は(ii)オリジンによるトークン無効化APIのアクティブな呼び出し(オリジンがウェブ要求のサービスとの関連外でデータを変更する場合)によって、無効化することができる。こうした「トークン無効化API」は、高速化されているAPIと混同されることはない。
無効化機構(i)に戻ると、サーバのホログラム・ネットワークは、好ましくは任意のAPI応答の線上にある無効化を取り扱うことができる。ほとんどのケースで、API応答は、そのイベントがデータベース内のレコードを変更させ、無効化を引き起こさせる限りにおいて、実際にはAPIデータベースを更新するためのクライアント要求(すなわち「書き込み」メッセージ)に対する応答となる。しかしながらアーキテクチャは、データベースに書き込んでいないクライアント要求への応答に整合して無効化をサポートすることもできる。
説明すると、上記からのフライト・ステータスAPIがデータへの更新も可能にすること、及び、フライトに関してGreat Airコードシェアのフライト番号を更新することになるHTTP呼び出しを認証されたユーザがそのAPIに発行したことを、例示として挙げたい。オリジンからのAPI応答、例えばHTTP200「OK」応答に、ホログラム無効化を含めることができる。
X-Hologram-Data:!flightnumber:AA100,!flightId:12345
この表記は、オリジナルのフライト番号及び問題のフライトに依拠する任意のドキュメントを、フライトIDによって無効にする。無効化は、無効化を示すための感嘆符が追加されたトークンを列挙することによってアサートされる。ホログラム・ノードは、ホログラム・ネットワークの残余部を介して無効化の伝搬を開始することに対して、又は好ましくは、以下でより詳細に説明する、所与のAPIドメインについての無効化チャネルを公開するネットワーク内の発行者ノードに無効化を送信することに対して、責務を負うことができる。
無効化機構(ii)に戻ると、トークン無効化API機構は、何らかの地点で1つの情報が変更されるものと想定するように動作可能である。航空機が着陸する前にXMLが取り出され、その後航空機が着陸し、結果として「arrivalDate」、「status」、及び「actualArrival」というノードがXML内で更新されるものと想定してみる。オリジンは、トークンを無効化するために、CDNネットワークへの専用及びセキュアなトークン無効化API呼び出しを利用することができる。HTTP及び何らかの形のAPIキー認可を、ここでの例にオーバーレイさせることができる。「/hologram」経路は、CDNネットワークによってサービスされるホログラム実行可能ドメインによって理解される疑似経路であろう。
POST/hologram/invalidate HTTP/1.1
...
tokens=flightID:12345
多くのケースでは、単一トークンの無効化は、ネットワーク規模の多数のAPI応答ドキュメントを潜在的に表すことが可能な、そのトークンでマーク付けされたすべての応答を無効化するように機能することができる。無効化メッセージは、ホログラムをサポートする機械全体にわたって伝搬されなければならない。この単一の無効化は、上記のXML応答を無効化するのに十分であり得るため、結果として同じコンテンツについての後続のクライアント要求は、解決するためにオリジンへと転送される必要がある。この無効化は、フライト12345に関する情報、すなわち、その様々な付加トークンの中の「flightId:12345」のトークンで以前にサービスされた任意のドキュメントに依存する、任意の他の応答も同時に無効化する。
代替の無効化例として、ロンドン・ヒースロー空港がその名前をロイヤル空港に変更したと想像してみる。無効化API呼び出しは以下のようになる。
POST/hologram/invalidate HTTP/1.1
...
tokens=airport:LHR
いったん伝搬されると、この特定のAPI上のヒースローに関する情報を含む任意の応答はCDNネットワーク内で無効となり、更にオリジンからの今後の応答は異なる空港名を反映することになり、クライアント要求が満たされた場合、新規の正しいデータをキャッシュ内のCDNネットワークに追加することができる。
好ましくは、オリジンはトークン無効化APIエントリポイントへの永続HTTP又はSPDY接続をオープンに保持することが可能であるため、予測される一連の無効化をこの接続上で多重化することができる。
代替の実施形態において、WebSocketサービスを使用可能にすることが可能であり、その結果、オリジンがCDNサーバ(例えばホログラム・サーバのうちの1つ又はその他)に対してWebSocketをオープンし、以下で説明するように、WebSocketを使用して、増分によって無効化を暗黙的に知らせる更新済みの一連の番号を備えるトークンを担持する無効化又はメッセージを伝送することになる。
更に別の例において、オリジンによってフック・ポーリング呼び出しを要求することが可能であり、これは、オリジンが要求するためにAPIを呼び出すか、又は、ドメイン固有のCDN構成が、正常なデータ担持応答内に提供する代替として、その後応答内でオリジンによって提示されることになる、任意又はすべての更新済みのトークン情報を要求する、CDNサーバからオリジンへの正規のポーリングされたHTTP要求を規定することを意味する。
シリアル番号トークン
代替の実施形態において、トークンはシリアル番号構文を有することができる。例えば各トークンは、シリアル番号(flightID:12345.1)を伴う名前又は呼称(moniker、例えばflightID:12345)によって識別可能である。より堅固には、シリアル番号フォーマットは、@記号とそれに続くサーバ番号、コロン、シリアル番号、コロン、及び秒単位のエポック・タイムスタンプ番号として表現されるタイムスタンプとして表現することができる。例えば割り当てられたサーバ番号2000、101まで増分されたシリアル番号、及びタイムスタンプ1380679283(2013年10月1日7:01:23PDTに対応する)で、以下のようになる。
flightID:12345@2000:101:1380679010
シリアル番号構文ではなく呼称を伴うトークンの識別子は以下では「短形式」と呼び、シリアル番号構文の使用は「長形式」と呼ぶ。こうしたトークンの形式は具体的な実装を例示するための単なる例であり、限定的であることは意味しない。
シリアル番号はトークンのバージョン又は反復回数と考えることが可能であり、オリジンで対応するデータが更新されるごとにカウントが増分される。この手法は、オリジンを明白な無効化コマンド送信の必要性から解放し、代わりに現行の反復を報告するだけで良いものとすることが可能であり、ホログラム・ノードにはすべての以前のトークン反復を無効として取り扱うことがわかっているため、暗黙の無効化コマンドとして機能することができる。したがって各API応答で、オリジンは関連するデータ・トークンの最新の反復を付加することができる。この無効化機構は、前述のトークン無効化APIにも適合可能である。
当業者であれば理解されるように、システムは様々なアルゴリズム及びトークン構文を使用して、所与のホログラム・サーバが応答と共にキャッシュされたトークンとその後受信したトークンとを比較すること、及びキャッシュされたトークンが有効であるかどうかについて決定することを可能にする。この手法は、例えばタイムスタンプの順序付け、ベクトル・クロック手法、又はLamportタイムスタンプに依存可能である。
例示のホログラム・ネットワーク
以下で、ホログラム・サーバのネットワークの非限定的な実施形態を説明する。最初に、ホログラム・ネットワークの通信についての序説の概要を提示する。
この実施形態において、ホログラム・ネットワーク内の様々なサーバは、HTTPクライアント要求に返答すること、要求をオリジンにより近いノードに転送すること、オリジンに転送すること、及び戻された応答が再度サービスされるようにキャッシングすることが可能な、HTTPプロキシ・ネットワークとして機能する。
加えてホログラム・サーバは、クライアントと通信するため並びにクライアントに対する応答を要求及び取り出すために使用されるHTTPチャネルから離れたメッセージング・システムを介して、互いに通信することができる。(ホログラム・メッセージング・システムは、所望であればHTTPを活用することも可能であるが、本明細書では説明のために、HTTPトラフィックはクライアントのコンテンツ要求及びそれに対する応答、並びにプロキシ動作の結果として生じる転送要求及び転送応答を指すものと想定する。)
メッセージは、それらのうちの1つがレジストラとして動作し、ネットワーク上のいずれのサーバが任意の所与の時点で任意の所与のドメイン名に関する発行者ステータスを保持するかを追跡及び割り当てる、ホログラム・サーバによって交換される。メッセージは、各それぞれの発行者から、レジストラによって追跡された場合、公開サーバが発行者であるドメインに関するHTTPクライアント要求を受信することによって加入したすべてのサーバまでの、発行者・加入者モデル上でも公開される。加入はトークン無効化を加入サーバに送るため、この手法で加入しているということは、所与のドメインに関して権威あるものとしてローカル・キャッシュを取り扱うために必要なステータスである。非発行者がHTTP要求と共にオリジンへと前進(及びトークン無効化と共にオリジン応答を受信)するか、又はトークン無効化API上でオリジンからの要求を受信する場合、メッセージは非発行者から所与のドメインの発行者へも渡され、そのいずれの場合も、公開されるべきであるトークン・メッセージを有するものとすることができる。
様々な接続のすべてが接続自体のトラフィックに基づく論理タイムアウト条件を有することが可能であり、更に加入は、ドメインごとにそのドメインに対するHTTPトラフィックがなくなると未加入となり得、発行者ステータスは、発行者で所与のドメインに対するHTTPトラフィックがなくなるとクリア可能である。すべてのメッセージ接続は直接として説明されるが、スケーラビリティのために、1つ又は複数のブローカ・ノード又は親を介して間接的に行うことも可能である。レジストラは、標準的なアクションに加えてレジストラとして動作するその他の通常のホログラム・サーバとすることが可能であるが、特化されたレジストラ専用サーバ又はサーバ・セット、或いは分散データベース・サービス又はDNSサービスなどの他の手段によって提供される抽象サービスであってもよい。
図6は、例示のホログラム・サーバ・プラットフォームの様々な役割及び機能性を示す図である。図6に示された実施形態では、クライアントとホログラム・サーバとの間で、非ホログラムCDNプロキシ・サーバ(図4b)の追加の層は使用されない。その実施形態については後で説明する。
図6を参照すると、様々なホログラム・サーバ602がプラットフォーム内に分散されている。ラベル付けされたライン・セグメントは機械間の接続を表しており、実線はHTTP要求及び応答メッセージを示し、破線及び点線はトークン関連及び他のメッセージを渡すためのホログラム・サーバ間の接続を示す。点線はレジストラ用のメッセージを示し、破線は発行者・加入者又はピア関係にあるホログラム・サーバ間のメッセージを示す。いくつかのケースでは、ライン・セグメントを重複して描画することなく、同じノード間の複数のライン・セグメントを示すための省略形として複数の数字ラベルが使用される。
クライアント・デバイス610を備えるユーザは、矢印1によって示されるように、HTTPを使用してホログラム・サーバ602aへのAPI要求を行うものと想定する。
サーバ602aは、インスタントHTTP要求についてホスト・ドメインを決定し、当該ドメインについてホログラム加入ステータスがローカルに設定されているかどうかを決定する。ステータスは未加入である(unscribed)ものと想定する。未加入である(及び発行者でもない)ことの結果として、サーバ602aは、以前の応答についてそのローカル・キャッシュを調べることから除外される。サーバ602aは、オリジン601に最も近いホログラム・サーバをサーバ602bとして決定し、したがってHTTP要求をサーバ602bに転送するように準備する(サーバ602aの構成によっては、代わりに、最終的にサーバ602bに転送する前に1つ又は複数のキャッシュ親サーバに転送させることができる。)サーバ602aは、矢印2によって示されるようにHTTP要求をサーバ602bに転送する。
サーバ602aは、ネットワーク上のレジストラとして現在サービスしているサーバ602cに、メッセージを送信することによって、ドメイン、自身の身元、及びHTTP要求が別のホログラム・サーバに転送されていることを表示するフラグを示す。このメッセージは矢印3によって示される。レジストラとして動作しているサーバ602cは、当該所与のドメインに対して発行者が設定されていないこと、及び要求サーバは内部で転送していることを判定し、矢印3でのリターンによって示される未知の応答を戻す。
サーバ602bはサーバ602aによって転送されたHTTP要求を受信し、同じドメイン・チェックを実行する。サーバ602bも未加入であるものと想定する。サーバ602bは、矢印4によって示されるようにHTTP要求をオリジン601に転送する。
サーバ602bも矢印5によって示されるように、レジストラであるサーバ602cにメッセージを送信し、サーバ602bはオリジンに最も近いホログラム・サーバであるため(又は、何らかの他の基準又はそれらの組み合わせに基づいて)、サーバ602cは、当該ドメインに対して発行者の役割を実行するべくサーバ602bを割り当て、矢印5でのリターンによって示される回答メッセージで自身の識別子を戻す。サーバ602bは、回答を受信すると自身を当該所与のドメインに対する発行者として設定する。
矢印5でのリターンによって示されるレジストラ・サーバ602cからの回答は、矢印4でのリターンによって示されるオリジン601から受信するHTTP応答の完了以前に、サーバ602bに到達するものと想定する。オリジン601からHTTP応答が受信された場合、応答に付加されたトークンが解析され、応答はインデックス付けされたトークンと共にサーバ602bでローカルにキャッシュされる。この実装で各トークンは、オリジンから長形式で受信されない場合、短形式から長形式にアップグレードされ、サーバ602bはシリアル番号を各トークン及び自身のサーバ番号に割り当てる。長形式トークンはローカルにキャッシュされる形式であり、トークンを担持しているオリジナル・ヘッダを置換することによってHTTPを介して戻される。
サーバ602bは、矢印2でのリターンによって示されるように、サーバ602aからのHTTP要求に回答する。未加入ステータスを有するサーバ602aは、応答をローカルにキャッシュせず、トークン関連ヘッダをストリップし、矢印1でのリターンによって示されるように応答をクライアント・デバイス610に戻す。(サーバ602aが加入ステータスを有するならば、以下でより詳細に述べるように、同じコンテンツに対する後続のクライアント要求への応答で使用するために、応答をローカルにキャッシュすることができる。)
次に、クライアント・デバイス611を備えるユーザは、矢印6によって示されるようにホログラム・サーバ602aへのAPI要求を行い、要求はクライアント・デバイス610によって以前に要求されたものと同じコンテンツに対するものであると想定する。このドメイン上では、キャッシュ・キーはユーザ識別子から導出されないものと想定する。
サーバ602aは以前と同じチェックを実行し、第1のHTTPクライアント要求に関してサーバ602cのレジストラにメッセージを送信する。このメッセージは矢印7によって示される。サーバ602cは、矢印7でのリターンによって示されるように、発行者としてのサーバ602bの識別子で応答する。サーバ602aは、ライン・セグメント9によって示されるように、サーバ602bへの加入接続をオープンするが、オープンしているならば、接続を再使用する。サーバ602aは、以前と同じ計算を実行して、オリジンに最も近いサーバを決定し、矢印8によって示されるようにHTTP要求をサーバ602bに転送する。
サーバ602bは、発行者であるそのローカル・キャッシュを調べ、HTTP要求に関する応答コンテンツを見つける。更にサーバ602bは、応答がキャッシュされた後にオリジナル要求に付加された各トークンが(例えばシリアル番号増分によって)明示的又は暗黙的に無効化されていないことを検証し、矢印8でのリターンによって示されるように、キャッシュされたコンテンツをサーバ602aに戻す。
ライン・セグメント9上に示された加入(サブスクリプション)は、矢印8でのリターンによって示されたサーバ602bから受信されるHTTP応答の完了以前に手配されているものと想定する。サーバ602bからのHTTP応答がサーバ602aによって受信された場合、応答に付加されたトークンが解析され、応答はインデックス付けされたトークンと共にサーバ602aでローカルにキャッシュされる。トークンはサーバ602bがサーバ起源として識別される長形式であるため、アップグレードは不要であり、後にサーバ602bによって発行される増分されたシリアル番号と比較可能である。
上記と同じコンテンツについてのサーバ602aへの更なる要求が行われた場合には、(キャッシュ制御ヘッダなどのように)常用(customary)HTTPキャッシュ制御が満たされるか又はなかったという条件、並びに、本来は応答と共に与えられたトークンのいずれも、そのドメインについての加入チャネルを介した発行者(サーバ602b)からのメッセージによって無効になっていないという条件で、サーバ602aのローカル・キャッシュからコンテンツが戻されることになる。
更なる例として、矢印10によって示されるように、クライアント・デバイス612は前述と同じコンテンツについてサーバ602dに対して要求を行うものと想定する。サーバ602dは前述のプロセスと同様に、矢印11によって示されるようにサーバ602cに発行者識別子を要求し、矢印12によって示されるようにサーバ602bにHTTP要求を転送し、ライン・セグメント13によって示されるようにドメイン・メッセージに関してサーバ602bに加入する。
クライアント・デバイス612はその後、矢印14によって示されるようにAPI上で「書き込み」要求を行い、HTTP POSTをサーバ602dに送信するものと想定する。このドメインは、HTTPでは極めて通例であるように、POST応答をキャッシュしないように構成されるものと想定する。サーバ602dは、矢印15によって示されるように要求をサーバ602bに転送し、これが矢印16によって示されるように要求をオリジン601に転送する。
オリジンは、矢印16でのリターンによって示されるようにHTTP応答を戻し、サーバ602bで受信されると、ホログラム・トークンは前述と同様に解析されるが、今回、オリジンのHTTP応答メッセージは先頭に付加された感嘆符構文を使用するトークンに対する無効化を含む。無効化されたトークンは、前述のようにクライアント・デバイス610、611、及び612に戻されたコンテンツに関して以前に述べたトークンのうちの1つであったものと想定する。サーバ602bは、無効化されているトークン上に以前に割り当てられた番号よりも高位のシリアル番号を備える長形式に、トークンをアップグレードする(オリジンから既にその形式でない場合)。サーバ602bは、ドメインに関するトークン・メッセージへのそれらの加入により、サーバ602a及び602dに発行(パブリッシュ)されるトークン・メッセージを作成する。サーバ602a及び602dはトークン・メッセージを受信し、より高位のシリアル番号を示すようにそれらのローカル・トークン・キャッシュを更新して、(例えば以前にキャッシュされた応答の使用を試み、トークン・シリアル番号及び/又はタイムスタンプを比較する場合、サーバ602a及び602dによって発見されるように)より古いバージョンのトークンと共に以前にキャッシュされたHTTP応答を暗黙的に無効化する。
API「書き込み」アクションに対するHTTP応答は、矢印15でのリターンによって示されるようにサーバ602dに戻され、その後矢印14でのリターンによって示されるようにクライアント・デバイス612に送信される。
ここで無効化されたトークンを使用して以前にキャッシュされたコンテンツについてのサーバ602a、602b、又は602dへの更なる要求が行われると、前述のようにオリジン601に戻る全トラバースが生じ、前述と同様にキャッシュされたコンテンツの再ポピュレーションが続くことになる。
クライアント・デバイス612は、矢印17によって示されるように、前述のようなコンテンツについての要求をサーバ602dに対して行うものと想定する。サーバ602dは、場合によっては補助システムがサーバ602b上の負荷が高いことを示したため、又は単に代替実装の結果、オリジンに直接転送すべきであることを計算するものと想定する。サーバ602dは、矢印18によって示されるようにHTTP要求をオリジン601に転送する。応答を受信するとホログラム・トークンが解析され、発行が必要であるが、サーバ602dは発行者ではない。サーバ602dはピアツーピアのトークン・パスのために接続をオープンするか、又はドメインに対する発行者であるサーバ602bへの既存のコネクションを利用して、矢印19によって示されるようにサーバ602bにトークン・メッセージを渡す。そのトークン・キャッシュを更新した後、サーバ602bはすべての加入者にメッセージを渡し、この時点ではサーバ602a及び602dである。サーバ602aは矢印20によって示されるようにトークン・メッセージを受信し、そのローカル・トークン・キャッシュを更新する。サーバ602dは矢印21によって示されるようにトークン・メッセージを受信するが、これはメッセージに対するソースであり、そのようにすでに実行しているため、そのトークン・キャッシュを変更する必要はない。
図7を参照すると、例示のホログラム・ネットワークのスナップショット状態が示されている。これは非限定的な実施形態である。この状態で、すべてのホログラム・サーバ702a、702b、702d、及び702eはレジストラとして動作するサーバ702cに対してオープンな接続を有する。1つのドメインに対するHTTPトラフィックがクライアント・デバイスから受信され、結果としてサーバ702a、702d、及び702eから702bへのオープンなHTTP接続、並びにサーバ702bからオリジン701への接続が生じ、サーバ702dからオリジン701へのHTTP接続もオープンとなる。メッセージの発行を容易にするために、オープンなHTTP接続を有する同じサーバであるサーバ702a、702d、及び702eも、当該ドメインに対する発行者の役割が割り当てられたサーバ702bへのオープンな加入接続を有する。加えてサーバ702dは、HTTP応答のためにオリジンに接触することから生じるトークン・メッセージを渡すために、サーバ702bに対してオープンなピア接続を有する。トークン無効化に関するメッセージは、たとえそれらが発行者として指定されたサーバから発せられておらず、最初に発行者に送信されなければならない場合であっても、一般に、オリジンに近いポイントからすべての加入ノードへと外側に向けて分散され得る。トークン・メッセージは、加入ノードがキャッシュ内に保存した可能性のある以前の応答を無効化することが可能であり、加入している状態とは、無限か又は非常に長いTTLであるにも関わらずキャッシュを権限あるものにし得る状態のことである。
代替の実施形態において、CDNは、図2及び図4bに関連して以前に例示したように、非ホログラムHTTPプロキシ・サーバの補足でホログラム・サーバを採用する。
この代替の実施形態では、ホログラム・サーバは更に、ホログラム適合API応答をフェッチ及びキャッシュするためにオリジンへと前進するため、トークンを記憶してトークンによる高速アクセスのためにそれらにインデックス付けするため、並びにできる限り速くトークン無効化を受信及び伝搬するための責務を負い、上記で図6に関連して説明したようにその他の方法で動作可能である。しかしながらホログラム・サーバは、例えば本明細書の教示の恩恵なしにCDNプラットフォームに投入するような種類の非ホログラムHTTPプロキシの背後に位置する。
非ホログラムHTTPプロキシ・サーバ単独の場合、ノーストア又は再有効化必須トランザクションは、典型的には図8aに示されたフロー・タイプを有する(ここで非ホログラムHTTPプロキシは単に「プロキシ」と示される)。図8a〜eで使用される表記法では、矢印は要求の方向を表し、(応答の形で)コンテンツは左から右へと流れる。
TTLベースのキャッシング・トランザクションは図8bに示されたフロー・タイプを有し、これは要求されたコンテンツの有効で満了していないコピーが見つかった場所に依存している。
TTLベースのキャッシングのケースでは、図8bの第1のインスタンスはクライアントに近いキャッシュされた応答を示し、第2のインスタンスはオリジンに近いキャッシュされた応答を示し、第3のインスタンスはオリジンに近いキャッシュされた応答を示す。
ここで、ホログラム・ノード(「ホロ」と表記)を導入する。プロキシ・サーバは応答を、ノーストア又は再有効化必須として(すなわち動的オブジェクトとして)、又は数秒などの非常に短いTTLであるがキャッシュ可能オブジェクトとして取り扱うように求められることになるが、ホログラム・サーバはキャッシングに関して権威あるものであり得る。ホログラム・ネットワークはキャッシュ階層と同様であると見なすことができる。これによって、図8cに示されたフローの可能性をもたらす。
図8cに示された第1のインスタンスでは、ホログラム・サーバがキャッシュされた文書を有し、そのインスタンスの時点でそれを無効にするいずれのトークン無効化も知らないとの理解の下で、長いネットワーク・トラバースが回避される。第2のインスタンスでは、ホログラム・サーバは有効な文書を有さず、第2の試行のためにオリジンに近いホログラム・サーバに要求を転送し(キャッシュ・チョーク技法)、第3のインスタンスでは、権威ある回答を求めてオリジンに接触するために長距離が必要である。
代替として、ホログラム逆マッピングを用いない場合、フローは図8dに示されたようになる。
前述のように、アクティブ・トークン無効化アサーションはオリジンから発生可能であり、図8eに示されるように無効化を受信する初期のホログラム・サーバから、発行者・加入者又は他の技法を使用して、他のホログラム・サーバへと伝搬される。
ホログラム・ノード内でのメッセージ・フローのサポート
ホログラム・ノード内でのメッセージングのための例示のソケット実装を、以下で説明する。下記は、可能な設計を例示するための単なる非限定的な例であることが意図される。
この実施形態では、ホログラム・ノードは、ホログラムの加入及び無効化をサポートするためのメッセージ・フローを容易にする、ソケット動作のセットを用いて設計される。これらの動作は従来のHTTPプロキシ機能を拡大させることが可能である。
図9は、単一のホログラム・サーバの観点からの例示のソケット・セット設計を示す。各ボックス上に示された名前は、ソケットへの参照を保持する変数を識別するため、及びソケットとの間の通信を示すログ・ラインにラベル付けするために使用される、ホログラム・サーバ内の名前である。各ソケットのタイプ及び機能を以下で説明する。
この例示の設計ではソケットは限定機能に特化されるため、2つのノードを同時に複数のソケットに接続することが可能である。代替の設計では、これらのボックスが他のノードに対する仮想ハンドルを表すものであり、単一のソケットであれば最大でもノード間でオープンであり、同じソケット上で複数のメッセージ・タイプが搬送されるものとみなし、、キュー、その実施、及び他の細部はかなり単純に異なるものであろう。
設計はメッセージに基づき、メッセージの始め及び終わりのフレーミング・フォーマット、メッセージの最大サイズ、並びに、ソース、宛先、ルーティング、及び他のメッセージ受け渡し情報を担持するためのヘッダを暗示する。この機能層を提供するためにメッセージ・キュー・ライブラリが採用可能であるか、又はこれらの規則はカスタム・ベースで設計可能である。以下で説明するメッセージに加えて、普通に通信するすべてのノード間での「心拍」メッセージのサブシステムが実装されるべきであり、不全の心拍は破損した接続としてカウントされるべきであり、これは特に加入者にとって不本意な未加入イベントとみなされるものである。
この設計では「IN」及び「PASS」は単一ソケットではなく、ソケットのアレイであり、ゼロ・メンバから始まって通常の動作で拡縮する。説明を簡潔にするために、これは図9には示されていない。
ホログラム・メッセージング・システムは、HTTPプロキシ・システムと同じオペレーティング・システム・プロセスで実行するようにエンジニアリング可能であるか、又は別々に実行するようにエンジニアリング可能であり、ここではTCPソケット又はオペレーティング・システムに本来備わっているプロセス間通信システムを使用して、HTTPプロキシ・システムからホログラム・メッセージング・システムにメッセージを渡すことができる。このプロセス間リンクには少なくとも2つのタイプのメッセージが適切であり、REP及びAPPに到達するメッセージについては、以下を参照されたい。
以下でメッセージ・タイプを説明する。
「REP」は、複数の接続を受け入れ、サーバ側の要求−回答パラダイムを実行するリスニング・ソケットを表すオブジェクトである。クライアント側の送信要求は、同じサーバ上のローカルHTTPプロキシ・システムである。
インバウンド要求及びその後の回答例:
加入しているかどうかを調べるための、ドメインに関するHTTPプロキシ・ソフトウェアからの照会。
フォーマット:「SUBホストHOP|FINAL」
例えば「SUB example.com HOP」
回答オプション:
フォーマット:「OK PUB|SUBホスト・タイムスタンプ」
例えば「OK PUB example.com 123456789」
フォーマット:「PENDINGホスト」
例えば「PENDING example.com」
ドメインに関する増分されたシリアル番号のためのHTTPプロキシ・ソフトウェアからの照会。
フォーマット:「SERIALホスト」
例えば「SERIAL example.com」
回答:
フォーマット:「SERIALホスト・サーバ_id番号」
例えば「SERIAL example.com 1000 1234」
「APP」は、プッシュ−プル・パラダイムでプルの役割を果たす、複数の接続を受け入れ、メッセージを受け入れるリスニング・ソケットを表すオブジェクトである。プッシュ側の送信要求は、同じサーバ上のローカルHTTPプロキシ・システムである。
インバウンド・メッセージの例:
トークン・イベントが処理されるべきHTTPプロキシ・ソフトウェアからの通知。
フォーマット:「DATAホスト・トークン[@サーバ_id:番号:タイムスタンプ]」
例えば「DATA example.com users:123@1000:1234:123456789」
「REG」は、ホログラム・ネットワーク上の通常ノードからホログラム・ネットワーク上のレジストラ・ノードへと接続し、要求−回答パラダイムで要求を実行する、ソケットを表すオブジェクトである。このソケットの反対側はホログラム・レジストラ上の「RGR」に接続され、メッセージの詳細については「RGR」を参照のこと。ホログラム・レジストラは、データを通常ノードとして処理する場合、「REG」上で「RGR」にメッセージを「送信すること」、及び回答を別のイベントとして処理することによって、レジストラに関連する問題を解決する。
「RGR」は、複数の接続を受け入れ、ホログラム・ノードからのメッセージを受け入れ、それらにレジストラとして回答する、リスニング・ソケットを表すオブジェクトである。好ましくは、すべてのホログラム・ノードはレジストラとして動作するための機能を有する。外部監視システムは、レジストラを変更する必要がある場合、DNSエントリを変更するか又はローカル構成を変更することによってすべてのホログラム・ノードに信号を送信することが可能であり、代替としてホログラム・ノードは、ネットワーク内部のフェイルオーバー・ストラテジに依拠することが可能である。
インバウンド要求及び後続の回答の例:
ホストに対して発行者識別子を要求するため、及び必要であれば発行者となるためにボランティアのデフォルト・アクションを提供するための、ホログラム・ノードからの照会。
フォーマット:「GETホストHOP|FINAL要求者_ip_アドレス」
例えば「GET example.com HOP 1.2.3.4」
回答:
フォーマット:「KNOWNホストip_アドレス」
例えば「KNOWN example.com 1.2.3.4」
フォーマット:「UNKNOWNホスト」
例えば「UNKNOWN example.com」
その発行者ステータスをクリアするためのホログラム・ノードからの命令。
フォーマット:「CLEARホスト要求者_ip_アドレス」
例えば「CLEAR example.com 1.2.3.4」
回答:
フォーマット:「OK CLEARホスト・クリア済み_ip_アドレス」
例えば「OK CLEAR example.com 1.2.3.4」
「OUT」は、所与のノードが発行者であるドメインに関するメッセージに加入している他のホログラム・ノードから複数の接続を受け入れる、リスニング・ソケットを表すオブジェクトである。ホログラム・ノードは、接続された加入者にメッセージが分散されることを保証する「OUT」オブジェクトを介して加入したノードに、トークン・メッセージを発行することになり、同じノードから発行されるすべてのドメインが同じソケットを介して発行できるようにするために、加入者が示すドメインへのメッセージを制限するようにオプションでフィルタリングする。
「OUT」オブジェクト内のソケットを介して送信されるメッセージは、様々な他のノードの「IN」オブジェクト内のソケットに到達する。
「IN」は、加入者の役割又は発行者・加入者パラダイムでメッセージを受信するためにホログラム・発行者「OUT」ソケットに接続するソケットを表す、ゼロ又はそれ以上のオブジェクトのアレイである。「IN」ソケットは、ホストごとのメッセージに加入する必要性が生じるとアレイに追加され、典型的には「REP」ソケット上での活動及びそれに続く「REG」ソケット上での活動によって決定される。
ネットワークのスケーラビリティを強化するために、ホログラム「IN」ノードはブローカ・ノードへの直接接続を行うことが可能であり、これによって最終宛先に接続されるため、あらゆるノードがあらゆる他のノードに接続される場合よりも、完全接続ネットワーク上での接続の総数が少なくなる。ブローカ・ノードの編成は、構成の全体又は一部に基づく動的選定又は他の自己編成ストラテジによってハード・コード化又はノミネートが可能である。更にブローカは、直接接続を更に分離するために、配置構成内の他のブローカと通信することができる。
何らかの所定の期間に加入者による(「REP」ソケットを介した)特定のホストに対するHTTPプロキシ活動が見られない場合、ノードはホストごとにそれらのメッセージに未加入とすることができる。
インバウンド・メッセージの例:
トークン・イベントが処理されるべきホログラム発行者からの通知。
フォーマット:「DATAホスト・トークン[@サーバ_id:番号:タイムスタンプ]」
例えば「DATA example.comusers:123@1000:1234:123456789」
発行がホストに対して切断されることになるホログラム発行者からの通知。
フォーマット:「DATAホスト:END発行者_ip_アドレス」
例えば「DATA example.com:END 1.2.3.4」
「PASS」は、プッシュ−プル・パラダイムのプッシュの役割でメッセージを渡すための、発行者である他のホログラム・ノードに接続するためにオープンされたゼロ又はそれ以上のソケットのアレイである。「PASS」を介して渡されるメッセージは、オフ発行者から生じるが、権威あるものとされ伝搬されなければならないトークン・メッセージである。このソケットの反対側は各ホログラム発行者上の「FUN」に接続され、メッセージの詳細については「FUN」を参照のこと。
ノードが発行者に対して「PASS」ソケットをオープンしたが、連続して1800秒間(30分)任意のホストに対してピアを介して渡すメッセージを有さない場合、その発行者への「PASS」ソケットはクローズされ、アレイから除去される。
ホログラム・システム内の「PASS」ソケット及び対応する「FUN」ソケットの存在により、オリジンに接触するネットワークのサブセットにおいてスケーラビリティを提供することが可能であり、それらがない場合、すべての要求は好ましくは1つのホログラム・サーバを介してオリジンへと進む。「PASS」/「FUN」ソケットの存在は、結果として生じるホログラム無効化がネットワークを介した経路を保持するため、複数のホログラム・ノードをHTTP応答のためにオリジンへと進ませることができる1つの機構である。
ホログラム・ノードがトークン・を生成するが、現時点では所与のホストに対する発行者がわからないというイベント(レジストラは、このノードによって調べられた時点でのみ、オリジンの前の最終ノードについて「HOP」ステータスを伴い「FINAL」ステータスを伴わないGET呼び出しを受信していることから、通常動作で生じる可能性があり、更にサーバの再起動などの異常動作からも生じる可能性があるステータス)では、ノードは「PASS」ソケットを使用してレジストラにメッセージを渡すことになる。レジストラ自体は、メッセージがその「FUN」ソケットに到達すると動作可能であり、詳細については「FUN」を参照のこと。
「FUN」は、「PASS」ソケットからトークン・メッセージを受信するために、複数の接続を受け入れてプッシュ−プル・パラダイムでプルの役割を果たし、通常はトークン・メッセージを「OUT」ソケットに渡すことによってそれらに対して動作する、リスニング・ソケットを表すオブジェクトである。レジストラ上の「FUN」ソケットは、メッセージのアプリケーション・レベルのキューイングを生じさせることが可能である。発行者が決定されるとすぐに、レジストラ上の「PASS」ソケットを使用してキューイングされたメッセージが発行者の「FUN」ソケットに渡され、通常の動作が続行されることになる。
インバウンド・メッセージの例:
トークン・メッセージが伝搬されるべきホログラム・ピアからの通知。
フォーマット:「DATAホスト・トークン[@サーバ_id:番号:タイムスタンプ]」
例えば「DATA example.comusers:123@1000:1234:123456789」
図10では、例示のネットワーク状態が示されている。「H1」、「H2」、及び「H3」はホログラム・ネットワーク上のノードである。これは、例示のために提供された非限定的な実施形態である。
この例の各ノード内で「PRSO」(プロキシ加入出力)及び「PRTO」(プロキシ・トークン出力)オブジェクトは、HTTPプロキシ・ソフトウェア内でオープンなソケットである。マルチプロセス・プロキシ・デーモン上ではUnixプロセスごとに1つが存在するが、簡略化するために各々について単一のボックスが図示されている。「PRSO」は、ホログラム付属ソフトウェアの「REP」ソケットと通信するために、要求−回答パラダイムで要求の役割を果たすプロセス間ソケットである。「PRTO」は、ホログラム・メッセージング・ソフトウェアの「APP」ソケットと通信するために、プッシュ−プル・パラダイムでプッシュの役割を果たすプロセス間ソケットである。
図10に示された例では、「H3」はレジストラとして動作している。「REG」、「REG2」、「REG3」はすべて、「REP」ソケットに到達するトラフィックによって必然的に生じる照会を容易にするために、「RGR3」に対してオープンである。「H1」は少なくとも1つのドメインに対して発行されており、「H2」及び「H3」はどちらもそのドメインに対するトラフィックを見た後、「IN2」及び「IN3」を介して更新を受信するために加入した。
加えて図10では、逆マップ・システムが、「H1」が発行者であるドメイン(場合によっては上記と同じドメイン)に対して「H2」及び「H3」の両方をオリジンの前の最終ホップにしたため、「PASS2」及び「PASS3」は「FUN」に対してオープンである。「H2」は、いずれのノードが発行者としてサービスしているかがわかるまでドメインに対する最終ホップであったため、メッセージをレジストラに送信するために「PASS2」は「FUN3」に対してもオープンであった。
選択及び分類基準及びトークンとしての他の論理の表示
いくつかの実施形態では、オリジン応答に含まれるあるトークンは、1次キー又はデータのセットを示さず、むしろ応答構築に関連する照会の他の部分を示す場合がある。こうしたトークンは、応答内のその実際のデータではなく、応答を構築するために使用された選択/分類又は他の論理を示す。
APIドメインにとって何が適切であるかに関わらず、最新のオファー、ニュース、取引、登録などであり得る「最新の10のレコード」を示すAPI呼び出しについて考えてみる。時間が経過してより多くのレコードが追加されるにつれて、正しい応答はデータ自体を直接変更することなく、したがって以前のホログラム適合応答に付加されたトークンを直接変更することなく、潜在的に変更されていく。データの応答セットは変更/更新されているが、データの項目自体は変更されていない可能性がある。したがって、API呼び出し内に存在する分類又は選択挙動を反映するトークンを導入する。実際にはこれらのトークンは、以前に論じた例示のケースと同様に、API応答内のデータが変更されたためではなく、API応答内のデータの分類又は選択が期限切れになったために、API応答が無効になった時に無効化される。したがってAPI応答内のデータは、ここでは同じAPI呼び出しに応答して提供する「誤った」データである。
「市のイベント」APIを例に取ってみよう。これは、ボストンで行われるイベントに関するデータをフェッチするためにオファーされたAPIである。
GET/events/listings?sort=last_modified+desc&filters=category:
(Theater+Dance)&ll=40.766146,-73.99021&api-key=123
Host:api.city-events-example.com
...
X-Hologram-Data:...,events:COUNTSORT
オリジン・サーバはAPI呼び出しが分類コマンドを参照することがわかっているため、「events:COUNTSORT」トークンがAPI応答に付加される。「events:COUNTSORT」トークンは後に、テーブル内のエントリのカウントが修正されるごとにオリジンによって無効化することが可能であり、したがってテーブルからの照会のカウント又は順序付けのいずれかに依存する応答を正しく無効化する。
当業者であれば理解されるように、こうした「選択/分類」トークンは、「最近」のイベント或いは「トレンド」又は「現在流行」のイベントなどといったものを戻す、API呼び出しに使用することができる。
範囲トークン
いくつかのケースでは、アプリケーションはAPIを呼び出し、例えばユーザによってマップ上で選択されるような、要求された特定の地理的区域内に入る当該のアイテムを戻すAPIなどの、データ範囲を提出することができる。当該のアイテムは、販売中の家、当該の特定の店又は場所の位置、写真が撮影された正確な位置などとすることができる。本明細書で説明するシステム及び方法は、これらの用途に適用可能である。
前述の例示のトークン構文規則を基礎として、範囲トークンは一実装において[A..B]の形で範囲構文を定義するために大括弧文字を使用することが可能であり、ここでA及びBは2つのピリオド文字によって分けられ大括弧によって囲まれた整数又は浮動小数点数、例えば[1.1..3.14]であり、これは1.1から3.14までの範囲を包含的に表記している。この表記は、例えば21才から50才までの50才を含む年齢を論理的に指定するための「age:[21..50]」などの他の方法で、通常データ・トークンに付加される。
例示のために、以下のようなこうしたアプリケーションによって生成されるHTTP GET要求について考えてみる。
GET/api/foo...
?lat=1.1234567890,1.1244567890...
&long=1.1234567890,1.1244567890...
&num=25...

...yielding…

Property101 data
Property123 data
Property150 data
...
この例では、緯度/経度パラメータは提供された4つの座標からのボックスを表し、最大25までの結果が戻される。従来技術のTTLベースのキャッシング・ソリューションは、位置決めが非常にきめ細かいため、この応答をあまり適切にキャッシュできない。それらの特定の座標がTTL内の別のクライアントによって要求されていない限り、座標に対するわずかな変化が結果としてキャッシュ・ミスを生じさせる可能性がある。したがってある実施形態では、オリジンは、許容差によって定義されるように、特定の地理的ボックス(又は他のデータ範囲)についての結果を同様のボックス(又は同様のデータ範囲)に再使用できることを示すことができる。キャッシュ・ヒットが存在するかどうかを決定するために、キャッシング・サーバは要求されたURLパラメータ(lat/long)を解釈し、キャッシュ・インデックス内の一致するエントリを探す場合、何らかの許容差をそれらに適用することができる。
次に、ホログラムに関するこの種の応答をトークン化するために、オリジン・サーバは各プロパティ識別子に関するトークンを付加することが可能であり、これによって、そのプロパティに関するデータが変更された(例えば価格又はステータスが変更された)場合、システムはキャッシュされた応答を無効化できるようになる。新しいプロパティ又は地理的ボックス内に現れる他のものを反映するために、特定の座標に関するホログラム・トークンを使用することができる(例えば、latlong:a;b;c;d)。しかしながら、こうしたトークンは非常に特有であり、それらを無効化しようとする際に困難が生じる可能性がある。例えばオリジンは、オリジン・データベース内に追加される新しいプロパティに基づいて、以前の座標セット(及びトークン)を無効化すべきかどうかを決定しなければならない可能性がある。こうした論理、例えば当該の新しいアイテムの何らかの距離内にあるすべての座標及びトークンを無効化する論理を、オリジン内に展開及び配置することができるが、これはオリジンに負荷をかけ、すべてのケースにおいて正確でない可能性がある。
この問題により良く対処するために、ある実施形態において、応答が依存しているデータの範囲全体を反映する範囲トークンを用いてAPI応答にタグ付けすることができる。前述の例では、こうしたトークンを備える応答は以下のようであり得る。
GET/api/foo...
?lat=1.1234567890,1.1244567890...
&long=1.1234567890,1.1244567890...
&num=25...
…yielding…

...
X-Hologram-Data:geo:[1.1234567890..1.1244567890][ 1.1234567890..1.1244567890], property:101,property:123, property:150
...
Property101
Property123
Property150
オリジンは、新しいプロパティ(又は当該の他の新しいアイテム)が配置される特定の座標に対応するトークンによって、無効化することができる。例えば新しいプロパティ160が、プロパティ101の次のドアに、及び前の要求で座標によって定義されたボックス内に追加されるものと想定する。無効化アサーションは以下のようであり得る。
POST/hologram/invalidate HTTP/1.1
...
tokens=geo:[1.1234567899][1.1234567899]
このケースでは、無効化アサーションによって記述される特定の位置は、ホログラム・サーバによって範囲内の2つの特定のポイント、1つは緯度、1つは経度として解釈される。無効化アサーション内の特定の位置を包含する緯度及び経度範囲で表記される上記の例のような応答は、キャッシュ内で識別及び無効化される。
このように、応答は、応答が依存することになるデータ値の範囲を示す範囲トークンを用いて表記することができる。イベントがデータ範囲内のオリジンで発生する場合、オリジンは、範囲内の特定のデータ・ポイントに関しては無効化アサーションによって無効化することができる。
この手法は、APIが要求内のデータ範囲に基づいて情報を戻す様々なデータ及び環境に適用可能である。例えば上記に加えて、特定の日付又は時間範囲についてのイベント又はTV番組などを戻すAPIは、範囲を用いて表記することが可能であり、新しいイベントが追加されるか、又はイベントのスケジュールが再構成される場合、その範囲をカバーする応答は上記の機構を介して無効化することができる。こうしたケースでは、トークンは、例えばより広いスケジュール内で変更されたTVについての時間範囲が現在無効であることをアサートすることによって、範囲内の部分的な範囲のポイントに対する無効化を含むことが可能である。
システムの潜在的利点
以下は、開示された教示で達成可能ないくつかの特典であるが、必ずしもこうした特典のすべてを表すものではなく、こうした潜在的特典の記述は、こうした特典を達成することが本明細書の教示の実施に要求されるか又は必要であることを意味するものではない。
潜在的利点:トラフィックのローカライズ
本明細書で説明する技法は、結果として、「ノーストア」モードに比べてプラットフォームをトラバースするコンテンツ・トラフィックを少なくすることができ、更にAPIに関するコンテンツ・トラフィックをプラットフォーム・エッジに局所的にローカライズすることができる。要求がホログラム・サーバに入ってくる場合、URLを調べて文書をサービスすることができる。
任意の非ホログラム・プロキシを使用して、ホログラム・プロキシの前に、API応答に対する従来のTTLキャッシングの追加の層を提供することができる。秒単位の短いTTLが使用可能である。これは、大量の公衆APIトラフィックに直面するためにプロキシの広域配備が必要な、極端に高トラフィックのシナリオに有用である。
潜在的利点:オリジン・オフロード
API応答の大部分はそれらが表すデータ・レコードが「静穏」であるので、オリジン・サーバからのオフロードを達成することができる。
潜在的利点:待ち時間
API応答の大部分はそれらが表すデータ・レコードが「静穏」であるので、クライアントに対する待ち時間の削減を達成することができる。通常はオリジンから数百ミリ秒「離れた」クライアントは、今やより近くに配置されたホログラム・サーバからより頻繁に返答を受信しているので、エンド・ユーザに対する待ち時間を低減させることができる。
オンライン・プレゼンスのための協調更新
本明細書の教示は、APIコンテンツ以外の様々な種類のコンテンツに適用可能であり、コンテンツ・プロバイダのオンライン・プレゼンス全体にわたる協調コンテンツ更新をサポート可能である。例示のために、CDNコンテンツ・プロバイダがそのオンライン・プレゼンス全体にわたって「トップ・ニュース」のフィードを提供したいものと想定する。「トップ・ニュース」コンテンツに関するデータは、ウェブサイト・ページ上に含めるためにコンテンツ・プロバイダのコンテンツ管理システムによって取り上げられる文書(例えばXML文書)で実現可能であり、それはアプリケーションを使用しているエンド・ユーザに表示するためのコンテンツ・プロバイダのモバイル・アプリケーションによって取得可能であり、且つ/又は他のクライアントにとって「contentprovider.com/API/topnews」でAPIを介して使用可能なものである。本明細書の教示を活用し、これらのシステムのうちのいずれかからの応答(例えばウェブ・サーバからのhtmlページ、モバイル・アプリケーションを処理しているサーバからのモバイル・アプリケーション応答、及び/又はAPI応答)に、「トップ・ニュース」文書に関するトークンで以てタグ付けすることができる。その文書が更新された場合、トークンは無効化され、結果としてオンライン・プレゼンス全体にわたる様々な応答の各々がキャッシングの観点から無効化され、協調リアルタイム更新を促進させることになる。
コンピュータ・ベースの実装
本明細書で説明するクライアント、サーバ、及び他のコンピュータ・デバイスは、特定用途向けハードウェア、内部に記憶されたソフトウェアによって特定用途向けに構成された汎用ハードウェア、又はそれらの組み合わせにおいて具体化された、上記の機能特徴を用いて本明細書の教示によって修正された場合、従来のコンピュータ・システムで実装可能である。
ソフトウェアは、1つ又はいくつかの離散プログラムを含むことができる。所与の機能は、任意の所与のモジュール、プロセス、実行スレッド、又は他のこうしたプログラミング構造の一部を備えることができる。一般的に前述の各機能は、コンピュータ・コードとして、すなわち特定用途向け機械を提供するために1つ又は複数のマイクロプロセッサ内で実行可能なコンピュータ命令のセットとして実装可能である。コードは、本明細書の教示によって修正された場合、コンピュータ、デジタル・データ処理デバイス、又は他のコンピューティング装置内のマイクロプロセッサなどの、従来の装置を使用して実行可能である。一実施形態において、こうしたソフトウェアは、Linuxなどのオペレーティング・システムを実行する標準のIntelハードウェア・プラットフォーム上でプロキシと共に実行するプログラミング言語で実装可能である。機能はプロキシ・コードに組み込むか、又はそのコードの付属として実行可能である。
上記のいくつかのケースでは、ある実施形態によって実行される特定順序の動作が示されているが、こうした順序は例示的であり、異なる順序、組み合わせなどで実行可能であることを理解されたい。更に、機能のうちのいくつかは、所与の命令、プログラム・シーケンス、コード部分などで組み合わせるか又は共有することができる。本明細書における所与の実施形態に対する言及は、説明された実施形態が特定の機能、構造、又は特徴を含み得ることを示しているが、あらゆる実施形態が必ずしも特定の機能、構造、又は特徴を含まなくてもよい。
図11は、本発明の実施形態が実装可能なコンピュータ・システム1100内のハードウェアを示すブロック図である。コンピュータ・システム1100は、クライアント、サーバ、パーソナル・コンピュータ、ワークステーション、タブレット・コンピュータ、ワイヤレス・デバイス、モバイル・デバイス、ネットワーク・デバイス、ルータ、ハブ、ゲートウェイ、又は他のデバイス内で具体化することができる。
コンピュータ・システム1100は、バス1101に結合されたマイクロプロセッサ1104を含む。いくつかのシステムにおいて、複数のマイクロプロセッサ及び/又はマイクロプロセッサ・コアが採用可能である。コンピュータ・システム1100は、情報及びマイクロプロセッサ1104によって実行されることになる命令を記憶するためにバス1101に結合された、ランダム・アクセス・メモリ(RAM)又は他のストレージ・デバイスなどのメイン・メモリ1110を更に含む。マイクロプロセッサ1104のための情報及び命令を記憶するために、読み取り専用メモリ(ROM)1108がバス1101に結合される。別の形のメモリとして、磁気ディスク、ソリッド・ステート・メモリ(例えばフラッシュ・メモリ)、又は光ディスクなどの不揮発性ストレージ・デバイス1106が、情報及び命令を記憶するために提供され、バス1101に結合される。本明細書で説明する機能を実行するために、他の特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は回路をコンピュータ・システム1100に含めることができる。
コンピュータ・システム1100はしばしば通信インターフェース1116を介してリモートに管理されるが、ローカル管理の場合、システム1100は、コンピュータ・システム上で実行するソフトウェアの出力を表示するユーザ・ディスプレイ1114、並びに、ユーザ入力及び命令をコンピュータ・システム1100に送る入力デバイス1115(例えばキーボード、マウス、トラックパッド、タッチスクリーン)に、コンピュータ・システム1100を通信可能に結合する、周辺インターフェース1112を有することができる。周辺インターフェース1112は、ユニバーサル・シリアル・バス(USB)又は他の通信リンクなどのローカル・バスのためのインターフェース回路及び論理を含むことができる。
コンピュータ・システム1100は、システム・バス1101と外部通信リンクとの間にリンクを提供する通信インターフェース1116に結合される。通信インターフェース1116はネットワーク・リンク1118を提供する。通信インターフェース1116は、イーサネット又は他のネットワーク・インターフェース・カード(NIC)、ワイヤレス・インターフェース、モデム、光学インターフェース、又は他の種類の入力/出力インターフェースを表すことができる。
ネットワーク・リンク1118は、1つ又は複数のネットワークを介した他のデバイスへのデータ通信を提供する。こうしたデバイスは、ローカル・エリア・ネットワーク(LAN)1126の一部である他のコンピュータ・システムを含む。更にネットワーク・リンク1118は、インターネット・サービス・プロバイダ(ISP)1120を介したインターネット1122へのリンクを提供する。次にインターネット1122は、リモート・サーバ1130及び/又はリモート・クライアント1131などの他のコンピューティング・システムへのリンクを提供することができる。ネットワーク・リンク1118及びこうしたネットワークは、パケット交換、回路交換、又は他のデータ伝送手法を使用して、データを伝送することができる。
動作時にコンピュータ・システム1100は、マイクロプロセッサ実行コードの結果として本明細書で説明する機能を実装することができる。こうしたコードは、メモリ1110、ROM1108、又はストレージ・デバイス1106などの、持続性コンピュータ可読媒体から読み取るか、又はこれらに記憶することができる。他の形の持続性コンピュータ可読媒体は、ディスク、テープ、磁気媒体、CD−ROM、光媒体、RAM、PROM、EPROM、及びEEPROMを含む。任意の他の持続性コンピュータ可読媒体が採用可能である。実行コードは、(例えばインターフェース・バッファ、ローカル・メモリ、又は他の回路に記憶した後に)ネットワーク・リンク1118から読み取ることもできる。
クライアント・デバイスは、ウェブ・ブラウザ又は他のレンダリング・エンジンを実行する従来のデスクトップ、ラップトップ、又は他のインターネット・アクセス可能機械とすることができるが、前述のようにクライアントはモバイル・デバイスとすることもできる。例えば携帯電話、ページャ、携帯情報端末(例えばGPRS NICを備えるPDA)、スマートフォン・クライアントを備えるモバイル・コンピュータ、タブレットなどの、任意のワイヤレス・クライアント・デバイスを利用することができる。技法を実施することが可能な他のモバイル・デバイスは、ワイヤレス・プロトコルを使用してワイヤレスにデータを送信及び受信することが可能な任意のアクセス・プロトコル実行可能デバイス(例えば、iOS(商標)ベース・デバイス、Android(商標)ベース・デバイス、他のモバイルOSベース・デバイスなど)を含む。典型的なワイヤレス・プロトコルは、WiFi、GSM/GPRS、CDMA、又はWiMaxを含む。これらのプロトコルは、IP、TCP、SSL/TLS、及びHTTPを備えた、従来のネットワーキング・スタックが構築されたISO/OSI物理及びデータ・リンク・レイヤ(レイヤ1及び2)を実装する。WAP(ワイヤレス・アクセス・プロトコル)は、とりわけ、ネットワーク通信レイヤのセット(例えばWDP、WTLS、WTP)並びにGSM及びCDMAワイヤレス・ネットワークで使用される対応する機能も提供する。
代表的な実施形態では、モバイル・デバイスは、GSMネットワーク用のデータ技術であるGPRS(汎用パケット無線サービス)を介して動作する携帯電話である。一般的に、本明細書で使用されるモバイル・デバイスは、加入者固有情報を担持するスマート・カードである加入者識別モジュール(SIM)、モバイル機器(例えば無線及び関連付けられた信号処理デバイス)、マン・マシン・インターフェース(MMI)、及び外部デバイス(例えばコンピュータ、PDAなど)への1つ又は複数のインターフェースを含む、3G(又は次世代)準拠デバイスである。本明細書で開示される技法は、特定のアクセス・プロトコルを使用するモバイル・デバイスでの使用に限定されない。モバイル・デバイスは、典型的には、WiFiなどのワイヤレス・ローカル・エリア・ネットワーク(WLAN)技術に対するサポートも有する。WLANはIEEE802.11規格に基づく。本明細書で開示される教示は、モバイル・デバイス通信用の任意の特定モード又はアプリケーション・レイヤに限定されない。
上記は、限定的であるものと解釈されるべきでない本発明のある実施形態を提示していることを理解されたい。例えば、ある言語、構文、及び命令は例示のために上記に示されており、それらは限定的であるものと解釈されるべきでない。当業者であれば、本開示に鑑みて、及びその範囲及び趣旨に従って、他の可能な実装を理解するであろうと企図されている。添付の特許請求の範囲は、保護が求められる主題を定義する。
本明細書に示された商標はそれらのそれぞれの所有者の所有権であり、当該主題の性質を前提とし、いかなる場合も承認又は提携を暗示せず、識別及び説明の目的のみに使用されることに留意されたい。

Claims (29)

  1. 1つ又は複数のプロセッサを形成する回路及び前記1つ又は複数のプロセッサによって実行される命令を保持するメモリを有するサーバ内で動作可能な、コンピュータによって実行される方法であって、
    クライアント要求を受信すること、
    前記クライアント要求に応答して、リモート・ソースへの転送要求を生成すること、
    前記リモート・ソースからの前記転送要求への応答を受信することであって、前記応答は応答コンテンツ及び少なくとも1つのトークンを備えるものである、受信すること、
    前記応答コンテンツ及び前記少なくとも1つのトークンをローカルにキャッシュすること、
    前記クライアント要求に応答して、前記クライアントに対して前記応答コンテンツをサービスすること、
    前記少なくとも1つのトークンが無効であることを示すメッセージを受信すること、及び、
    前記応答コンテンツが、前記メッセージ内で無効であると示された前記少なくとも1つのトークンに関連付けられているため、後続のクライアント要求に応答してサービスするに際して、前記キャッシュされた応答コンテンツを無効であるとして取り扱うこと、
    を含む、コンピュータ実装方法。
  2. 前記メッセージは、前記少なくとも1つのトークンが無効である旨の明示的アサーションを備える、請求項1に記載の方法。
  3. 前記メッセージは、前記少なくとも1つのトークンが無効である旨の暗黙的アサーションを備える、請求項1に記載の方法。
  4. 前記少なくとも1つのトークンは呼称及びシリアル番号又はタイムスタンプを備え、前記メッセージが前記呼称及び異なるシリアル番号又はタイムスタンプを含むため、前記メッセージは前記少なくとも1つのトークンが無効である旨を示す、請求項1に記載の方法。
  5. 前記メッセージは前記リモート・ソースから受信される、請求項1に記載の方法。
  6. 前記サーバはCDN内の複数のノードのうちの1つであり、前記メッセージは前記CDN内のノードから受信される、請求項1に記載の方法。
  7. 前記クライアント要求はアプリケーション・プログラマ・インターフェース(API)からのサービス要求から成り、前記応答はAPI応答である、請求項1に記載の方法。
  8. 前記リモート・ソースはコンテンツ・プロバイダに関連付けられた1つ又は複数のオリジン・サーバを備える、請求項1に記載の方法。
  9. 前記サーバはCDN内のプロキシ・サーバである、請求項1に記載の方法。
  10. 前記少なくとも1つのトークンは、前記応答を構築するために使用された前記リモート・ソースのデータベース内のデータに対応する、請求項1に記載の方法。
  11. 前記少なくとも1つのトークンは、前記リモート・ソースのデータベース内の1次キーに対応する、請求項1に記載の方法。
  12. 前記少なくとも1つのトークンは、前記応答を構築する際に使用されるデータを選択又は分類するために前記リモート・ソースによって使用されたデータ選択又は分類機能に対応する、請求項1に記載の方法。
  13. 前記トークンは前記ソースでのデータ構造を示し、前記メッセージは前記データ構造内のデータへの更新後に受信される、請求項1に記載の方法。
  14. 前記少なくとも1つのトークンは、前記応答を構築するために使用された前記ソースのファイルに対応する、請求項1に記載の方法。
  15. 前記少なくとも1つのトークンは、前記リモート・ソースでのメモリ・オブジェクト・キャッシング・システム内へのキーに対応する、請求項1に記載の方法。
  16. 複数の他の転送要求を送信すること、
    複数の他の応答を受信することであって、そのうちの少なくとも一部は前記少なくとも1つのトークンを備えるものである、受信すること、
    前記複数の他の応答をキャッシュすること、
    前記メッセージの受信後に、クライアント要求に応答してサービスするに際して、前記少なくとも1つのトークンを備える前記他の応答の各々を無効であるとして取り扱うこと、
    を更に含む、請求項1に記載の方法。
  17. 前記少なくとも1つのトークンは呼称及びデータ範囲の識別子を備え、前記メッセージは前記呼称及び前記データ範囲内の少なくとも1つの特定のデータ値の識別子を備える、請求項1に記載の方法。
  18. 前記応答は、応答コンテンツ及び前記少なくとも1つのトークンを保持するヘッダを備える、請求項1に記載の方法。
  19. マイクロプロセッサと、1つ又は複数の前記マイクロプロセッサによって実行されるコンピュータ・プログラム命令を記憶するメモリとを備える、装置であって、前記コンピュータ・プログラム命令が実行されることによって、前記装置に、
    クライアント要求を受信すること、
    前記クライアント要求に応答して、リモート・ソースへの転送要求を生成すること、
    前記リモート・ソースからの前記転送要求への応答を受信することであって、前記応答は応答コンテンツ及び少なくとも1つのトークンを備える、受信すること、
    前記応答コンテンツ及び前記少なくとも1つのトークンを、前記装置に対してローカルなキャッシュ内にキャッシュすること、
    前記クライアント要求に応答して、前記クライアントに対して前記応答コンテンツをサービスすること、
    前記少なくとも1つのトークンが無効であることを示すメッセージを受信すること、及び、
    前記応答データが、前記メッセージ内で無効であると示された前記少なくとも1つのトークンに関連付けられているため、後続のクライアント要求に応答してサービスするに際して、前記キャッシュされた応答データを無効として取り扱うこと、
    を実行させる、装置。
  20. 1つ又は複数のプロセッサを形成する回路及び前記1つ又は複数のプロセッサによって実行される命令を保持するメモリを有するサーバ内で動作可能な、コンピュータによって実行される方法であって、
    1つ又は複数のトークンが付加されたコンテンツを受信すること、
    前記コンテンツ及び前記1つ又は複数のトークンをキャッシュすること、
    コンテンツに対するクライアント要求を受信すること、
    キャッシュされたコンテンツが前記要求に応答するものである旨を決定すること、
    前記キャッシュされた1つ又は複数のトークンの各々が有効であるかどうかを決定すること、
    前記1つ又は複数のキャッシュされたトークンのすべてが有効である旨を決定すると、前記クライアントに対して前記キャッシュされた応答をサービスすること、
    前記1つ又は複数のキャッシュされたトークンのうちの少なくとも1つが有効でない旨を決定すると、前記コンテンツについてリモート・ソースに転送要求を送信すること、
    を含む、コンピュータ実装方法。
  21. 前記1つ又は複数のトークンをキャッシュする前に、前記応答に付加された前記1つ又は複数のトークンを装飾することを更に含む、請求項20に記載の方法。
  22. 前記応答と共に受信された前記1つ又は複数のキャッシュされたトークンのうちの所与の1つが有効であるかどうかの決定は、前記所与のトークンのタイムスタンプ及びシリアル番号のうちのいずれかを、現行トークンのキャッシュに記憶された対応するトークンのそれぞれのタイムスタンプ又はシリアル番号と比較することを含む、請求項20に記載の方法。
  23. 前記クライアント要求はURLに差し向けられており、前記キャッシュされたコンテンツが前記要求に応答している旨の前記決定は、前記URLの少なくとも一部に対応するキャッシュされたコンテンツを捜し出すことに基づく、請求項20に記載の方法。
  24. 前記クライアント要求はURLに差し向けられており、前記キャッシュされたコンテンツが前記要求に応答している旨の前記決定は、前記URLの少なくとも一部に対応するキャッシュされたコンテンツを捜し出すこと及び前記クライアント要求から抽出された別の値に基づく、請求項20に記載の方法。
  25. CDNサービス・プロバイダによって動作される複数の分散サーバを備えるシステムであって、前記複数の分散サーバは、アプリケーション・プログラマのインターフェース(API)を介してアクセス可能なコンテンツに対するクライアントからの要求を受信し、
    クライアントからの前記要求に応答して、前記複数の分散サーバは、APIコンテンツ・プロバイダに関連付けられた少なくとも1つのオリジン・サーバへのそれぞれの転送要求を生成し、
    前記複数の分散サーバは、前記少なくとも1つのオリジン・サーバからそれぞれのAPI応答を受信し、前記それぞれのAPI応答は応答データ及び1つ又は複数のトークンを備えるものであり、
    前記複数の分散サーバは、前記それぞれのAPI応答をそれぞれのローカル・キャッシュ内に記憶し、
    前記少なくとも1つのオリジン・サーバは、前記1つ又は複数のトークンのうちの少なくとも1つのトークンに差し向けられる無効化を生成し、前記無効化を前記CDNサービス・プロバイダによって動作される少なくとも1つの機械に送信し、
    前記少なくとも1つの機械は、前記無効化を前記複数の分散サーバに送信し、
    前記複数の分散サーバの各々は、前記無効化の受信の結果として、後続のクライアント要求に応答してサービスするに際して、前記少なくとも1つのトークンに関連付けられたローカルに記憶されたAPI応答を無効であるとして取り扱う、
    システム。
  26. 前記少なくとも1つのオリジン・サーバは、データベースからデータを取得すること、及び、所与のAPI応答が生成された前記データベース内の前記データに対応する1つ又は複数のトークンを含めることによって、前記所与のAPI応答を生成する、請求項25に記載のシステム。
  27. 前記少なくとも1つのオリジン・サーバは、前記APIをサポートするデータベース内の所与のデータの変更時に所与の無効化を生成し、前記無効化は変更された前記データに対応するトークンを備える、請求項2に記載のシステム。
  28. 前記複数の分散サーバは複数のキャッシング・プロキシ・サーバを備える、請求項25に記載のシステム。
  29. 前記少なくとも1つのオリジン・サーバは、データベースからデータを取得すること、及び、所与のAPI応答を作成する際に、前記応答データを選択又は分類するために前記少なくとも1つのオリジン・サーバによって使用された、データの選択又は分類機能に対応する1つ又は複数のトークンを含めることによって、前記所与のAPI応答を生成する、請求項25に記載のシステム。
JP2016546887A 2013-10-04 2014-10-02 通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法 Active JP6438037B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/046,884 US9648125B2 (en) 2013-10-04 2013-10-04 Systems and methods for caching content with notification-based invalidation
US14/046,884 2013-10-04
PCT/US2014/058914 WO2015051184A1 (en) 2013-10-04 2014-10-02 Systems and methods for caching content with notification-based invalidation

Publications (2)

Publication Number Publication Date
JP2016538669A JP2016538669A (ja) 2016-12-08
JP6438037B2 true JP6438037B2 (ja) 2018-12-12

Family

ID=52777867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016546887A Active JP6438037B2 (ja) 2013-10-04 2014-10-02 通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法

Country Status (5)

Country Link
US (4) US9648125B2 (ja)
EP (1) EP3053323B1 (ja)
JP (1) JP6438037B2 (ja)
CN (1) CN105684387B (ja)
WO (1) WO2015051184A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5389902B2 (ja) 2008-04-28 2014-01-15 セールスフォース ドット コム インコーポレイティッド ウェブサイト及びそのコンテンツの作成及び管理のためのオブジェクト指向のシステム
US8935360B2 (en) * 2010-12-03 2015-01-13 Salesforce.Com, Inc. Techniques for metadata-driven dynamic content serving
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
US9667747B2 (en) 2012-12-21 2017-05-30 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with support for dynamically-obtained content policies
US9503485B1 (en) * 2013-03-01 2016-11-22 Whatsapp Inc. Connecting communicating devices in a multi-server communication system
US9641640B2 (en) * 2013-10-04 2017-05-02 Akamai Technologies, Inc. Systems and methods for controlling cacheability and privacy of objects
US9813515B2 (en) * 2013-10-04 2017-11-07 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation with extension to clients
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US9497283B2 (en) * 2013-12-13 2016-11-15 Oracle International Corporation System and method for providing data interoperability in a distributed data grid
US9549040B2 (en) 2014-03-12 2017-01-17 Instart Logic, Inc. First cache purge optimization handling of unavailable nodes
US10270883B2 (en) * 2014-03-27 2019-04-23 Hewlett Packard Enterprise Development Lp Scheduling downloads
US9306939B2 (en) 2014-05-30 2016-04-05 Oracle International Corporation Authorization token cache system and method
US10346186B2 (en) * 2014-12-11 2019-07-09 Rohan Kalyanpur System and method for simulating internet browsing system for user without graphical user interface
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
CN105392021A (zh) * 2015-12-23 2016-03-09 武汉鸿瑞达信息技术有限公司 一种海量视频推送系统的推送方法及系统
US10965735B2 (en) * 2016-02-14 2021-03-30 Bentley J. Olive Methods and systems for facilitating information and expertise distribution via a communications network
US10102133B2 (en) * 2016-05-31 2018-10-16 Salesforce.Com, Inc. Reducing latency by caching derived data at an edge server
US10007607B2 (en) 2016-05-31 2018-06-26 Salesforce.Com, Inc. Invalidation and refresh of multi-tier distributed caches
US10187421B2 (en) * 2016-06-06 2019-01-22 Paypal, Inc. Cyberattack prevention system
US10375154B2 (en) 2016-07-29 2019-08-06 Microsoft Technology Licensing, Llc Interchangeable retrieval of content
CN107689969B (zh) * 2016-08-03 2020-01-17 华为技术有限公司 一种缓存策略的确定方法及装置
US10693947B2 (en) 2016-09-09 2020-06-23 Microsoft Technology Licensing, Llc Interchangeable retrieval of sensitive content via private content distribution networks
CN106789344B (zh) * 2017-01-19 2019-11-12 上海帝联信息科技股份有限公司 数据传输方法、系统、cdn网络及客户端
US10585966B2 (en) * 2017-02-01 2020-03-10 Facebook, Inc. Systems and methods for accessing content
JP6834743B2 (ja) 2017-04-20 2021-02-24 富士通株式会社 更新処理プログラム、更新処理装置、及び更新処理方法
US10445157B2 (en) * 2017-05-18 2019-10-15 Sap Se Concurrent services caching
US10574777B2 (en) * 2017-06-06 2020-02-25 International Business Machines Corporation Edge caching for cognitive applications
US10439925B2 (en) 2017-12-21 2019-10-08 Akamai Technologies, Inc. Sandbox environment for testing integration between a content provider origin and a content delivery network
CN110086756B (zh) * 2018-01-26 2022-12-02 沪江教育科技(上海)股份有限公司 一种验证方法、终端以及服务器
KR102422660B1 (ko) * 2018-02-16 2022-07-20 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 코어 네트워크 도메인들 사이에서 송신되는 메시지의 보호
JP2019185512A (ja) * 2018-04-13 2019-10-24 富士通株式会社 制御方法、制御プログラム、及び情報処理装置
US11044090B2 (en) * 2018-07-24 2021-06-22 ZenDesk, Inc. Facilitating request authentication at a network edge device
CN109063088B (zh) * 2018-07-26 2020-07-28 阿里巴巴集团控股有限公司 序列号的生成方法及装置
US11115479B2 (en) * 2019-01-10 2021-09-07 Google Llc Enhanced online privacy
CN110062006A (zh) * 2019-05-08 2019-07-26 福州福昕网络技术有限责任公司 一种客户端高并发鉴权方法和系统
US11190514B2 (en) * 2019-06-17 2021-11-30 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US11082526B2 (en) * 2019-08-19 2021-08-03 International Business Machines Corporation Optimizing large parameter passing in a service mesh
US20210092199A1 (en) * 2019-09-24 2021-03-25 International Business Machines Corporation Cachability of single page applications
US11936950B2 (en) * 2019-12-02 2024-03-19 Comcast Cable Communications, Llc Methods and systems for content delivery
US20210173888A1 (en) 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
US11689455B2 (en) 2020-05-28 2023-06-27 Oracle International Corporation Loop prevention in virtual layer 2 networks
US11444931B1 (en) * 2020-06-24 2022-09-13 F5, Inc. Managing name server data
US11445225B2 (en) * 2020-10-27 2022-09-13 Akamai Technologies, Inc. Measuring and improving origin offload and resource utilization in caching systems
US11757773B2 (en) 2020-12-30 2023-09-12 Oracle International Corporation Layer-2 networking storm control in a virtualized cloud environment
US11310334B1 (en) * 2021-01-27 2022-04-19 Bby Solutions, Inc. Automatic smart propagation of caching directives
US11671355B2 (en) 2021-02-05 2023-06-06 Oracle International Corporation Packet flow control in a header of a packet
US11637770B2 (en) * 2021-02-13 2023-04-25 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
EP4292254A1 (en) * 2021-02-13 2023-12-20 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
US11777897B2 (en) 2021-02-13 2023-10-03 Oracle International Corporation Cloud infrastructure resources for connecting a service provider private network to a customer private network
US11343348B1 (en) 2021-04-12 2022-05-24 Akamai Technologies, Inc. Real-time message delivery and update service in a proxy server network
US11343344B1 (en) 2021-04-23 2022-05-24 Akamai Technologies, Inc. Proxy server entity transfer modes
CN115314718B (zh) * 2021-05-07 2023-07-14 北京字节跳动网络技术有限公司 一种直播数据处理方法、装置、设备及介质
CN115378878B (zh) * 2021-05-21 2023-11-14 北京字跳网络技术有限公司 Cdn的调度方法、装置、设备及存储介质
US11917012B2 (en) * 2021-06-30 2024-02-27 Dell Products L.P. System and method for a real-time application programming interface broker service across cloud service providers
CN113709257B (zh) * 2021-10-09 2024-04-23 天翼物联科技有限公司 消息缓存超期监控方法、装置、设备及介质
US11880303B2 (en) * 2021-12-30 2024-01-23 Yahoo Ad Tech Llc Content cache invalidation using cache tags
CN114936192B (zh) * 2022-07-19 2022-10-28 成都新橙北斗智联有限公司 一种文件动态压缩混淆和双向缓存方法及系统

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852747A (en) 1995-09-08 1998-12-22 International Business Machines Corporation System for awarding token to client for accessing first data block specified in client request without interference due to contention from other client
GB2305271A (en) * 1995-09-15 1997-04-02 Ibm Proxy object recovery in an object-oriented environment
US6012126A (en) * 1996-10-29 2000-01-04 International Business Machines Corporation System and method for caching objects of non-uniform size using multiple LRU stacks partitions into a range of sizes
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6122666A (en) * 1998-02-23 2000-09-19 International Business Machines Corporation Method for collaborative transformation and caching of web objects in a proxy network
US6108703A (en) 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6249844B1 (en) 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US7225264B2 (en) * 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6427172B1 (en) 1999-07-20 2002-07-30 Cyberstar, L.P. Method and apparatus for internet cache content delivery via a data distribution system
AU6643100A (en) 1999-08-16 2001-03-13 Orblynx, Inc. Internet caching system
US8756342B1 (en) 2000-02-07 2014-06-17 Parallel Networks, Llc Method and apparatus for content synchronization
US6820133B1 (en) 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US6718328B1 (en) * 2000-02-28 2004-04-06 Akamai Technologies, Inc. System and method for providing controlled and secured access to network resources
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
US7240100B1 (en) * 2000-04-14 2007-07-03 Akamai Technologies, Inc. Content delivery network (CDN) content server request handling mechanism with metadata framework support
US6996616B1 (en) 2000-04-17 2006-02-07 Akamai Technologies, Inc. HTML delivery from edge-of-network servers in a content delivery network (CDN)
EP1410215A4 (en) * 2000-08-22 2006-10-11 Akamai Tech Inc COMPILING DYNAMIC CONTENT ON EDGE-OF-NETWORK SERVER IN A CONTENT DELIVERY NETWORK
US7010578B1 (en) * 2000-09-21 2006-03-07 Akamai Technologies, Inc. Internet content delivery service with third party cache interface support
US7111057B1 (en) 2000-10-31 2006-09-19 Akamai Technologies, Inc. Method and system for purging content from a content delivery network
US7043524B2 (en) 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6567893B1 (en) * 2000-11-17 2003-05-20 International Business Machines Corporation System and method for distributed caching of objects using a publish and subscribe paradigm
WO2002044915A1 (en) 2000-11-30 2002-06-06 Appfluent Technology, Inc. System and method for delivering dynamic content
US20020138437A1 (en) 2001-01-08 2002-09-26 Lewin Daniel M. Extending an internet content delivery network into an enterprise environment by locating ICDN content servers topologically near an enterprise firewall
US7149807B1 (en) 2001-02-02 2006-12-12 Akamai Technologies, Inc. Control and communication infrastructure (CCI) for selecting a transport mechanism to transport data to one or more servers in a content delivery network based on the size of the data, together with frequency and loss tolerance with respect to transport of the data
WO2002071242A1 (en) 2001-03-01 2002-09-12 Akamai Technologies, Inc. Optimal route selection in a content delivery network
US7340505B2 (en) 2001-04-02 2008-03-04 Akamai Technologies, Inc. Content storage and replication in a managed internet content storage environment
US20030004998A1 (en) 2001-06-29 2003-01-02 Chutney Technologies, Inc. Proxy-based acceleration of dynamically generated content
US7024452B1 (en) 2001-07-13 2006-04-04 Vignette Corporation Method and system for file-system based caching
US6918013B2 (en) * 2001-07-16 2005-07-12 Bea Systems, Inc. System and method for flushing bean cache
JP2003030087A (ja) * 2001-07-17 2003-01-31 Fujitsu Ltd コンテンツ配信ネットワークシステム
US7200681B1 (en) * 2001-07-30 2007-04-03 Akamai Technologies, Inc. Edge side components and application programming environment for building and delivering highly distributed heterogenous component-based web applications
US7103714B1 (en) * 2001-08-04 2006-09-05 Oracle International Corp. System and method for serving one set of cached data for differing data requests
US6775743B2 (en) 2001-09-12 2004-08-10 International Business Machines Corporation Content caching with special handling of multiple identical requests for content
US20030069828A1 (en) 2001-10-04 2003-04-10 Eastman Kodak Company System for and managing assets using priority tokens
US6883068B2 (en) * 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7412535B2 (en) * 2001-12-19 2008-08-12 International Business Machines Corporation Method and system for caching fragments while avoiding parsing of pages that do not contain fragments
CA2471855C (en) 2002-01-11 2013-03-19 Akamai Technologies, Inc. Java application framework for use in a content delivery network (cdn)
US7607062B2 (en) 2002-03-25 2009-10-20 Akamai Technologies, Inc. System for fast recovery from losses for reliable data communication protocols
US20030188106A1 (en) 2002-03-26 2003-10-02 At&T Corp. Cache validation using rejuvenation in a data network
US7133905B2 (en) 2002-04-09 2006-11-07 Akamai Technologies, Inc. Method and system for tiered distribution in a content delivery network
US7395355B2 (en) 2002-07-11 2008-07-01 Akamai Technologies, Inc. Method for caching and delivery of compressed content in a content delivery network
US7467233B2 (en) * 2002-07-30 2008-12-16 Akamai Technologies, Inc. Edge side components and application programming environment for building and delivering highly distributed heterogenous component-based web applications
CN1221898C (zh) * 2002-08-13 2005-10-05 国际商业机器公司 刷新网络代理高速缓存服务器对象的系统和方法
US7032067B2 (en) * 2002-12-17 2006-04-18 Activcard Security token sharable data and synchronization cache
WO2004083990A2 (en) 2003-03-17 2004-09-30 British Telecommunications Public Limited Company Web content adaption process and system
US20040193656A1 (en) 2003-03-28 2004-09-30 Pizzo Michael J. Systems and methods for caching and invalidating database results and derived objects
US7209929B2 (en) 2003-04-17 2007-04-24 Salesforce.Com, Inc. Java object cache server for databases
US7624126B2 (en) 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
WO2005013120A2 (en) * 2003-07-21 2005-02-10 Selex Sensors And Airborne Systems Limited Generation of subsystems
GB0318197D0 (en) 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protecting applications in a digital broadcasting system
US8117392B2 (en) * 2003-10-22 2012-02-14 Intel Corporation Method and apparatus for efficient ordered stores over an interconnection network
US7600230B2 (en) 2004-07-06 2009-10-06 Oracle International Corporation System and method for managing security meta-data in a reverse proxy
US7676835B2 (en) * 2004-08-31 2010-03-09 International Business Machines Corporation System and method for regulating access to objects in a content repository
US7990998B2 (en) 2004-12-22 2011-08-02 Qualcomm Incorporated Connection setup using flexible protocol configuration
US8402525B1 (en) * 2005-07-01 2013-03-19 Verizon Services Corp. Web services security system and method
US7694082B2 (en) * 2005-07-29 2010-04-06 International Business Machines Corporation Computer program and method for managing resources in a distributed storage system
GB0517113D0 (en) * 2005-08-20 2005-09-28 Ibm Methods, apparatus and computer programs for data communication efficiency
AU2006350252B2 (en) * 2005-11-18 2010-10-14 Security First Corporation Secure data parser method and system
US7673135B2 (en) * 2005-12-08 2010-03-02 Microsoft Corporation Request authentication token
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US8447837B2 (en) * 2005-12-30 2013-05-21 Akamai Technologies, Inc. Site acceleration with content prefetching enabled through customer-specific configurations
US7660296B2 (en) 2005-12-30 2010-02-09 Akamai Technologies, Inc. Reliable, high-throughput, high-performance transport and routing mechanism for arbitrary data flows
WO2007141082A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation Method and system of providing multi-user access in a single-user based client-server environment with distributed repositories
US20080098093A1 (en) 2006-10-16 2008-04-24 Palm, Inc. Offline automated proxy cache for web applications
WO2008098249A1 (en) 2007-02-09 2008-08-14 Dilithium Networks Pty Ltd. Method and apparatus for the adaptation of multimedia content in telecommunications networks
US20080307412A1 (en) * 2007-06-06 2008-12-11 Sony Computer Entertainment Inc. Cached content consistency management
CN101616136B (zh) * 2008-06-26 2013-05-01 阿里巴巴集团控股有限公司 一种提供互联网服务的方法及服务集成平台系统
US9170953B2 (en) * 2008-09-18 2015-10-27 Avere Systems, Inc. System and method for storing data in clusters located remotely from each other
US20110029899A1 (en) * 2009-08-03 2011-02-03 FasterWeb, Ltd. Systems and Methods for Acceleration and Optimization of Web Pages Access by Changing the Order of Resource Loading
US20110060812A1 (en) * 2009-09-10 2011-03-10 Level 3 Communications, Llc Cache server with extensible programming framework
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US9602276B2 (en) * 2010-06-11 2017-03-21 Qualcomm Incorporated Method and apparatus for virtual pairing with a group of semi-connected devices
WO2011159715A2 (en) * 2010-06-14 2011-12-22 Engels Daniel W Key management systems and methods for shared secret ciphers
EP2583189B1 (en) * 2010-06-18 2018-09-19 Akamai Technologies, Inc. Extending a content delivery network (cdn) into a mobile or wireline network
JP5129313B2 (ja) 2010-10-29 2013-01-30 株式会社東芝 アクセス認可装置
WO2012088023A2 (en) 2010-12-20 2012-06-28 Akamai Technologies, Inc. Methods and systems for delivering content to differentiated client devices
US9578081B2 (en) * 2011-02-02 2017-02-21 Imvu, Inc. System and method for providing an actively invalidated client-side network resource cache
US8407776B2 (en) 2011-02-11 2013-03-26 Good Technology Corporation Method, apparatus and system for provisioning a push notification session
BR112013022905A2 (pt) * 2011-03-08 2017-11-14 Telefonica Sa método para prover acesso autorizado a um aplicativo de serviço, a fim de utilizar um recurso protegido de um usuário final
JP5930847B2 (ja) * 2011-06-29 2016-06-08 キヤノン株式会社 サーバーシステムおよび制御方法およびプログラム
JP5410487B2 (ja) * 2011-09-22 2014-02-05 ヤフー株式会社 キャッシュサーバ、ウェブサーバ及び方法
US20130086323A1 (en) * 2011-09-30 2013-04-04 Oracle International Corporation Efficient cache management in a cluster
ES2896059T3 (es) 2011-12-22 2022-02-23 Amadeus Método y sistema para el seguimiento y la verificación de mensajes
US9258249B2 (en) * 2012-02-13 2016-02-09 Microsoft Technology Licensing, Llc Resource access throttling
WO2013123548A2 (en) * 2012-02-20 2013-08-29 Lock Box Pty Ltd. Cryptographic method and system
US10097406B2 (en) * 2012-03-19 2018-10-09 Level 3 Communications, Llc Systems and methods for data mobility with a cloud architecture
US8918651B2 (en) * 2012-05-14 2014-12-23 International Business Machines Corporation Cryptographic erasure of selected encrypted data
US8756568B2 (en) 2012-07-31 2014-06-17 Pivotal Software, Inc. Documentation generation for web APIs based on byte code analysis
US8990375B2 (en) 2012-08-31 2015-03-24 Facebook, Inc. Subscription groups in publish-subscribe system
US9607132B2 (en) * 2012-10-22 2017-03-28 Koninklijke Kpn N.V. Token-based validation method for segmented content delivery
US9491253B2 (en) 2012-11-27 2016-11-08 Fastly, Inc. Data storage based on content popularity
US9667747B2 (en) 2012-12-21 2017-05-30 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with support for dynamically-obtained content policies
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
JP6155696B2 (ja) * 2013-02-26 2017-07-05 日本電気株式会社 データ配信システム
US9189510B2 (en) 2013-02-26 2015-11-17 Facebook, Inc. System and method for implementing cache consistent regional clusters
US9503485B1 (en) * 2013-03-01 2016-11-22 Whatsapp Inc. Connecting communicating devices in a multi-server communication system
US20140258375A1 (en) * 2013-03-11 2014-09-11 Lsi Corporation System and method for large object cache management in a network
US20150006146A1 (en) * 2013-06-28 2015-01-01 Google Inc. Omega names: name generation and derivation
US9483508B1 (en) * 2013-06-28 2016-11-01 Google Inc. Omega names: name generation and derivation
WO2015002714A1 (en) * 2013-07-02 2015-01-08 Seven Networks, Inc. Modeling network signaling in a mobile network
WO2015009668A1 (en) 2013-07-16 2015-01-22 Fastly Inc. Network parameter configuration based on end user device characteristics
US9413842B2 (en) * 2013-09-25 2016-08-09 Verizon Digital Media Services Inc. Instantaneous non-blocking content purging in a distributed platform
US10097503B2 (en) 2013-09-27 2018-10-09 Fastly, Inc. Content node network address selection for content delivery
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US9641640B2 (en) * 2013-10-04 2017-05-02 Akamai Technologies, Inc. Systems and methods for controlling cacheability and privacy of objects
US9813515B2 (en) * 2013-10-04 2017-11-07 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation with extension to clients
US10165029B2 (en) 2014-01-31 2018-12-25 Fastly Inc. Caching and streaming of digital media content subsets
US10068014B2 (en) 2014-02-06 2018-09-04 Fastly, Inc. Security information management for content delivery
RU2661757C2 (ru) * 2014-02-14 2018-07-19 Телефонактиеболагет Лм Эрикссон (Пабл) Кэширование зашифрованного содержимого
US10530883B2 (en) 2014-02-18 2020-01-07 Fastly Inc. Data purge distribution and coherency
US9002990B1 (en) 2014-03-12 2015-04-07 Instart Logic, Inc. Fast cache purge in content delivery network
US9430405B2 (en) 2014-06-18 2016-08-30 Fastly, Inc. Encrypted purging of data from content node storage

Also Published As

Publication number Publication date
EP3053323A1 (en) 2016-08-10
US20180027089A1 (en) 2018-01-25
US20170085667A1 (en) 2017-03-23
US20190058775A1 (en) 2019-02-21
CN105684387B (zh) 2019-04-12
EP3053323A4 (en) 2017-06-21
CN105684387A (zh) 2016-06-15
WO2015051184A1 (en) 2015-04-09
US10547703B2 (en) 2020-01-28
US10063652B2 (en) 2018-08-28
EP3053323B1 (en) 2019-06-05
JP2016538669A (ja) 2016-12-08
US9807190B2 (en) 2017-10-31
US9648125B2 (en) 2017-05-09
US20150100660A1 (en) 2015-04-09

Similar Documents

Publication Publication Date Title
JP6438037B2 (ja) 通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法
US9813515B2 (en) Systems and methods for caching content with notification-based invalidation with extension to clients
US10404820B2 (en) Systems and methods for controlling cacheability and privacy of objects
US10986159B2 (en) Client side cache visibility with TLS session tickets
US6976090B2 (en) Differentiated content and application delivery via internet
US7277914B2 (en) Proxy server apparatus and method for providing service using the same
US9866655B2 (en) Server initiated multipath content delivery
US9996464B2 (en) Metadata cache management
US20130212159A1 (en) Method, Apparatus and System for Intercepted Triggering of Execution of Internet Services
CN109451014A (zh) 一种WebService代理系统及其透明代理方法
US10764402B2 (en) Leveraging time-windows generated by web browser pre-connections
CN108063835B (zh) 外网域名解析方法、服务器和系统
US20100049833A1 (en) Method, apparatus and computer program for modifying an endpoint reference representing a web service endpoint
GB2543279A (en) Methods, devices and computer programs for optimizing use of bandwidth when pushing data in a network environment comprising cache servers
WO2015176659A1 (en) System and method for pre-fetching
Huang A pre-fetching and caching system for web service registries

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180629

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181115

R150 Certificate of patent or registration of utility model

Ref document number: 6438037

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