JP2023547048A - 遅延可能ネットワーク要求をハンドリングすること - Google Patents
遅延可能ネットワーク要求をハンドリングすること Download PDFInfo
- Publication number
- JP2023547048A JP2023547048A JP2023521334A JP2023521334A JP2023547048A JP 2023547048 A JP2023547048 A JP 2023547048A JP 2023521334 A JP2023521334 A JP 2023521334A JP 2023521334 A JP2023521334 A JP 2023521334A JP 2023547048 A JP2023547048 A JP 2023547048A
- Authority
- JP
- Japan
- Prior art keywords
- deferrable
- request
- data
- network
- response
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 96
- 238000004590 computer program Methods 0.000 claims abstract description 18
- 230000009471 action Effects 0.000 claims abstract description 14
- 230000004044 response Effects 0.000 claims description 174
- 238000012545 processing Methods 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 23
- 239000003795 chemical substances by application Substances 0.000 description 14
- 238000004891 communication Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/24—Negotiation of communication capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本発明の実施形態は、方法、コンピュータ・プログラム製品、およびシステムを提供する。本発明の実施形態は、ネットワーク要求を遅延可能であると識別し、リモート・サーバに送信するために、遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むことができる。本発明の実施形態は、キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有するキャリア・ネットワーク要求を受信することができる。次いで、本発明の実施形態は、ヘッダからの埋め込みデータを構文解析して、サーバにおいてアクションを実行するための別個の要求メッセージにすることができる。
Description
本発明は、ネットワーク要求をハンドリングすることに関し、より詳細には、遅延可能ネットワーク要求をハンドリングすることに関する。
ハイパーテキスト転送プロトコル(HTTP)要求の形式のネットワーク要求は、ネットワーク環境でのクライアントとサーバとの間の通信に使用される。クライアントからのHTTP要求方法は、所与のリソースに対してサーバにおいて実行されるべき所望のアクションを示す。リソースは、要求ユニフォーム・リソース・ロケータ(URL)によって識別され、各要求方法は、個別のセマンティック(semantic)を実装する。例えば、ウェブ・アプリケーションは、典型的には、データを送信するまたは取り出すために、ブラウザ内でコードを実行し、HTTP要求をサーバに送り返す。
多くのHTTP要求は、サーバによって即時に処理される必要があるが、いくつかの要求は、時間の制約が少なく、遅延可能である場合がある。遅延可能な要求の一例は、ユーザ分析のためにデータを追跡するよう求める要求である。このデータは、開発者がユーザの行動を理解する際に有用であるが、ウェブ・アプリケーションの即時の機能性にとって重要ではない。
このようなHTTP要求に含まれる情報は、通常、HTTP要求に伴うオーバーヘッド(ヘッダ、クッキーなど)に比べて非常に小さく、開発者は、しばしば、そのような呼出しの失敗をハンドリングするための戦略を設計する必要がある。
したがって、このような余分な要求は、しばしば、ネットワーク・トラフィックおよびリソースの使用における非効率性につながる。
本発明の第1の態様によれば、遅延可能ネットワーク要求をハンドリングするためのコンピュータ実施方法が提供され、方法は、クライアントのユーザ・エージェントにおいて実行され、ネットワーク要求をインターセプト(intercept)し、遅延可能であると識別することと、リモート・サーバに送信するために、遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むこととを含む。
これは、1つまたは複数の遅延可能ネットワーク要求をそのヘッダ内で搬送することができる遅延不可能ネットワーク要求を待つことによって、ネットワーク要求の数を減少させるという利点を有する。
方法は、遅延可能ネットワーク要求のデータを、遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データの形式で、クライアントにおけるローカル・キャッシュ内に記憶することと、好適なキャリア・ネットワーク要求を識別することと、キャリア・ネットワーク要求のヘッダ内に遅延可能要求の集約データを埋め込むこととを含んでもよい。方法は、複数の遅延可能要求のそれぞれの集約データをキャリア・ネットワーク要求の複数のヘッダのうちの1つに埋め込むことを含んでもよい。好適なキャリア・ネットワーク要求は、遅延可能ではなく、遅延可能要求データのための十分なスペースを有してもよい。
ネットワーク要求を遅延可能であると識別することは、ネットワーク要求メッセージをインターセプトすることと、要求ネットワーク・メッセージが既定の遅延可能な宛先のリスト内のホストに送信されているかどうかを判定することとを含んでもよい。方法は、遅延可能要求データをヘッダ内に埋め込むときに使用するための定義済みヘッダ名をサーバから取得することを含んでもよい。
方法は、キャッシュが既定のサイズに達した時点で、またはユーザ・エージェントから抜けるとき、キャッシュされた遅延可能ネットワーク要求データをバッチ送信することを含んでもよく、バッチ送信は、キャッシュされた遅延可能ネットワーク要求をキャリア・ネットワーク要求として選択し、キャリア・ネットワーク要求の1つまたは複数のヘッダに他のキャッシュされた遅延可能要求データを追加する。
方法は、キャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク要求への応答の埋め込みデータを有するキャリア・ネットワーク応答を受信することと、ヘッダからの埋め込みデータを構文解析して、クライアントにおいてアクションを実行するための別個の応答メッセージにすることとを含んでもよい。
方法は、好適なキャリア・ネットワーク・メッセージに追加された遅延可能ネットワーク要求ごとに、遅延可能ネットワーク要求を進行中とマーク付けすることと、正常な応答が受信されたとき、遅延可能ネットワーク要求を更新することとを含んでもよい。
本発明の別の態様によれば、遅延可能ネットワーク要求をハンドリングするためのコンピュータ実施方法が提供され、方法は、サーバにおいて実行され、キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有するキャリア・ネットワーク要求を受信することと、ヘッダからの埋め込みデータを構文解析して、サーバにおいてアクションを実行するための別個の要求メッセージにすることとを含む。
遅延可能ネットワーク要求の埋め込みデータは、遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データであってもよく、埋め込みデータを構文解析することは、ターゲット宛先への別個の要求メッセージを形成してもよい。
方法は、サーバでの個々の処理のための遅延可能ネットワーク要求のバッチを受信することを含んでもよい。
方法は、遅延可能ネットワーク応答をインターセプトして識別することと、クライアントに返送するために、好適なキャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク応答のデータを埋め込むことと含んでもよい。方法は、遅延可能ネットワーク応答のデータを、遅延可能ネットワーク応答のターゲット宛先と応答メッセージ・データとの集約データの形式で、サーバにおけるローカル・キャッシュ内に記憶することと、好適なキャリア・ネットワーク応答を識別することと、キャリア・ネットワーク応答のヘッダ内に遅延可能応答の集約データを埋め込むことと含んでもよい。方法は、複数の遅延可能応答のそれぞれの集約データをキャリア・ネットワーク要求の複数のヘッダのうちの1つに埋め込むことを含んでもよい。
方法は、キャリア・ネットワーク要求のヘッダに遅延可能要求データを埋め込むときにユーザ・エージェントによって使用するための定義済みヘッダ名をサーバから送信することをさらに含んでもよい。
方法は、サーバでの個々の処理のための遅延可能ネットワーク要求のバッチを、キャリア・ネットワーク要求としての遅延可能ネットワーク要求と、キャリア・ネットワーク要求の1つまたは複数のヘッダにおいて提供される他のキャッシュされた遅延可能要求データとの形式で、受信してもよい。
本発明のさらなる態様によれば、遅延可能ネットワーク要求をハンドリングするためのシステムが提供され、システムは、プロセッサとメモリとを有するクライアント・システムを備え、メモリは、構成要素、すなわち、ネットワーク要求をインターセプトするための要求インターセプト構成要素と、ネットワーク要求を遅延可能であると識別するための遅延可能要求識別構成要素と、リモート・サーバに送信するために、遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むためのヘッダ埋め込み構成要素との機能を実行するためのコンピュータ・プログラム命令をプロセッサに提供するように構成される。
クライアント・システムは、遅延可能ネットワーク要求のデータを、遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データの形式でクライアントにおけるローカル・キャッシュ内に記憶するための遅延可能要求記憶構成要素と、好適なキャリア・ネットワーク要求を識別するためのキャリア要求識別構成要素とを含んでもよい。
クライアント・システムは、キャッシュが既定のサイズに達した時点で、またはユーザ・エージェントから抜けるとき、キャッシュされた遅延可能ネットワーク要求データをバッチ送信するためのバッチ送信構成要素と、遅延可能ネットワーク要求に対するバッチ応答を受信するためのバッチ受信構成要素とを含んでもよい。
クライアント・システムは、キャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク要求に対する応答の埋め込みデータを有するキャリア・ネットワーク応答を受信するためのキャリア応答受信構成要素と、ヘッダからの埋め込みデータを構文解析して、クライアントにおいてアクションを実行するための別個の応答メッセージにするための応答構文解析構成要素とを含んでもよい。
本発明の別の態様によれば、遅延可能ネットワーク要求をハンドリングするためのシステムが提供され、システムは、プロセッサとメモリとを有するサーバ・システムを備え、メモリは、構成要素、すなわち、キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有するキャリア・ネットワーク要求を受信するためのキャリア要求受信構成要素と、ヘッダからの埋め込みデータを構文解析して、サーバにおいてアクションを実行するための別個の要求メッセージにするための要求構文解析構成要素との機能を実行するためのコンピュータ・プログラム命令をプロセッサに提供するように構成される。
サーバ・システムは、ネットワーク応答をインターセプトするための応答インターセプト構成要素と、遅延可能ネットワーク応答を識別するための遅延可能応答識別構成要素と、クライアントに返送するために、遅延可能ネットワーク応答のデータを好適なキャリア・ネットワーク応答のヘッダ内に埋め込むためのヘッダ埋め込み構成要素とを含んでもよい。
サーバ・システムは、遅延可能ネットワーク応答のデータを、遅延可能ネットワーク応答のターゲット宛先と応答メッセージ・データとの集約データの形式で、サーバにおけるローカル・キャッシュ内に記憶するための遅延可能応答記憶構成要素と、好適なキャリア・ネットワーク応答を識別するためのキャリア応答識別構成要素とを含んでもよい。
サーバ・システムは、サーバでの個々の処理のための遅延可能ネットワーク要求のバッチを受信するためのバッチ要求受信構成要素と、サーバにおいてキャッシュが既定のサイズに達した時点で、キャッシュされた遅延可能ネットワーク応答データをバッチ送信するためのバッチ応答送信構成要素とを含んでもよい。
本発明の別の態様によれば、遅延可能ネットワーク要求をハンドリングするためのコンピュータ・プログラム製品が提供され、コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を備え、プログラム命令は、プロセッサに、ネットワーク要求をインターセプトして、遅延可能であると識別することと、リモート・サーバに送信するために、遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むこととを行わせるように、プロセッサによって実行可能である。
コンピュータ可読記憶媒体は非一過性のコンピュータ可読記憶媒体であってもよく、コンピュータ可読プログラム・コードは、処理回路によって実行可能であってもよい。
本発明と見なされる主題は、本明細書の結論部分において、具体的に指摘され、明確に特許請求されている。本発明は、その目的、特徴、および利点とともに、編成と動作の方法との両方に関して、添付の図面とともに読まれるときに以下の詳細な説明を参照することによって最もよく理解され得る。
ここで、本発明の好ましい実施形態を、以下の図面を参照して、単なる例として説明する。
説明を簡単かつ明確にするために、図に示されている要素が必ずしも一定の縮尺で描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されている場合がある。さらに、適切であると考えられる場合、対応するまたは類似の特徴を示すために、参照番号が図面間で繰り返される場合がある。
遅延可能ネットワーク要求をハンドリングするための方法およびシステムについて説明する。ネットワーク環境でのクライアントとサーバとの間の通信のために、ハイパーテキスト転送プロトコル(HTTP)要求の形式のネットワーク要求が使用される。クライアントからのHTTP要求方法は、所与のリソースに対してサーバにおいて実行されるべき所望のアクションを示す。リソースは、要求ユニフォーム・リソース・ロケータ(URL)によって識別され、各要求方法は、個別のセマンティックを実装する。
説明される方法は、遅延可能な要求(例えば、軽量のルーチン要求)のデータを、クライアントからの遅延不可能な要求(例えば、機能目的の要求)のヘッダ内に埋め込む。次いで、ヘッダは、サーバ側で抽出されてもよく、要求データは、サーバ側の宛先ロケーションに送信される。遅延可能な要求の応答を遅延不可能な要求の返信ヘッダにおいて返すことに対応する方法も提供される。
図1を参照すると、概略図100は、クライアント110とサーバ120との間でHTTP要求および応答が交換される、クライアント110およびサーバ120の例示的な実施形態を示す。この例では、クライアント110におけるユーザ・エージェント130(例えば、ウェブ・ブラウザ)が、サーバ120におけるリソース140、142(例えば、ウェブ・アプリケーション)に要求を送信する。
典型的な要求では、クライアント110は、HTTP要求メッセージをサーバ120に送出し、HTMLファイルおよび他のコンテンツなどのリソース140、142を提供するかまたはクライアント110に代わって他の機能を実行するサーバ120は、クライアント110に応答メッセージを返す。応答は、要求に関する完了ステータス情報を含み、そのメッセージ本文に要求されたコンテンツを含んでもよい。
ウェブ・ブラウザは、ユーザ・エージェント(UA)130の一例である。他のタイプのユーザ・エージェント130には、検索プロバイダ(ウェブ・クローラ)によって使用される索引付けソフトウェア、音声ブラウザ、モバイル・アプリケーション、およびウェブ・コンテンツにアクセスする、ウェブ・コンテンツを消費または表示する他のソフトウェアが含まれる。
遅延可能要求ハンドリング・システム150、155は、サーバ遅延可能要求ハンドリング構成要素150およびクライアント遅延可能要求ハンドリング構成要素155の形式で提供される。クライアント構成要素155は、サーバ構成要素150を補完する機能性を提供するために、クライアント110でダウンロード可能または実行可能であるようにサーバ構成要素150によって提供されるコードであってもよい。クライアント構成要素155は、以下でさらに説明するように遅延可能要求を中にキャッシュするための、クライアント110に対してローカルな遅延可能要求データ・キャッシュ156を含むか、またはこれにアクセスする。サーバ構成要素150は、以下でさらに説明するように遅延可能要求応答を中にキャッシュするための、サーバ120に対してローカルな遅延可能応答データ・キャッシュ152を含むか、またはこれにアクセスする。
クライアント遅延可能要求ハンドリング・システム155は、クライアント110において要求をインターセプトし、要求が遅延可能かどうか、または、遅延不可能であり、すぐに送信されるべきかどうかを判定する。要求が遅延可能である場合、要求は、後続の遅延不可能な要求の形式でキャリア要求メッセージ160のヘッダ170に結合されて送信されるまで、遅延可能要求データ・キャッシュ156内にキャッシュされてもよい。いくつかの遅延可能要求メッセージは、キャリア要求メッセージ160の複数のヘッダ170において送信されてもよい。
キャリア要求メッセージ160として作用する遅延不可能要求メッセージは、それ自体の要求データ161と、キャリア要求メッセージ160のヘッダ170内に埋め込まれた遅延可能要求データ171とともに送信されてもよい。そのようなメッセージがサーバ120で受信されると、サーバ遅延可能要求ハンドリング・システム150は、キャリア・メッセージ要求データ161をハンドリングし、遅延可能要求データ171を分離して、この遅延可能要求データ171を別個にハンドリングする。
遅延可能要求データ171がアクションを実行され、遅延可能応答データ191が利用可能になると、キャリア応答メッセージ180を待ち、そのキャリア応答メッセージ180をクライアント110のユーザ・エージェント130におけるクライアント遅延可能要求ハンドリング・システム155に配信するために、遅延可能応答データ191は、サーバ120に対してローカルな遅延可能応答データ・キャッシュ152にキャッシュされてもよい。
遅延不可能応答メッセージは、キャリア応答メッセージ180として作用してもよく、それ自体の応答データ181と、キャリア応答メッセージ180のヘッダ190に埋め込まれた遅延可能応答データ191とともに送信されてもよい。そのようなメッセージがクライアント110で受信されると、クライアント遅延可能要求ハンドリング・システム155は、キャリア・メッセージ応答データ181をハンドリングし、遅延可能応答データ191を分離して、この遅延可能応答データ191を別個にハンドリングする。
サーバおよびクライアントにおける方法の例示的な実施形態のさらなる詳細を以下に与える。
要求メッセージは、要求方法を指定し、サーバから指定されたリソースを要求する要求行と、要求ヘッダ・フィールドと、空行と、任意選択のメッセージ本文とを含む。
HTTPは、識別されたリソース140、142に対してサーバ120によって実行されるべき所望のアクションを示すための要求メッセージの主題であり得る要求方法を定義する。要求方法の例には、エラーの識別または解決あるいはその両方を行うための方法(例えば、TRACE HTTP要求)、ステータス通知を受信するための方法(例えば、STATUS HTTP要求)、情報を取り出すための方法(例えば、GET HTTP要求)、データを送信するための方法(例えば、POST HTTP要求)、既定の情報を削除するための方法(例えば、DELETE HTTP要求)、通信フローを確立するための方法(例えば、CONNECT HTTP要求)、通信オプションを記述するための方法(例えば、OPTIONS HTTP要求)、新しいリソースを作成するまたはリソースを置き換えるための方法(例えば、PUT HTTP要求)、リソースに部分的な変更を加えるための方法(例えば、PATCH HTTP要求)、およびリソースのヘッダを要求するための方法(例えば、HEAD HTTP要求)が含まれるが、これらに限定されない。
いくつかの要求メッセージは、それらが時間の影響を受けにくく、サーバによって即時に処理される必要がない場合、遅延可能と見なされてもよい。一例は、ユーザ分析用の追跡データである。このような追跡データは、開発者がユーザの行動を理解する際に有用であるが、ウェブ・アプリケーションの即時の機能性にとって重要ではない。一方、ウェブ・アプリケーションの機能性に関連する要求メッセージは遅延不可能である。
HTTPヘッダは、クライアントおよびサーバが、HTTP要求または応答によって追加情報を渡すことを可能にする。カスタムの独自のヘッダは、「X-」という接頭辞を有してもよい。この追加情報は、メッセージの宛先およびデータの形式で、遅延可能要求メッセージに関連するデータについて記述された方法において使用される。次いで、サーバは、ヘッダ情報を抽出し、要求データをメッセージの宛先に送信することによって要求データをハンドリングする。
遅延不可能要求メッセージは、遅延可能要求メッセージの宛先およびデータを含むヘッダを有するキャリア要求メッセージを形成する。キャリア要求メッセージおよび遅延可能要求メッセージは、異なる要求方法に関連している場合がある。
図2を参照すると、流れ図200は、クライアント遅延可能要求ハンドリング・システム155によってクライアント110において実行される説明された方法の例示的な実施形態を示す。
クライアント遅延可能要求ハンドリング・システム155は、サーバ遅延可能要求ハンドリング・システム150を有するサーバにHTTP要求メッセージを送信するウェブ・ブラウザ、クライアント・アプリケーションなどのクライアント側ユーザ・エージェントのためのコードを受信してもよい(201)。クライアント遅延可能要求ハンドリング・システム155は、例えば、遅延可能HTTP要求をインターセプトするため、および遅延可能要求データをキャッシュするための、ブラウザ拡張として提供されてもよい。クライアント遅延可能要求ハンドリング・システム155は、ネイティブ・ブラウザ・ネットワーク・レベルでHTTP要求をインターセプトするか、またはクライアント・アプリケーションによって使用される「フェッチ」もしくはXMLHttpRequest関数への呼出しをパッチしてもよい。
クライアント遅延可能要求ハンドリング・システム155は、別の要求メッセージのヘッダ内に埋め込まれた遅延可能要求メッセージを送信するときに使用する定義済みヘッダ名を取得してもよい(202)。例えば、定義済みヘッダ名は、クライアント遅延可能要求ハンドリング・システム155がサーバに対してREST呼出しを行うことによって取得されてもよい。カスタムのヘッダの場合、クライアント側は、そのセッションに使用される予定のヘッダの名前(例えば、普遍的に一意の識別子を使用して生成され得る)を用いて応答する、既知のサーバ・ルート、例えば、/api/getDeferrableHeaderを呼び出してもよい。代替として、そのようなすべてのメッセージに対して固定の定義済みヘッダ名が使用されてもよい。
クライアントでの方法は、サーバに送信されるべき新しいHTTP要求メッセージを検出してもよく(203)、方法は、その要求メッセージが遅延可能かどうかを判定する(204)。要求が遅延可能かどうかは、要求の宛先ホスト名またはパスあるいはその両方に依存してもよい。事前構成されたリスト内のホストに対して要求メッセージが送信されているかどうかを確認することによって、要求メッセージが遅延可能であると判定されてもよい(204)。リストは、サーバによって保持され、RESTインターフェースを介してクライアントに公開されてもよい。
また、要求メッセージは、所与のサイズを下回る場合にのみ遅延可能であってもよい。要求ヘッダ・フィールドのサイズは、典型的には、200バイトから2キロバイトの間であり、遅延可能要求データは、要求ヘッダ内に収まらなければならない。
要求メッセージが遅延可能であると見なされる場合、方法は、遅延可能要求メッセージのキャッシュが所与の制限を超えているかどうかを判定してもよい(205)。キャッシュが所与の制限を超えていない場合、新しい遅延可能要求メッセージは、要求の宛先とデータとを含む形式に集約され(206)、キャッシュ内に記憶される(207)。次いで、方法は、この要求メッセージについて終了し(213)、方法は、新しい要求メッセージを検出するために(203)、ループしてもよい。
キャッシュが所与の制限を超えていると判定される場合(205)、キャッシュをクリアするまたはキャッシュ内に空きを作るために、キャッシュされた遅延可能要求データは、バッチ要求メッセージとして送信されてもよい(208)。キャッシュされた要求が添付されるような、遅延不可能要求のように扱われるバッチ要求メッセージを送信するために(208)、特別な要求が行われてもよい。遅延可能要求のうちの1つが、キャッシュ内の他の遅延可能要求のキャリア要求として選択されてもよい。キャリア・メッセージのヘッダに追加された遅延可能要求ごとに、遅延可能要求は「進行中/送信済み」とマーク付けされる。特別な要求は、サーバによって提供されるカスタムのルートに対して行われてもよく、サーバは空の応答を返す。キャッシュ内に空きができた時点で、さらなる遅延可能要求データが記憶され得る。
要求メッセージが遅延可能でないと判定される場合(204)、要求メッセージが遅延可能要求メッセージのキャリア・メッセージとして好適であるかどうかが判定されてもよい(209)。例えば、要求メッセージ内に、1つまたは複数のヘッダにおいて1つまたは複数の遅延可能要求メッセージを搬送するためのスペースがあるかどうかである。十分なスペースがない、または要求メッセージが遅延可能要求メッセージを搬送しない他の理由がある場合、方法は、遅延可能要求メッセージを搬送せずに要求メッセージを送信してもよい(212)。次いで、方法は、この要求メッセージについて終了し(213)、新しい要求メッセージを検出するために(203)、ループしてもよい。
要求メッセージがキャリア・メッセージとして好適である場合、方法は、キャッシュ内に要求メッセージ・データがあるかどうかを確認してもよい(210)。キャッシュされた要求メッセージ・データがない場合、方法は、要求メッセージを送信してもよい(212)。キャッシュされた要求メッセージ・データがある場合、キャッシュされた要求の集約された形式の宛先およびデータが、キャリア要求メッセージのヘッダ・フィールドに追加される(211)。1つのキャリア・メッセージに複数の遅延可能要求が添付されてもよく、複数の遅延可能要求は、個別のヘッダ、例えば「X-Deferrable-Data」、次いで「X-Deferrable-Data-2」、「X-Deferrable-Data-3」を介して添付されてもよい。キャリア・メッセージのヘッダに追加される遅延可能要求ごとに、遅延可能要求は、「進行中/送信済み」とマーク付けされる。
メッセージ要求の1つまたは複数のヘッダ・フィールドに遅延可能要求メッセージ・データが追加されると、要求メッセージが送信されてもよい(212)。次いで、方法は、この要求メッセージについて終了し(213)、新しい要求メッセージを検出するために(203)、ループしてもよい。
ユーザがウェブ・アプリケーションまたはウェブ・ブラウザなどのユーザ・エージェント130から離れると、まだ送信されていないすべての遅延可能要求データのキャッシュされたデータが、別個の特別なバッチ要求として送信される。方法は、上記の「キャッシュ満杯」のシナリオと同様の様式で、特別なバッチ要求を発行してもよい。上記のように、この特別なバッチには複数の遅延可能要求が添付されてもよい。
以下は、要求メッセージの形式の一例である。
遅延可能要求:
POST https://datacollectionresource/tracking {... tracking data ...}
POST https://datacollectionresource/tracking {... tracking data ...}
通常の要求:
POST https://domain.com/api/flows/flow1/start {... request data ...}
POST https://domain.com/api/flows/flow1/start {... request data ...}
単一の組み合わされた要求:
POST https://domain.com/api/flows/flow1/start {... request data ...}
以下の追加のヘッダを伴う:
X-Deferrable-Data:{ destination: https://datacollectionresource/tracking data: {... trackingdata...}, method: ‘POST’ }
POST https://domain.com/api/flows/flow1/start {... request data ...}
以下の追加のヘッダを伴う:
X-Deferrable-Data:{ destination: https://datacollectionresource/tracking data: {... trackingdata...}, method: ‘POST’ }
ヘッダにおいて提供される遅延可能データは、元の要求が要求するすべてのパラメータを必要とする。最も単純な事例では、これは、単に方法または方法とボディとの組合せであってもよいが、要求フェッチ・インターフェースによって定義されたすべてのプロパティを含んでもよい。
新しいHTTP応答メッセージがクライアント110で受信されると、応答メッセージがそのヘッダ内に遅延可能応答を含むかどうかが判定される。遅延可能応答を含む場合、正常な遅延可能応答が抽出され、各要求元に送信され、遅延可能要求は、遅延可能要求データ・キャッシュ156から削除される。
図3Aを参照すると、流れ図300は、サーバ遅延可能要求ハンドリング・システム150によってサーバ120において実行される説明された方法の例示的な実施形態を示す。
サーバ遅延可能要求ハンドリング・システム150は、HTTP要求メッセージをサーバ120に送信するウェブ・ブラウザ、クライアント・アプリケーションなどのクライアント側ユーザ・エージェントのためのコードを提供してもよい(301)。
サーバ遅延可能要求ハンドリング・システム150は、別の要求メッセージのヘッダ内に埋め込まれた遅延可能要求メッセージを送信するときに使用する定義済みヘッダ名を提供してもよい(302)。カスタムのヘッダの場合、クライアント側は、そのセッションに使用される予定のヘッダの名前(例えば、普遍的に一意の識別子を使用して生成され得る)を用いて応答する、既知のサーバ・ルート、例えば、/api/getDeferrableHeaderを呼び出してもよい。代替として、そのようなすべてのメッセージに対して固定の定義済みヘッダ名、例えば「X-Deferrable-Data」が使用されてもよい。
サーバ遅延可能要求ハンドリング・システム150は、定義済みヘッダ名を有する1つまたは複数のヘッダを含むとともに、集約された遅延可能要求データがこの1つまたは複数のヘッダ内に埋め込まれている要求を受信してもよい(303)。集約された遅延可能要求データは、遅延可能要求のターゲット宛先と遅延可能要求のデータとを組み合わせてもよい。方法は、埋め込まれた集約された遅延可能要求データをヘッダから構文解析してもよく(304)、抽出されたデータを、集約された遅延可能要求データにおいて提供されたターゲット宛先に送信してもよい(305)。
遅延可能要求からの応答は、サーバ120でキャッシュされてもよく(306)、遅延不可能要求が応答を返すとき、キャッシュ内の任意の遅延可能要求応答が、返信ヘッダ内に追加されてもよい(307)。次いで、クライアント側は、遅延可能要求応答を適切に抽出して処理してもよい。
図3Bを参照すると、流れ図320は、サーバ遅延可能要求ハンドリング・システム150によってサーバ120において実行される説明された方法の例示的な実施形態のさらなる詳細を示す。
サーバでの方法は、クライアントに送信されるべき新しいHTTP応答メッセージを検出してもよく(321)、方法は、応答メッセージが遅延可能要求に対する応答であり、したがって同様に遅延可能であるかどうかを判定する(322)。応答が、サーバによって保持されている事前構成されたリスト内のホストに送信された要求メッセージに対するものであるかどうかを確認することによって、応答メッセージが遅延可能であると判定されてもよい(322)。
応答メッセージが遅延可能であると見なされる場合、方法は、遅延可能応答メッセージのキャッシュが所与の制限を超えているかどうかを判定してもよい(323)。キャッシュが所与の制限を超えていない場合、新しい遅延可能応答メッセージは、応答宛先と応答のデータとを含む形式に集約され(324)、キャッシュ内に記憶される(325)。次いで、方法は、この応答メッセージについて終了し(326)、方法は、新しい応答メッセージを検出するために(321)、ループしてもよい。
キャッシュが所与の制限を超えていると判定される場合(323)、キャッシュをクリアするまたはキャッシュ内に空きを作るために、キャッシュされた遅延可能応答データは、バッチ応答メッセージとして送信されてもよい(327)。キャッシュされた応答が添付されるような、遅延不可能応答のように扱われるバッチ応答メッセージを送信するために(327)、特別な応答が行われもよい。キャッシュ内に空きができると、さらなる遅延可能応答データが記憶され得る。
応答メッセージが遅延可能でないと判定される場合(322)、応答メッセージが遅延可能応答メッセージのキャリア応答メッセージとして好適であるかどうかが判定されてもよい(328)。例えば、応答メッセージ内に、1つまたは複数のヘッダにおいて1つまたは複数の遅延可能応答メッセージを搬送するためのスペースがあるかどうかである。十分なスペースがない、または応答メッセージが遅延可能応答メッセージを搬送しない他の理由がある場合、方法は、遅延可能応答メッセージを搬送せずに応答メッセージを送信してもよい(331)。次いで、方法は、この応答メッセージについて終了し(326)、新しい応答メッセージを検出するために(321)、ループしてもよい。
応答メッセージがキャリア応答メッセージとして好適である場合、方法は、キャッシュ内に応答メッセージ・データがあるかどうかを確認してもよい(329)。キャッシュされた応答メッセージ・データがない場合、方法は、応答メッセージを送信してもよい(331)。キャッシュされた応答メッセージ・データがある場合、キャッシュされた応答の集約された形式の宛先およびデータが、キャリア応答メッセージのヘッダ・フィールドに追加される(330)。1つのキャリア・メッセージに複数の遅延可能応答が添付されてもよく、複数の遅延可能応答は、個別のヘッダ、例えば「X-Deferrable-Data」、次いで「X-Deferrable-Data-2」、「X-Deferrable-Data-3」を介して添付されてもよい。
メッセージ応答の1つまたは複数のヘッダ・フィールドに遅延可能応答メッセージ・データが追加されると、応答メッセージが送信されてもよい(331)。次いで、方法は、この応答メッセージについて終了し(326)、新しい応答メッセージを検出するために(321)、ループしてもよい。
図4を参照すると、ブロック図は、クライアント・コンピュータ・システム400におけるユーザ・エージェント130による使用のためにクライアント遅延可能要求ハンドリング・システム155が提供され得る、クライアント・コンピュータ・システム400を示す。
サーバは、少なくとも1つのプロセッサ401、ハードウェア・モジュール、または少なくとも1つのプロセッサ上で実行されるソフトウェア・ユニットであり得る説明された構成要素の機能を実行するための回路を含む。構成要素の機能の一部またはすべての並列処理を可能にする、並列処理スレッドを実行する複数のプロセッサが提供されてもよい。メモリ402は、構成要素の機能性を実行するために、コンピュータ命令403を少なくとも1つのプロセッサ401に提供するように構成されてもよい。クライアント遅延可能要求ハンドリング・システム155は、サーバ遅延可能要求ハンドリング・システム150と併せてクライアント・コンピュータ・システム400で実行されるように、サーバによって提供されてもよい。
クライアント遅延可能要求ハンドリング・システム155は、ネイティブ・ブラウザ・ネットワーク・レベルでまたはクライアント・アプリケーションの機能としてユーザ・エージェント130においてネットワーク要求をインターセプトするための要求インターセプト構成要素411を含んでもよい。クライアント遅延可能要求ハンドリング・システム155は、ネットワーク要求を遅延可能であると識別するための遅延可能要求識別構成要素412を含んでもよい。遅延可能要求識別構成要素412は、要求が遅延可能であり得る宛先ホスト名のサーバによって提供される事前構成されたリストを検索するためのリスト検索構成要素413を含んでもよい。
クライアント遅延可能要求ハンドリング・システム155は、遅延可能ネットワーク要求のデータをクライアント・コンピュータ・システム400におけるローカル遅延可能要求データ・キャッシュ156内に記憶するための遅延可能要求記憶構成要素414と、遅延可能要求のデータをターゲット宛先と要求メッセージ・データとの組合せとして集約するための集約構成要素418とを含んでもよい。
クライアント遅延可能要求ハンドリング・システム155は、好適なキャリア・ネットワーク要求を識別するためのキャリア要求識別構成要素415と、キャッシュ156からの複数の遅延可能要求のそれぞれの集約データをキャリア・ネットワーク要求の複数のヘッダ内に埋め込むためのヘッダ埋め込み構成要素416とを含んでもよい。ヘッダ埋め込み構成要素416は、遅延可能要求データをヘッダ内に埋め込むときに使用するための定義済みヘッダ名をサーバから取得してもよい。
クライアント遅延可能要求ハンドリング・システム155は、キャッシュが既定のサイズに達した時点で、またはユーザ・エージェントから抜けるとき、キャッシュされた遅延可能ネットワーク要求データをバッチ送信するためのバッチ要求送信構成要素417を含んでもよい。
クライアント遅延可能要求ハンドリング・システム155は、キャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク要求に対する応答の埋め込みデータを有するキャリア・ネットワーク応答を受信するためのキャリア応答受信構成要素421と、ヘッダからの埋め込みデータを構文解析して、応答ハンドリング構成要素423によってクライアントにおいてアクションを実行するための別個の応答メッセージにするための応答構文解析構成要素422とを含む、応答キャリア・メッセージにおいて受信された応答をハンドリングするための構成要素も含んでもよい。また、遅延可能ネットワーク要求に対するバッチ応答を受信してハンドリングするために、バッチ応答受信構成要素424が提供されてもよい。
図5を参照すると、ブロック図は、サーバ遅延可能要求ハンドリング・システム150が提供されるサーバ・コンピュータ・システム500を示す。
サーバは、少なくとも1つのプロセッサ501、ハードウェア・モジュール、または少なくとも1つのプロセッサ上で実行されるソフトウェア・ユニットであり得る説明された構成要素の機能を実行するための回路を含む。構成要素の機能の一部またはすべての並列処理を可能にする、並列処理スレッドを実行する複数のプロセッサが提供されてもよい。メモリ502は、構成要素の機能性を実行するために、コンピュータ命令503を少なくとも1つのプロセッサ501に提供するように構成されてもよい。
サーバ遅延可能要求ハンドリング・システム150は、キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有するキャリア・ネットワーク要求を受信するためのキャリア要求受信構成要素521と、ヘッダからの埋め込みデータを構文解析して、サーバ・コンピュータ・システム500における要求ハンドリング構成要素523によってアクションを実行するための別個の要求メッセージにする、要求構文解析構成要素522とを含んでもよい。サーバ遅延可能要求ハンドリング・システム150は、サーバ・コンピュータ・システム500における個々の処理のための遅延可能ネットワーク要求のバッチを受信するためのバッチ要求受信構成要素524を含んでもよい。
サーバ遅延可能要求ハンドリング・システム150は、ネットワーク応答をインターセプトするための応答インターセプト構成要素511と、例えば、リスト検索構成要素513を使用して、応答が遅延可能であり得る宛先ホスト名のサーバによって提供される事前構成されたリストを検索することによって、遅延可能ネットワーク応答を識別するための、遅延可能応答識別構成要素512とを含んでもよい。
サーバ遅延可能要求ハンドリング・システム150は、遅延可能ネットワーク応答のデータをサーバ・コンピュータ・システム500におけるローカル遅延可能応答データ・キャッシュ152内に記憶するための遅延可能応答記憶構成要素514を含んでもよい。集約構成要素518は、遅延可能ネットワーク応答のターゲット宛先と応答メッセージ・データとの遅延可能応答データを、キャッシュ152内に記憶するために集約してもよい。
サーバ遅延可能要求ハンドリング・システム150は、好適なキャリア・ネットワーク応答を識別するためのキャリア応答識別構成要素515と、クライアントに返送するために、遅延可能ネットワーク応答のデータを好適なキャリア・ネットワーク応答のヘッダ内に埋め込むためのヘッダ埋め込み構成要素516とを含んでもよい。
サーバ遅延可能要求ハンドリング・システム150は、サーバにおいてキャッシュが既定のサイズに達した時点で、キャッシュされた遅延可能ネットワーク応答データをバッチ送信するためのバッチ応答送信構成要素517を含んでもよい。
図6は、本発明の一実施形態による、サーバ・コンピュータ・システム400またはクライアント・コンピュータ・システム500に使用されるコンピューティング・システムの構成要素のブロック図を示す。図6が、一実装形態の例示のみを提供するものであり、異なる実施形態が実装され得る環境に関していかなる制限も意味しないことが理解されるべきである。図示されている環境に多くの変更が加えられてもよい。
コンピューティング・システムは、1つまたは複数のプロセッサ602、1つまたは複数のコンピュータ可読RAM604、1つまたは複数のコンピュータ可読ROM606、1つまたは複数のコンピュータ可読記憶媒体608、デバイス・ドライバ612、読取り/書込みドライブまたはインターフェース614、およびネットワーク・アダプタまたはインターフェース616を含むことができ、これらはすべて、通信ファブリック618を介して相互接続されている。通信ファブリック618は、プロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)と、システム・メモリと、周辺デバイスと、システム内の任意の他のハードウェア構成要素との間でデータまたは制御情報あるいはその両方を渡すように設計された任意のアーキテクチャを有するように実装され得る。
1つまたは複数のオペレーティング・システム610、ならびにサーバ遅延可能要求ハンドリング・システム150およびクライアント遅延可能要求ハンドリング・システム155などのアプリケーション・プログラム611は、それぞれのRAM604(典型的にはキャッシュ・メモリを含む)のうちの1つまたは複数を介したプロセッサ602のうちの1つまたは複数による実行のために、コンピュータ可読記憶媒体608のうちの1つまたは複数に記憶される。図示された実施形態では、コンピュータ可読記憶媒体608のそれぞれは、内蔵ハード・ドライブの磁気ディスク記憶デバイス、CD-ROM、DVD、メモリ・スティック、磁気テープ、磁気ディスク、光ディスク、RAM、ROM、EPROM、フラッシュ・メモリなどの半導体記憶デバイス、または、本発明の実施形態によるコンピュータ・プログラムおよびデジタル情報を記憶することができる任意の他のコンピュータ可読記憶媒体とすることができる。
コンピューティング・システムは、1つまたは複数のポータブル・コンピュータ可読記憶媒体626との間で読み書きするためのR/Wドライブまたはインターフェース614も含むことができる。コンピューティング・システム上のアプリケーション・プログラム611は、1つまたは複数のポータブル・コンピュータ可読記憶媒体626に記憶され、それぞれのR/Wドライブまたはインターフェース614を介して読み出され、それぞれのコンピュータ可読記憶媒体608の中にロードされ得る。
コンピューティング・システムは、TCP/IPアダプタ・カードまたはワイヤレス通信アダプタなどのネットワーク・アダプタまたはインターフェース616も含むことができる。コンピューティング・システム上のアプリケーション・プログラム611は、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、または他のワイド・エリア・ネットワークもしくはワイヤレス・ネットワーク)およびネットワーク・アダプタまたはインターフェース616を介して、外部コンピュータまたは外部記憶デバイスからコンピューティング・デバイスにダウンロードされ得る。ネットワーク・アダプタまたはインターフェース616から、プログラムがコンピュータ可読記憶媒体608にロードされてもよい。ネットワークは、銅線、光ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、およびエッジ・サーバを含んでもよい。
コンピューティング・システムは、ディスプレイ画面620、キーボードまたはキーパッド622、およびコンピュータ・マウスまたはタッチパッド624も含むことができる。デバイス・ドライバ612は、画像化のために表示画面620にインターフェースし、英数字入力およびユーザ選択の圧力感知のためにキーボードもしくはキーパッド622、コンピュータ・マウスもしくはタッチパッド624、またはディスプレイ画面620あるいはその組合せにインターフェースする。デバイス・ドライバ612、R/Wドライブまたはインターフェース614、およびネットワーク・アダプタまたはインターフェース616は、コンピュータ可読記憶媒体608またはROM606あるいはその両方に記憶されたハードウェアおよびソフトウェアを備えることができる。
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含んでもよい。
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的に符号化されたデバイス、および上記の任意の好適な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続されてもよい。いくつかの実施形態では、本発明の態様を実行するために、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してもよい。
本明細書では、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本開示の態様を説明している。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実施され得ることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するための手段を作り出すように、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、ならびに動作を示す。これに関して、流れ図またはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、関与する機能性に応じて、1つのステップとして達成されても、同時に、実質的に同時に、部分的にもしくは全体的に時間的に重複する様式で実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定された機能または作用を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
クラウド・コンピューティング
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限の対話で迅速にプロビジョニングおよび解放され得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンドによるネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
特徴は、次の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人間との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数の消費者にサービス提供するようにプール化され、要求に応じて、異なる物理リソースおよび仮想リソースが動的に割当ておよび再割当てされる。消費者は一般に、提供されたリソースの正確な位置について制御も知識も有していないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を特定することが可能であり得るという点で、位置の独立性があるといえる。
迅速な柔軟性:機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングして、急速にスケール・アウトし、迅速に解放して急速にスケール・インすることができる。消費者にとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダと消費者との両方に透明性がもたらされる。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人間との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数の消費者にサービス提供するようにプール化され、要求に応じて、異なる物理リソースおよび仮想リソースが動的に割当ておよび再割当てされる。消費者は一般に、提供されたリソースの正確な位置について制御も知識も有していないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を特定することが可能であり得るという点で、位置の独立性があるといえる。
迅速な柔軟性:機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングして、急速にスケール・アウトし、迅速に解放して急速にスケール・インすることができる。消費者にとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダと消費者との両方に透明性がもたらされる。
サービス・モデルは、次の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、消費者に提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定の想定される例外として、消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、消費者に提供される機能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションを制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行することができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、消費者に提供される機能である。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーク構成要素(例えば、ホスト・ファイアウォール)を限定的に制御する。
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、消費者に提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定の想定される例外として、消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、消費者に提供される機能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションを制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行することができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、消費者に提供される機能である。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーク構成要素(例えば、ホスト・ファイアウォール)を限定的に制御する。
展開モデルは、次の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
コミュニティ・クラウド:クラウド・インフラストラクチャは、複数の組織によって共有され、関心事項(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
コミュニティ・クラウド:クラウド・インフラストラクチャは、複数の組織によって共有され、関心事項(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図7を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信してもよい。これらは、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化されてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。図7に示すコンピューティング・デバイス54A~54Nのタイプが例示のみを意図していること、およびコンピューティング・ノード10およびクラウド・コンピューティング環境50が、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
次に図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供される1組の機能抽象化層が示されている。図8に示す構成要素、層、および機能が例示のみを意図しており、本発明の実施形態がそれらに限定されないことが予め理解されるべきである。図示のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶デバイス65、ならびにネットワークおよびネットワーキング構成要素66が含まれる。いくつかの実施形態では、ソフトウェア構成要素には、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が含まれる。
仮想化層70は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供されてもよい。
一例では、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド消費者およびタスクのための本人確認、ならびにデータおよび他のリソースのための保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるようなクラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行85は、SLAに従って将来要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびに要求遅延処理96が含まれる。
本発明のコンピュータ・プログラム製品は、コンピュータ可読プログラム・コードが記憶された1つまたは複数のコンピュータ可読ハードウェア記憶デバイスを備え、前記プログラム・コードは、本発明の方法を実施するために1つまたは複数のプロセッサによって実行可能である。
本発明のコンピュータ・システムは、1つまたは複数のプロセッサ、1つまたは複数のメモリ、および1つまたは複数のコンピュータ可読ハードウェア記憶デバイスを備え、前記1つまたは複数のハードウェア記憶デバイスは、本発明の方法を実施するために1つまたは複数のメモリを介して1つまたは複数のプロセッサによって実行可能なプログラム・コードを含む。
本発明の様々な実施形態の説明を例示の目的で提示してきたが、この説明は、網羅的であることも、開示された実施形態に限定されることも意図していない。当業者には、説明した実施形態の範囲および思想から逸脱することなく多くの修正形態および変形形態が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用例、もしくは市場で見られる技術を超える技術的な改良を最もよく説明するように、または本明細書で開示された実施形態を当業者が理解することが可能になるように選択されたものである。
本発明の範囲から逸脱することなく、前述のものに対して改良および修正を行うことができる。
Claims (25)
- コンピュータ実施方法であって、
クライアントのユーザ・エージェントによって、ネットワーク要求をインターセプトして、遅延可能であると識別することと、
リモート・サーバに送信するために、前記遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むことと
を含む、コンピュータ実施方法。 - 前記遅延可能ネットワーク要求の前記データを、前記遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データの形式で、前記クライアントにおけるローカル・キャッシュ内に記憶することと、
好適なキャリア・ネットワーク要求を識別することと、
前記キャリア・ネットワーク要求の前記ヘッダ内に前記遅延可能要求の前記集約データを埋め込むことと
をさらに含む、請求項1に記載のコンピュータ実施方法。 - 複数の遅延可能要求のそれぞれの前記集約データを前記キャリア・ネットワーク要求の複数のヘッダのうちの1つに埋め込むことをさらに含む、請求項2に記載のコンピュータ実施方法。
- 前記好適なキャリア・ネットワーク要求が、遅延可能ではなく、前記遅延可能要求データのための十分なスペースを有する、請求項1に記載のコンピュータ実施方法。
- ネットワーク要求を遅延可能であると識別することが、ネットワーク要求メッセージをインターセプトすることと、前記要求ネットワーク・メッセージが既定の遅延可能な宛先のリスト内のホストに送信されているかどうかを判定することとを含む、請求項1に記載のコンピュータ実施方法。
- 遅延可能要求データを前記ヘッダ内に埋め込むときに使用するための定義済みヘッダ名をサーバから取得することをさらに含む、請求項1に記載のコンピュータ実施方法。
- 前記キャッシュが既定のサイズに達した時点で、または前記ユーザ・エージェントから抜けるとき、キャッシュされた遅延可能ネットワーク要求データをバッチ送信することをさらに含み、バッチ送信が、キャッシュされた遅延可能ネットワーク要求をキャリア・ネットワーク要求として選択し、前記キャリア・ネットワーク要求の1つまたは複数のヘッダに他のキャッシュされた遅延可能要求データを追加する、請求項2に記載のコンピュータ実施方法。
- 前記キャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク要求への応答の埋め込みデータを有するキャリア・ネットワーク応答を受信することと、
前記ヘッダからの前記埋め込みデータを構文解析して、前記クライアントにおいてアクションを実行するための別個の応答メッセージにすることと
を含む、請求項1に記載のコンピュータ実施方法。 - 好適なキャリア・ネットワーク・メッセージに追加された遅延可能ネットワーク要求ごとに、前記遅延可能ネットワーク要求を進行中とマーク付けすることと、正常な応答が受信されたとき、前記遅延可能ネットワーク要求を更新することと
をさらに含む、請求項1に記載のコンピュータ実施方法。 - コンピュータ実施方法であって、
サーバにおいて前記キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有するキャリア・ネットワーク要求を受信することと、
前記ヘッダからの前記埋め込みデータを構文解析して、前記サーバにおいてアクションを実行するための別個の要求メッセージにすることと
を含む、コンピュータ実施方法。 - 遅延可能ネットワーク要求の前記埋め込みデータが、前記遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データであり、前記埋め込みデータを構文解析することが、前記ターゲット宛先への別個の要求メッセージを形成する、請求項10に記載のコンピュータ実施方法。
- 遅延可能ネットワーク応答をインターセプトして識別することと、
クライアントに返送するために、好適なキャリア・ネットワーク応答のヘッダ内に前記遅延可能ネットワーク応答のデータを埋め込むことと
をさらに含む、請求項10に記載のコンピュータ実施方法。 - 前記遅延可能ネットワーク応答の前記データを、前記遅延可能ネットワーク応答のターゲット宛先と応答メッセージ・データとの集約データの形式で、前記サーバにおけるローカル・キャッシュ内に記憶することと、
好適なキャリア・ネットワーク応答を識別することと、
前記キャリア・ネットワーク応答の前記ヘッダ内に前記遅延可能応答の前記集約データを埋め込むことと
をさらに含む、請求項12に記載のコンピュータ実施方法。 - 複数の遅延可能応答のそれぞれの前記集約データを前記キャリア・ネットワーク要求の複数のヘッダのうちの1つに埋め込むことをさらに含む、請求項13に記載のコンピュータ実施方法。
- キャリア・ネットワーク要求の前記ヘッダに遅延可能要求データを埋め込むときにユーザ・エージェントによって使用するための定義済みヘッダ名を前記サーバから送信することをさらに含む、請求項10に記載のコンピュータ実施方法。
- 前記サーバでの個々の処理のための遅延可能ネットワーク要求のバッチを、キャリア・ネットワーク要求としての遅延可能ネットワーク要求と、前記キャリア・ネットワーク要求の1つまたは複数のヘッダにおいて提供される他のキャッシュされた遅延可能要求データとの形式で、受信することをさらに含む、請求項10に記載のコンピュータ実施方法。
- コンピュータ・プログラム製品であって、
1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令とを備え、前記プログラム命令が、
ネットワーク要求および遅延可能要求をインターセプトするためのプログラム命令と、
前記インターセプトされたネットワーク要求が遅延可能であると識別するためのプログラム命令と、
リモート・サーバに送信するために、前記遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むためのプログラム命令と
を含む、コンピュータ・プログラム製品。 - 前記コンピュータ・プログラム製品が、前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令をさらに備えるクライアント・システムであり、前記プログラム命令が、
前記遅延可能ネットワーク要求の前記データを、前記遅延可能ネットワーク要求のターゲット宛先と要求メッセージ・データとの集約データの形式で、前記クライアントにおけるローカル・キャッシュ内に記憶するためのプログラム命令と、
好適なキャリア・ネットワーク要求を識別するための構成要素を識別するためのプログラム命令と
をさらに含む、請求項17に記載のコンピュータ・プログラム製品。 - 前記1つまたは複数のコンピュータ可読記憶媒体に記憶された前記プログラム命令が、
前記キャッシュが既定のサイズに達した時点で、または前記ユーザ・エージェントから抜けるとき、キャッシュされた遅延可能ネットワーク要求データを送信するためのプログラム命令と、
遅延可能ネットワーク要求に対するバッチ応答を受信するためのプログラム命令と
を含む、請求項18に記載のコンピュータ・プログラム製品。 - 前記1つまたは複数のコンピュータ可読記憶媒体に記憶された前記プログラム命令が、
前記キャリア・ネットワーク応答のヘッダ内に遅延可能ネットワーク要求に対する応答の埋め込みデータを有するキャリア・ネットワーク応答を受信するためのプログラム命令と、
前記ヘッダからの前記埋め込みデータを構文解析して、前記クライアントにおいてアクションを実行するための別個の応答メッセージにするためのプログラム命令と
をさらに含む、請求項17に記載のコンピュータ・プログラム製品。 - コンピュータ・システムであって、
プロセッサとメモリとを有するサーバ・システムを備え、前記メモリが、構成要素、すなわち、
キャリア・ネットワーク要求のヘッダ内に遅延可能ネットワーク要求の埋め込みデータを有する前記キャリア・ネットワーク要求を受信するためのキャリア要求受信構成要素と、
前記ヘッダからの前記埋め込みデータを構文解析して、前記サーバにおいてアクションを実行するための別個の要求メッセージにするための要求構文解析構成要素と
の機能を実行するためのコンピュータ・プログラム命令を前記プロセッサに提供するように構成される、コンピュータ・システム。 - 前記サーバ・システムが、
ネットワーク応答をインターセプトするための応答インターセプト構成要素と、遅延可能ネットワーク応答を識別するための遅延可能応答識別構成要素と、
クライアントに返送するために、前記遅延可能ネットワーク応答のデータを好適なキャリア・ネットワーク応答のヘッダ内に埋め込むためのヘッダ埋め込み構成要素と
を含む、請求項21に記載のコンピュータ・システム。 - 前記サーバ・システムが、
前記遅延可能ネットワーク応答の前記データを、前記遅延可能ネットワーク応答のターゲット宛先と応答メッセージ・データとの集約データの形式で、前記サーバにおけるローカル・キャッシュ内に記憶するための遅延可能応答記憶構成要素と、
好適なキャリア・ネットワーク応答を識別するためのキャリア応答識別構成要素と
を含む、請求項22に記載のコンピュータ・システム。 - 前記サーバ・システムが、
前記サーバでの個々の処理のための遅延可能ネットワーク要求のバッチを受信するためのバッチ要求受信構成要素と、
前記サーバにおいて前記キャッシュが既定のサイズに達した時点で、キャッシュされた遅延可能ネットワーク応答データをバッチ送信するためのバッチ応答送信構成要素と
を含む、請求項21に記載のコンピュータ・システム。 - 遅延可能ネットワーク要求をハンドリングするためのシステムであって、
プロセッサとメモリとを有するクライアント・システムを備え、前記メモリが、構成要素、すなわち、
ネットワーク要求をインターセプトするための要求インターセプト構成要素と、ネットワーク要求を遅延可能であると識別するための遅延可能要求識別構成要素と、
リモート・サーバに送信するために、前記遅延可能ネットワーク要求のデータを好適なキャリア・ネットワーク要求のヘッダ内に埋め込むためのヘッダ埋め込み構成要素と
の機能を実行するためのコンピュータ・プログラム命令を前記プロセッサに提供するように構成される、システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/082,121 US11936763B2 (en) | 2020-10-28 | 2020-10-28 | Handling deferrable network requests |
US17/082,121 | 2020-10-28 | ||
PCT/IB2021/059396 WO2022090847A1 (en) | 2020-10-28 | 2021-10-13 | Handling deferrable network requests |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023547048A true JP2023547048A (ja) | 2023-11-09 |
Family
ID=81257812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023521334A Pending JP2023547048A (ja) | 2020-10-28 | 2021-10-13 | 遅延可能ネットワーク要求をハンドリングすること |
Country Status (6)
Country | Link |
---|---|
US (1) | US11936763B2 (ja) |
JP (1) | JP2023547048A (ja) |
CN (1) | CN116368786A (ja) |
DE (1) | DE112021004695T5 (ja) |
GB (1) | GB2615045A (ja) |
WO (1) | WO2022090847A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11936763B2 (en) | 2020-10-28 | 2024-03-19 | International Business Machines Corporation | Handling deferrable network requests |
US11431755B1 (en) * | 2021-07-16 | 2022-08-30 | Dope.Security Inc. | Endpoint-based security |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8204082B2 (en) * | 2000-06-23 | 2012-06-19 | Cloudshield Technologies, Inc. | Transparent provisioning of services over a network |
CN100514968C (zh) | 2005-10-11 | 2009-07-15 | 华为技术有限公司 | 离线消息的处理方法和即时消息服务器 |
US7809818B2 (en) * | 2007-03-12 | 2010-10-05 | Citrix Systems, Inc. | Systems and method of using HTTP head command for prefetching |
US7698462B2 (en) * | 2007-10-22 | 2010-04-13 | Strongmail Systems, Inc. | Systems and methods for adaptive communication control |
US20110066676A1 (en) * | 2009-09-14 | 2011-03-17 | Vadim Kleyzit | Method and system for reducing web page download time |
US8407351B2 (en) * | 2009-11-25 | 2013-03-26 | Nokia Corporation | Method and apparatus for ensuring transport of user agent information |
US8676978B2 (en) * | 2010-08-03 | 2014-03-18 | Facebook, Inc. | Efficient storage and retrieval of resources for rendering structured documents |
US9531579B2 (en) | 2010-08-10 | 2016-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Session control for media stream transmission |
US20120151479A1 (en) | 2010-12-10 | 2012-06-14 | Salesforce.Com, Inc. | Horizontal splitting of tasks within a homogenous pool of virtual machines |
US9438494B2 (en) * | 2011-12-28 | 2016-09-06 | Avvasi Inc. | Apparatus and methods for optimizing network data transmission |
WO2014062921A1 (en) | 2012-10-19 | 2014-04-24 | Interdigital Patent Holdings, Inc. | Multi-hypothesis rate adaptation for http streaming |
US20140188970A1 (en) * | 2012-12-29 | 2014-07-03 | Cloudcar, Inc. | System and method enabling service and application roaming |
US9942299B2 (en) | 2013-03-15 | 2018-04-10 | Yottaa Inc. | System and method for managing multiple variants of an HTTP object |
US9241044B2 (en) * | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
WO2015041711A1 (en) | 2013-09-20 | 2015-03-26 | Yottaa, Inc. | Systems and methods for managing loading priority or sequencing of fragments of a web object |
CN108476244A (zh) | 2016-01-13 | 2018-08-31 | 三星电子株式会社 | 通过利用网络延迟来缩短页面加载时间的方法和系统 |
US10455040B2 (en) | 2017-01-30 | 2019-10-22 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
US11573863B2 (en) * | 2019-04-08 | 2023-02-07 | Kyndryl, Inc. | Virtual machine backup and restore coordinator |
US11936763B2 (en) | 2020-10-28 | 2024-03-19 | International Business Machines Corporation | Handling deferrable network requests |
-
2020
- 2020-10-28 US US17/082,121 patent/US11936763B2/en active Active
-
2021
- 2021-10-13 GB GB2306533.7A patent/GB2615045A/en active Pending
- 2021-10-13 JP JP2023521334A patent/JP2023547048A/ja active Pending
- 2021-10-13 DE DE112021004695.0T patent/DE112021004695T5/de active Pending
- 2021-10-13 CN CN202180069483.9A patent/CN116368786A/zh active Pending
- 2021-10-13 WO PCT/IB2021/059396 patent/WO2022090847A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022090847A1 (en) | 2022-05-05 |
CN116368786A (zh) | 2023-06-30 |
DE112021004695T5 (de) | 2023-07-06 |
US20220131959A1 (en) | 2022-04-28 |
GB2615045A (en) | 2023-07-26 |
US11936763B2 (en) | 2024-03-19 |
GB202306533D0 (en) | 2023-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9973573B2 (en) | Concurrency reduction service | |
US9590859B2 (en) | Discovering resources of a distributed computing environment | |
US10044837B2 (en) | Generation and distribution of named, definable, serialized tokens | |
US11582285B2 (en) | Asynchronous workflow and task api for cloud based processing | |
US10558710B2 (en) | Sharing server conversational context between multiple cognitive engines | |
JP2023547048A (ja) | 遅延可能ネットワーク要求をハンドリングすること | |
US11627169B2 (en) | Network-based Media Processing (NBMP) workflow management through 5G Framework for Live Uplink Streaming (FLUS) control | |
US20180046393A1 (en) | Dynamic compression for runtime services | |
US10693939B2 (en) | Providing modified protocol responses | |
US20230164210A1 (en) | Asynchronous workflow and task api for cloud based processing | |
US10554770B2 (en) | Dynamic cognitive optimization of web applications | |
JP7321368B2 (ja) | 第3世代パートナーシッププロジェクト(3gpp)ライブアップリンクストリーミングのためのフレームワーク(flus)シンク機能を決定するための方法、コンピュータシステムおよびコンピュータプログラム | |
JP2024500420A (ja) | スケーラブルアプリケーションにおいて行われる要求を調整すること | |
US11514016B2 (en) | Paging row-based data stored as objects | |
US20230409628A1 (en) | Static and dynamic nbmp function image retrieval and scale ranking | |
US20230217471A1 (en) | Media sink capabilities description | |
JP2023047323A (ja) | スケーリング時にアプリケーションインスタンスを構成する為の、コンピュータに実装される方法、コンピュータシステム及びコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231026 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240319 |