(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行される方法であって、
クライアント装置からアプリケーション・プログラミング・インターフェース（ＡＰＩ）コールに伴うステアリング要求を受信するステップと、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にしながら前記クライアント装置とＡＰＩ処理システムとの間の仲介者として働く加速システムを到達可能性選択基準であって、前記クライアント装置が、前記加速システムに関連付けられるインターネット・サービス・プロバイダ（ＩＳＰ）、または該ＩＳＰとコンテンツ配信ネットワークとのインターネット・トラフィックの交換を可能とするインターネット交換ポイントの少なくとも１つにアクセス可能であることを定める到達可能性選択基準に基づいて選択するステップと、
前記クライアント装置を前記加速システムへ経路付けするステップと
を含む方法。
【請求項２】
前記加速システムを前記到達可能性選択基準に基づいて選択するステップは、前記加速システムは前記クライアント装置によりアクセス可能であると判断するステップを含む、請求項１記載の方法。
【請求項３】
前記加速システムは前記ＩＳＰ内に組み込まれ、前記ＩＳＰと提携するクライアント装置のみによりアクセス可能である、請求項２記載の方法。
【請求項４】
前記加速システムは既に処理が終わったＡＰＩコールが処理されるのも可能にし、前記加速システムを選択するステップは、前記既に処理が終わったＡＰＩコールの処理に関連する待ち時間に更に基づいている、請求項１記載の方法。
【請求項５】
第２のＡＰＩコールを処理することに関連した測定データであって前記クライアント装置に関連する一意の識別子を指定する測定データを受信するステップと、
前記測定データに基づいて、前記クライアント装置と前記加速システムの間の接続が開始された時から前記第２のＡＰＩコールに関連する応答が前記クライアント装置により受信された時までの総時間を表す待ち時間を算出するステップと、
解釈器から解釈器ＩＰアドレス及び前記一意の識別子を含む要求を受信するステップと、
前記要求に含まれる前記一意の識別子を前記測定データにより指定された前記一意の識別子と照合して前記待ち時間は前記解釈器ＩＰアドレスに関連すると判断するステップと
を更に含む、請求項１記載の方法。
【請求項６】
前記クライアント装置から第３のＡＰＩコールに関連し前記解釈器ＩＰアドレスを含む第２のステアリング要求を受信するステップと、
前記第３のＡＰＩコールが処理されるのを可能にしながら前記クライアント装置と前記ＡＰＩ処理システムとの間の仲介者として働く前記加速システムを前記解釈器ＩＰアドレスに関連した前記待ち時間に基づいて選択するステップと
を更に含む、請求項５記載の方法。
【請求項７】
前記解釈器ＩＰアドレスは、前記クライアント装置がそれを通してインターネット・サービスに前記ＩＳＰに関連し、前記解釈器ＩＰアドレスは、前記クライアント装置に関連したクライアントＩＰアドレスとは異なる、請求項６記載の方法。
【請求項８】
前記加速システムを選択するステップは、前記加速システムと前記ＡＰＩ処理システムの間の通信接続内の混雑レベルに更に基づいている、請求項１記載の方法。
【請求項９】
前記加速システムに関連した１つ以上の測定実行から生成された測定データを前記クライアント装置から受信するステップ
を更に含む、請求項１記載の方法。
【請求項１０】
命令群を記憶するコンピュータ読取可能媒体であって、プロセッサにより実行された時に前記命令群は前記プロセッサに
クライアント装置からアプリケーション・プログラミング・インターフェース（ＡＰＩ）コールに伴うステアリング要求を受信することと、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にしながら前記クライアント装置とＡＰＩ処理システムとの間の仲介者として働く加速システムを到達可能性選択基準であって、前記クライアント装置が、前記加速システムに関連付けられるインターネット・サービス・プロバイダ（ＩＳＰ）、または該ＩＳＰとコンテンツ配信ネットワークとのインターネット・トラフィックの交換を可能とするインターネット交換ポイントの少なくとも１つにアクセス可能であることを定める到達可能性選択基準に基づいて選択することと、
前記クライアント装置を前記加速システムへ経路付けすることと
を実行させる、コンピュータ読取可能媒体。
【請求項１１】
アプリケーション・プログラミング・インターフェース（ＡＰＩ）コールが処理されるのを可能にしながらクライアント装置とＡＰＩ処理システムとの間の仲介者としてそれぞれ働く複数の加速システムと、
１組の選択基準に基づいて前記クライアント装置を前記複数の加速システムのうちの１つへ経路付けするよう構成されたクライアント・ステアリングシステムと
を備え、
前記クライアント・ステアリングシステムは
前記クライアント装置からＡＰＩコールに伴うステアリング要求を受信し、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にするための前記複数の加速システムから１つの加速システムを到達可能性選択基準であって、前記クライアント装置が、前記加速システムに関連付けられるインターネット・サービス・プロバイダ（ＩＳＰ）、または該ＩＳＰとコンテンツ配信ネットワークとのインターネット・トラフィックの交換を可能とするインターネット交換ポイントの少なくとも１つにアクセス可能であることを定める到達可能性選択基準に基づいて選択し、
前記クライアント装置を前記１つの加速システムへ経路付けする
ように構成された選択エンジンを備える、コンピュータ環境。
【請求項１２】
前記加速システムへ経路付けされたことに応答して、前記クライアント装置は前記加速システムとの伝送制御プロトコル（ＴＣＰ）応答確認及びトランスポート層セキュリティー（ＴＬＳ）応答確認を実行する、請求項１１記載のコンピュータ環境。
【請求項１３】
前記ＴＣＰ及びＴＬＳ応答確認に続いて、前記クライアント装置は前記ＡＰＩコールを前記加速システムへ送信し、前記加速システムは前記ＡＰＩコールを前記ＡＰＩ処理システムへ転送する、請求項１２記載のコンピュータ環境。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２０１７年６月２０日に出願された米国特許出願第１５／６２８５０９号の優先権の利益を主張するものであり、この特許出願を本明細書に引用する。
【技術分野】
【０００２】
本発明は概ね、クラウドベース・コンピューティングに、より具体的にはアプリケーション・プログラミング・インターフェース（ＡＰＩ）コール処理を可能にするための加速システムに関する。
【背景技術】
【０００３】
多くのインターネットベース・サービスはクラウドベース・システム上で稼働している。クラウドベース・システムは通常、地理的に分布するサーバーを含み、そのためクラウドベース・システム上で稼働するサービスのクライアントはクラウドベース・システムの最も近いサーバーへ経路付けされる。幾つかの場合、クラウドベース・システム内の最も近いサーバーでさえクライアントからかなりの距離にある。
【０００４】
一般に、クライアントが経路付けされたサーバーから離れているほど、サーバーとクライアント間の通信往復は遅くなり、通信待ち時間が多い。また、サーバーとの通信接続を確立するために、クライアントは、転送制御プロトコル（ＴＣＰ）応答確認などの幾つかの通信応答確認を行わなければならない。また、クライアントはサーバーとトランスポート層セキュリティー（ＴＬＳ）応答確認を行い、安全な通信セッションを確立する。ＴＬＳ応答確認は通常、クライアントとサーバー間の２往復を必要とする。
【０００５】
クライアントが経路付けされたサーバーから離れているほど、これらの応答確認を行いそれによりクライアントとサーバー間の接続を確立するのに要する時間が長くなる。従って、クライアントがサーバーからかなりの距離にある場合、クラウドベース・システムを介したインターネットベース・サービスのアクセス機能性は非常に遅くなり、望ましくないユーザ体験をもたらす場合がある。
【発明の概要】
【０００６】
本発明の１つの実施形態は、クライアント装置を適切なＡＰＩエッジゲートウェイにステアリングする（向ける）ための方法を含む１つの方法を明らかにする。その１つの方法は、クライアント装置からアプリケーション・プログラミング・インターフェース（ＡＰＩ）コールに伴うステアリング要求を受信することを含む。また、その方法は、ステアリング要求の受信に応答して、ＡＰＩコールが処理されるのを可能にしながらクライアント装置とＡＰＩ処理システムとの間の仲介者として働く加速システムを到達可能性選択基準に基づいて選択することと、クライアント装置を加速システムへ経路付けすることとを含む。
【０００７】
開示された方法の１つの利点は、加速システムがクライアント装置とＡＰＩ処理システムとの間の仲介者として働く時、ＡＰＩコールを処理するための往復時間が低減されることである。特に、クライアント装置と加速システムの間の通信接続を確立するために必要ないずれの往復時間も、クライアント装置とＡＰＩ処理システムの間で確立される必要のある接続に比べて短い。
【図面の簡単な説明】
【０００８】
【図１】本発明の１つ以上の態様を実施するよう構成されたシステム環境を例示する。
【図２】本発明の１つの実施形態に係る、図１の構成要素間の相互作用を例示する相互作用図である。
【図３】本発明の１つ以上の態様を実施するよう構成されたステアリングシステム環境を例示する。
【図４】本発明の１つの実施形態に係る、一意の識別子を使用する図３の構成要素間の相互作用を例示する相互作用図である。
【図５】本発明の別の実施形態に係る、ＡＰＩアクセス終点にクライアントを向けるための方法ステップのフロー図である。
【発明を実施するための形態】
【０００９】
以下の説明において、本発明のより完全な理解を提供するために多数の具体的詳細が明らかにされる。しかし、これらの具体的詳細の１つ以上を欠いて本発明を実施してもよいことは当業者には明白であろう。他には、本発明を不明瞭にしないため、周知の特徴は記載されていない。
【００１０】
図１は本発明の１つ以上の態様を実施するよう構成されたシステム環境１００を例示する。図示のように、システム環境１００はＡＰＩ処理システム１０２と、クライアント１０４（０）〜１０４（Ｎ）（「複数のクライアント１０４」と総称され、「クライアント１０４」と個別に呼ばれる）と、加速システム１０６（０）〜１０６（Ｎ）（「複数の加速システム１０６」と総称され、「加速システム１０６」と個別に呼ばれる）とを含む。
【００１１】
ＡＰＩ処理システム１０２、複数の加速システム１０６、及び複数のクライアント１０４は通信ネットワーク（不図示）を介して通信する。通信ネットワークは、ルーター及びスイッチなどのデータ通信を可能にするよう構成された複数のネットワーク通信システムを含む。当業者は、通信ネットワークを構築するために、周知のインターネット通信ネットワークを配備するのに実施される技術を含め多くの実用上実施可能な技術が存在することを認めるであろう。
【００１２】
ＡＰＩ処理システム１０２は世界中に分布する相互接続されたノードのネットワークを含み、システム環境１００に関連するデータを受信、送信、処理、及び／又は記憶する。相互接続されたノードは、これらの所望の機能を実行するためにソフトウェア、ファームウェア、及びハードウェアの適切な組合せを含んでもよい。特に、ＡＰＩ処理システム１０２は、同じ場所にあっても、或いは物理的に分布していてもよい複数の計算機を含む。例えば、これらの計算機は１つ以上の汎用ＰＣ、マッキントッシュ、ワークステーション、リナックス（登録商標）・ベースのコンピュータ、サーバーコンピュータ、１つ以上のサーバープール、又は任意の他の適切な装置を含んでよい。これらの計算機は、対応するアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して遠隔アクセス可能な１つ以上のプログラムを記憶し、実行する。幾つかの実施形態では、ＡＰＩ処理システム１０２はコンピューティング資源を外部実体に料金と交換で提供する。このような実体はＡＰＩ処理システム１０２の一部をシステム設定し、その実体のクライアントは、ＡＰＩ処理システム１０２のシステム設定された部分にアクセスしてその実体に関連する仕事を実行する。
【００１３】
複数のクライアント１０４は１つ以上の物理的位置にある１つ以上の計算機システムを含む。各計算機システムは任意の適切な入力装置（例えば、キーパッド、タッチスクリーン、マウス、又は情報を受け付けうる他の装置）、出力装置、大容量記憶媒体、又はデータを受信、処理、記憶、及び通信するための他の適切な構成要素を含んでよい。入力装置と出力装置の両方が、磁気コンピュータディスク、ＣＤ−ＲＯＭなど固定された又は取り外し可能な記憶媒体を含んでもよい。各計算機システムはパーソナルコンピュータ、ワークステーション、ネットワークコンピュータ、キオスク、無線データポート、タブレットコンピュータ、これら又は他の装置内の１つ以上のプロセッサ、又は任意の他の適切な処理装置を含んでよい。
【００１４】
各クライアント１０４は計算機システム、セットトップボックス、携帯電話などの携帯機器、又は任意の他の実用上実施可能でネットワーク接続可能な計算プラットホームを備えてもよい。１つの実施形態では、クライアント１０４は、映像内容を表示し音響出力を生成するための表示装置及びスピーカー装置に結合されるか又はを含む。各クライアント１０４は、ある仕事のためにＡＰＩ処理システム１０２に頼る計算機ハードウェア及び／又は計算機ソフトウェアを含む。
【００１５】
特に、クライアント１０４は、通信ネットワークを介してＡＰＩ処理システム１０２と通信し様々な仕事を行う１つ以上のクラウドベース・アプリケーションを実行する。１つの実施形態では、クラウドベース・アプリケーションは、要求を処理するのに必要な処理基盤を備えたＡＰＩ処理システム１０２の一部に要求を発行することで働く。要求を受信したことに応答して、ＡＰＩ処理システム１０２はその要求を処理し、クラウドベース・アプリケーションに送り返す出力データを生成する。クライアント１０４上で実行されているクラウドベース・アプリケーションと遠隔サーバーとの間のこの往復は、ＡＰＩコール往復と呼ばれる。一般に、クライアント１０４がＡＰＩ処理システム１０２の該一部から離れているほど、ＡＰＩコール往復の待ち時間が多い。また、要求を処理するＡＰＩ処理システム１０２の該一部の混雑度が高いほど、ＡＰＩコール往復の待ち時間が多い。
【００１６】
加速システム１０６はＡＰＩ処理システム１０２と複数のクライアント１０４との間の仲介者として働き、ＡＰＩコール往復待ち時間を低減する。複数の加速システム１０６は世界中に分布し複数のクライアント１０４とＡＰＩ処理システム１０２と間の仲介者としてそれぞれ働く相互接続されネットワークをなす複数のシステムを含む。特定の加速システム１０６が特定のクライアント１０４とネットワーク接続を確立し、その接続を介してＡＰＩコールを処理するための要求を受信する。ＡＰＩコールに関連するプログラミング機能はＡＰＩ処理システム１０２内に構成されている。加速システム１０６は、ＡＰＩ処理システム１０２との接続を介してＡＰＩコールの処理を可能にする。
【００１７】
加速システム１０６がＡＰＩ処理システム１０２とクライアント１０４との間の仲介者として働く時、少なくとも２つの理由でＡＰＩコール往復時間は低減される。第１に、幾つかの実施形態では、加速システム１０６は一般的にＡＰＩ処理システム１０２に比べてクライアント１０４に物理的に近い。従って、クライアント１０４と加速システム１０６の間の通信接続を確立するために必要ないずれの往復時間も、クライアント１０４とＡＰＩ処理システム１０２の間で確立される必要のある接続に比べて短い。第２に、幾つかの実施形態では、加速システム１０６が複数のクライアント１０４からの多量の要求を有しており、加速システム１０６はＡＰＩ処理システム１０２との持続的で確立された接続を有する。従って、ＡＰＩ処理システム１０２との接続は各ＡＰＩコールに対して確立される必要がない。
【００１８】
図２は本発明の１つの実施形態に係る、図１の構成要素間の相互作用を例示する相互作用図である。特に、クライアント１０４と加速システム１０６は伝送制御プロトコル（ＴＣＰ）応答確認を実行する（２０２）。ＴＣＰ応答確認は、クライアント１０４と加速システム１０６が交渉し相互通信するためのＴＣＰ通信セッションを開始するための機構である。クライアント１０４と加速システム１０６はトランスポート層セキュリティー（ＴＬＳ）応答確認を実行する（２０４）。ＴＬＳ応答確認は、クライアント１０４と加速システム１０６が安全な通信セッションを確立するのに必要なセキュリティーキーを交換するための機構である。
【００１９】
安全な通信セッションが確立されると直ぐ、クライアント１０４は特定のＡＰＩコールを処理するためのハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を確立された接続を介して送信する（２０６）。加速システム１０６はＡＰＩコールを処理するためのＨＴＴＰ要求をＡＰＩ処理システム１０２へ転送する（２０８）。１つの実施形態では、加速システム１０６は、順にＡＰＩ処理システム１０２に転送される複数のＨＴＴＰ要求を管理する。これらの要求の送信及び／又は順序付けを管理するために、加速システム１０６はこれらの要求をＨＴＴＰ／２を使用して多重化する。ＡＰＩ処理システム１０２はＡＰＩコールを処理し、処理結果をＨＴＴＰ応答に入れて加速システム１０６に送信する（２１０）。加速システム１０６はそのＨＴＴＰ応答をクライアント１０４に転送する（２１２）。
【００２０】
ＴＣＰ応答確認開始時とクライアント１０４によるＨＴＴＰ応答受信時との間の継続時間がＡＰＩコール往復時間である。１つの実施形態では、このＡＰＩコール往復時間はクライアント１０４が直接ＡＰＩ処理システム１０２と通信する場合より少ない。ＡＰＩコール往復時間は、１つにはＴＣＰ応答確認及びＴＬＳ応答確認実行時のクライアント１０４と加速システム１０６の間の通信の少ない待ち時間のために少ない。
【００２１】
図３は本発明の１つ以上の態様を実施するよう構成されたステアリングシステム環境３００を例示する。システム環境３００はＡＰＩエッジゲートウェイ３０２、クライアント３０４、測定システム３０６、及びクライアント・ステアリングシステム３０８を含む。
【００２２】
ＡＰＩエッジゲートウェイ３０２は、クライアント３０４によりアクセスされうる、特定のＡＰＩコールを処理するための異なるシステムを含む。例示された実施形態では、ＡＰＩエッジゲートウェイ３０２は、複数の組み込み加速システム３２０（「加速システム３２０」と個別に呼ばれる）、複数のインターネット交換（ＩＸ）加速システム３２２（「加速システム３２２」と個別に呼ばれる）、及び図１のＡＰＩ処理システム１０２を含む。
【００２３】
複数の組み込み加速システム３２０と複数のＩＸ加速システム３２２は地理的に分布する多くの加速システム１０６を含み、ＡＰＩ処理システム１０２と連携してＡＰＩコールの処理を可能にする。各組み込み加速システム３２０は、ＩＳＰに関連するネットワーク内に組み込まれた加速システム１０６である。１つの実施形態では、加速システム３２０はＩＳＰに内在するので、加速システム３２０はそのＩＳＰと提携及び／又は契約するクライアントのみによりアクセス可能である。各ＩＸ加速システム３２２は、インターネット交換ポイント内で又はと連携してＩＳＰと無関係に働く加速システム１０６である。インターネット交換ポイントは、ＩＳＰとコンテンツ配信ネットワーク（ＣＤＮ）がインターネット・トラフィックをそれを介して交換する物理的基盤である。
【００２４】
測定システム３０６はクライアント、例えばクライアント３０４とＡＰＩエッジゲートウェイ３０２との間の相互作用を監視し、異なるクライアント又はクライアントグループと異なるＡＰＩエッジゲートウェイ３０２との間の待ち時間を測定する。ステアリングシステム３０８は、ＡＰＩコールを処理するためにクライアント、例えばクライアント３０４を、測定システムが測定した待ち時間に基づいてＡＰＩエッジゲートウェイ３０２の１つ（即ち、組み込み加速システム３２０の１つ、ＩＸ加速システム３２２の１つ、又はＡＰＩ処理システム１０２）に向ける。このように、クライアントからのＡＰＩコールは、過去の待ち時間測定値に基づいてそのクライアントに関して最も少ない待ち時間となる可能性のあるＡＰＩエッジゲートウェイ３０２により処理される。
【００２５】
以下の説明は、測定システム３０６がクライアント３０４とＡＰＩエッジゲートウェイ３０２の間の待ち時間を測定する方法に関する詳細を提供する。その説明はクライアント・ステアリングシステム３０８が測定された待ち時間を使ってクライアント３０４を適切なＡＰＩエッジゲートウェイ３０２に向ける方法に関する詳細も提供する。
【００２６】
クライアント３０４は、測定システム３０６がクライアント３０４とＡＰＩエッジゲートウェイ３０２の間の相互作用を監視するのを可能にするプローブモジュール３１０を含む。プローブモジュール３１０は、監視ＡＰＩ終点に問い合わせ、監視対象の異なるＡＰＩエッジゲートウェイ３０２に関連する一意の資源ロケータ（ＵＲＬ）のリストを要求する。リスト内の各ＵＲＬは、そのＵＲＬに関連するＡＰＩエッジゲートウェイ３０２に対応する特定の名前を持つ。監視ＡＰＩ終点からの応答は、ＵＲＬのリストと測定プロセスを制御する１組のパラメータとを含む。これらのパラメータは、その特定の測定プロセスを完了し別の測定プロセスを始めた後、プローブモジュール３１０が待つべきある長さの時間を指定する待機パラメータを含む。また、これらのパラメータは、測定プロセスの間に提供された各ＵＲＬに対して行う要求の数を指定するパルスパラメータ、提供されたＵＲＬへの要求と要求の間で待つある長さの時間を指定するパルス間隔パラメータ、及び提供されたＵＲＬへの要求が完了するのを待つ最大長さの時間を指定するパルス・タイムアウトパラメータも含む。１つの実施形態では、プローブモジュール３１０に戻されたリスト内に提供された１つのＵＲＬは期限切れに関連する。
【００２７】
測定プロセスの間、プローブモジュール３１０は、監視ＡＰＩ終点から提供された１つのＵＲＬへの各要求と関連する１組の測定データを集める。測定データは、これらに限定されないが、要求の総継続時間、ＴＣＰ接続を確立するためにかかる時間、ＴＬＳ応答確認を行うためにかかる時間、ＵＲＬと関連するホスト名を解釈し変換するための時間、第１バイトまでの時間、即ち、要求の開始と要求に応答して受信した第１バイトとの間の時間、要求への応答に関連するＨＴＴＰ状態コード、及び要求に応答して受信したペイロードのサイズを含む。パラメータに加えて、プローブモジュール３１０は、ＵＲＬと関連するＡＰＩ終点とクライアント３０４の間のいずれの中継システムも集める。これらの中継システムは加速システム３２０及び３２２又はＡＰＩホスティング・サービスを含む。プローブモジュール３１０は、測定プロセスの間に発行された各要求と関連する集めた測定データを測定システム３０６に送信する。
【００２８】
１つの実施形態では、接続が確立された後、同じＵＲＬへの引き続く要求がその接続を再度利用できるように、クライアント３０４は、ＨＴＴＰキープアライブを備えている。このような実施形態では、引き続く要求のための測定パラメータは、接続が最初に確立された第１の要求より長さが短くてもよい。１つの実施形態では、プローブモジュール３１０は、同一の測定プロセス内の及び／又は２つの測定プロセスに亘る異なる要求間で確立された接続を再設定する。
【００２９】
測定システム３０６はマッピングエンジン３１２と測定記憶３１４とを含む。測定システム３０６は、クライアント３０４を含む異なるクライアントから受信した測定データを更なる処理のために測定記憶３１４に記憶する。マッピングエンジン３１２は１組のクライアントとＡＰＩエッジゲートウェイ３０２の１つ（即ち、組み込み加速システム３２０の１つ、ＩＸ加速システム３２２の１つ、又はＡＰＩ処理システム１０２）との間のマッピングを作成する。特定のＡＰＩエッジゲートウェイ３０２が、待ち時間基準及び到達可能性基準に基づき１組のクライアントにより発行されたＡＰＩコールを処理するのに最適である。
【００３０】
待ち時間基準に関して、マッピングエンジン３１２は、測定記憶３１４に記憶された測定データにより捕捉されたＡＰＩコール往復時間（待ち時間とも呼ばれる）を取りしきる。１つの実施形態では、待ち時間は、測定プロセスの間に特定のＵＲＬに関連する１つの要求又は１組の要求を完了するのにかかる総時間を表す。その表わされた時間は、クライアントとＵＲＬに関連するＡＰＩエッジゲートウェイ３０２との接続の開始時に始まり、ＡＰＩコールに関連する応答がクライアントにより受信された時に終わる。１つの実施形態では、特定の１組のクライアントに対して、マッピングエンジン３１２は、１組のＡＰＩエッジゲートウェイ３０２のそれぞれに測定記憶３１４に記憶された測定データに基づいて点数を付ける。特定のＡＰＩエッジゲートウェイ３０２の点数は、特定のクライアント又は特定の１組のクライアントにより発行されたＡＰＩコールを処理するための中央値待ち時間に基づいてもよい。
【００３１】
到達可能性基準に関して、マッピングエンジン３１２は、１組のクライアントをそれらクライアントによりアクセス可能な加速システム３２０又は３２２だけにマッピングする。上述のように、組み込み加速システム３２０はＩＳＰに内在するので、組み込み加速システム３２０はそのＩＳＰと提携及び／又は契約するクライアントのみによりアクセス可能である。従って、マッピングエンジン３１２が１組のクライアントを特定の組み込み加速システム３２０にマッピングするのは、その１組のクライアントがその組み込み加速システム３２０が組み込まれたＩＳＰと提携及び／又は契約する場合のみである。同様に、ＩＸ加速システム３２２はインターネット交換ポイントに内在するので、ＩＸ加速システム３２２はそのインターネット交換ポイントにアクセス可能なクライアントによってのみアクセス可能である。従って、マッピングエンジン３１２が１組のクライアントを特定のＩＸ加速システム３２２にマッピングするのは、クライアント３０４がそのＩＸ加速システム３２２を含むインターネット交換ポイントにアクセスできる場合のみである。
【００３２】
マッピングエンジン３１２は、数組のクライアントとこれらの組のクライアントにより発行されたＡＰＩコールを処理するのに最適である個々のＡＰＩエッジゲートウェイ３０２との間の決定されたマッピングに基づいてゲートウェイマップを作成する。マッピングエンジン３１２は、クライアントからのステアリング要求に応答してクライアント・ステアリングを実行するためにゲートウェイマップをクライアント・ステアリングシステム３０８に送信する。ゲートウェイマップはキー・ゲートウェイ対を記憶する。キー・ゲートウェイ対内のキーは１つ以上のクライアントを特定し、キー・ゲートウェイ対内のゲートウェイはその組のクライアントにより発行されたＡＰＩコールを処理するのに最適であるＡＰＩエッジゲートウェイ３０２を特定する。１つの実施形態では、キー・ゲートウェイ対内のキーは、特定のクライアントに関連するＩＰアドレスである。特定のクライアントに関連するＩＰアドレスは測定記憶３１４に記憶された測定データに基づいて決定される。
【００３３】
幾つかの実施形態では、クライアント・ステアリングシステム３０８により受信されたステアリング要求はクライアントのＩＰアドレスを含まず、代わりにそのクライアントがインターネットにそれを通してアクセスするＩＳＰに関連する解釈器のＩＰアドレスを含む。クライアント・ステアリングシステム３０８がこのような場合にゲートウェイマップを使用できるように、キー・ゲートウェイ対内のキーは、解釈器に関連するＩＳＰを通してインターネットにアクセスする１組のクライアントに関連する解釈器ＩＰであるべきである。異なるクライアントから受信した測定データは、解釈器ＩＰアドレスではなくクライアントＩＰアドレスを指定するので、マッピングエンジン３１２は相関手法を実行して測定データとそれから算出した待ち時間とを解釈器ＩＰアドレスに対応付ける。
【００３４】
図４は本発明の１つの実施形態に係る、一意の識別子を使用する図３の構成要素間の相互作用を例示する相互作用図である。特に、クライアント３０４は、ホスト名とクライアント３０４に関連する一意の識別子とを含む解釈要求を解釈器４００に送信する（４０２）。解釈器４００はクライアント３０４がインターネットにそれを通してアクセスするＩＳＰに関連する。解釈器４００はホスト名を解釈し、その結果、クライアント３０４を測定システム３０６に向け直す（４０４）。向け直すプロセスにおいて、測定システム３０６への要求は解釈器のＩＰアドレスを含む。測定システム３０６は解釈器ＩＰアドレスと一意の識別子との関係を測定記憶３１４に記録する（４０６）。
【００３５】
クライアント３０４はＡＰＩコール要求をＡＰＩエッジゲートウェイ３０２へ送信する（４１２）。ＡＰＩコール要求は、一意の識別子と、解釈器ＩＰアドレスと異なるクライアント３０４に関連するクライアントＩＰアドレスとを含む。ＡＰＩエッジゲートウェイ３０２はＡＰＩコールを処理するか又は場合によりその処理を可能にし、ＡＰＩ応答をクライアント３０４へ送信する（４１４）。また、ＡＰＩエッジゲートウェイ３０２はそのＡＰＩコール処理に関連する測定データを測定記憶３１４に記録する（４１６）。測定データはそのクライアントＩＰアドレスと一意のＩＤとを指定する。
【００３６】
上述したように、測定エンジン３１２は受信した測定データを処理し、ＡＰＩコール処理に関連する待ち時間を算出する。また、測定エンジン３１２は、解釈器ＩＰアドレスと対応付けて記録された一意のＩＤと記録された測定データにより指定された一意のＩＤとを照合することで待ち時間は解釈器ＩＤに関連すると判断する。このように、測定データがクライアントＩＰアドレスを含まない場合でも、クライアントＩＰアドレスを指定する測定データに基づいて算出された待ち時間を解釈器ＩＰアドレスと対応付けることができる。
【００３７】
図３に戻ると、特定のＡＰＩコールに対して、クライアント・ステアリングシステム３０８は、ＡＰＩコールを処理するためにクライアント３０４をＡＰＩエッジゲートウェイ３０２の１つ（即ち、組み込み加速システム３２０の１つ、ＩＸ加速システム３２２の１つ、又はＡＰＩ処理システム１０２）に向ける。このステアリング機能を実行するために。クライアント・ステアリングシステムは選択エンジン３１６と測定システム３０６から受信したゲートウェイマップ３１８とを含む。
【００３８】
選択エンジン３１６はクライアント３０４からＡＰＩコール処理のためのステアリング要求を受信する。説明の容易さのために、以下に選択エンジン３１６がクライアント３０４から受信され特定のＡＰＩコールに関連する特定のステアリング要求を処理する方法を説明する。１つの実施形態では、ステアリング要求はクライアント装置に関連するインターネットプロトコル（ＩＰ）アドレスを含む。別の実施形態では、ステアリング要求は、クライアント装置がインターネットにそれを通してアクセスするＩＳＰの解釈器のＩＰアドレスを含む。
【００３９】
クライアント３０４からのステアリング要求に応答して、選択エンジン３１６はＡＰＩコールを処理するためにＡＰＩエッジゲートウェイ３０２の１つを選択する。特に、選択エンジン３１６はクライアント３０４を組み込み加速システム３２０の１つ、ＩＸ加速システム３２２の１つ、又はＡＰＩ処理システム１０２へ経路付けする。選択エンジン３１６はゲートウェイマップ３１８を使用して、組み込み加速システム３２０及びＩＸ加速システム３２２からＡＰＩコールを処理するために適切な加速システムを特定する。特に、選択エンジン３１６はステアリング要求に含まれたＩＰアドレスをゲートウェイマップ３１８内のキー・ゲートウェイ対中のＩＰアドレスと照合する。次に、選択エンジン３１６はそのキー・ゲートウェイ対において特定されたゲートウェイをクライアント３０４が向けられるＡＰＩエッジゲートウェイ３０２として選択する。１つの実施形態では、選択基準に基づいて適切な加速システムを特定できない場合、選択エンジン３１６はＡＰＩコールを処理するためにクライアント３０４をＡＰＩ処理システム１０２へ直接経路付けする。
【００４０】
１つの実施形態では、ゲートウェイマップに加えて、選択エンジン３１６は組み込み加速システム３２０及びＩＸ加速システム３２２のそれぞれを監視し、加速システムの現在の負荷を測定する。選択エンジン３１６は加速システム３２０又は３２２の異なる側面を監視し、その現在の負荷を測定する。これらの側面は、これらに限定されないが、クライアントとのアクティブセッションの数とＡＰＩ処理システムにより可能にされているＡＰＩコールの数とを含む。また、選択エンジン３１６は加速システム３２０又は３２２の使用されている処理リソースの量と、使用されているメモリーリソースの量と、加速システム３２０又は３２２とＡＰＩ処理システム１０２の間の通信チャネルの混雑レベルとを監視する。
【００４１】
上述したように、加速システム３２０及び３２２のそれぞれは多くの異なるクライアントとＡＰＩ処理システム１０２の間の仲介者として働く。従って、加速システム３２０又は３２２の負荷は、加速システムが任意の特定の時間に可能にしているＡＰＩコールの数に依って変わる。加速システム３２０又は３２２の測定された負荷がある閾値を超えると、選択エンジン３１６は任意の更なるＡＰＩコールの処理を可能にするための加速システムの選択を負荷が閾値未満になるまで延期する。
【００４２】
図５は本発明の別の実施形態に係る、ＡＰＩエッジゲートウェイにクライアントを向けるための方法ステップのフロー図である。方法ステップは図１及び図３のシステムと合わせて説明されるが、当業者はこれらの方法ステップをいずれかの順に実行するよう構成されたどのシステムも本発明の範囲内であることを理解するであろう。
【００４３】
方法５００は、クライアント・ステアリングシステム３０８がクライアント３０４からＡＰＩコール処理のためのステアリング要求を受信するステップ５０２で始まる。ステアリング要求はクライアントに関連する又はクライアントがインターネットにそれを通してアクセスするＩＳＰに関係する解釈器に関連するインターネットプロトコル・アドレスを含む。
【００４４】
ステップ５０４で、ステアリングシステム３０８はクライアントによりアクセス可能な加速システム群を特定する。上述したように、幾つかの場合、ある加速システムは、ＩＳＰ又は加速システムが組み込まれたインターネット交換ポイントにアクセスできるクライアントのみにとってアクセス可能である。クライアント３０４が加速システムにアクセスできることはクライアント３０４とＡＰＩ処理システム１０２の間の仲介者として働く加速システムの必要な側面であるので、ステアリングシステム３０８はクライアント３０４によりアクセス可能な加速システム群のみを選択する。
【００４５】
ステップ５０６で、ステアリングシステム３０８は、測定システム３０６から受信したゲートウェイマップに基づいてクライアント３０４に関連する測定データを調べる。測定データはそのクライアント又はそのクライアントと一緒にステアリングされる１つ以上の他のクライアントにより行われた以前のＡＰＩコールのＡＰＩコール往復時間を示す。ステップ５０８で、ステアリングシステム３０８は測定データに基づいてステップ５０６で特定された群から加速システムを選択する。ステアリングシステム３０８は以前測定した待ち時間に基づいて加速システムを選択する。
【００４６】
ステップ５１０で、ステアリングシステム３０８はＡＰＩコールを処理するためにクライアント３０４を選択された加速システムへ経路付けする。これに応答して、クライアント３０４はＡＰＩコールを処理するための要求を選択された加速システムへ送信し、その加速システムはＡＰＩ処理システム１０２でのＡＰＩコール処理を可能にする。
【００４７】
つまり、加速システムはＡＰＩ処理システムとクライアントの間の仲介者として働き、ＡＰＩコール往復待ち時間を低減する。複数の加速システムは世界中に分布し相互接続されネットワークをなす複数のシステムを含み、それぞれ複数のクライアント１０４とＡＰＩ処理システムと間の仲介者として働く。特定のクライアントは、特定の加速システムとネットワーク接続を確立し、ＡＰＩコールを処理するための要求をその接続を介して送信する。ＡＰＩコールに関連するプログラミング機能はＡＰＩ処理システム内に構成されている。加速システムはＡＰＩ処理システムとの前に確立された接続を介してＡＰＩコールの処理を可能にする。
【００４８】
有利にも、加速システムがクライアント装置とＡＰＩ処理システムの間の仲介者として働く時、ＡＰＩコールを処理するための往復時間は低減される。特に、クライアント装置と加速システムの間の通信接続を確立するのに必要などの往復時間も、クライアント装置とＡＰＩ処理システムの間で確立する必要がある接続に比べて短い。
【００４９】
上記説明は本発明の実施形態に向けられているが、本発明の他の更なる実施形態が本発明の基本範囲から逸脱することなく考案される可能性がある。例えば、本発明の態様はハードウェア又はソフトウェア又はハードウェアとソフトウェアの組み合わせにより実施されてよい。本発明の１つの実施形態はコンピュータシステムとともに使用されるプログラム製品として実施されてもよい。プログラム製品のプログラムは実施形態（本明細書に記載された方法を含む）の機能を規定し、種々のコンピュータ読取可能記憶媒体に格納されうる。例示のコンピュータ読取可能記憶媒体は、これらに限定されないが、（１）情報が永久に記憶される書き込み不能記憶媒体（例えば、コンピュータ内の読み出し専用メモリ装置、例えばＣＤ−ＲＯＭドライブにより読み取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意の種類の固体不揮発半導体メモリ）と（２）変更可能な情報が記憶される書き込み可能記憶媒体（例えば、ディスケットドライブ内のフロッピーディスク、又はハードディスクドライブ、又は任意の種類の固体ランダムアクセス半導体メモリ）とを含む。このようなコンピュータ読取可能記憶媒体は、本発明の機能を指揮するコンピュータ読取可能命令群を格納している場合、本発明の実施形態である。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態１  
クライアント装置からアプリケーション・プログラミング・インターフェース（ＡＰＩ）コールに伴うステアリング要求を受信するステップと、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にしながら前記クライアント装置とＡＰＩ処理システムとの間の仲介者として働く加速システムを到達可能性選択基準に基づいて選択するステップと、
前記クライアント装置を前記加速システムへ経路付けするステップと
を含む方法。
実施形態２  
前記加速システムを前記到達可能性選択基準に基づいて選択するステップは、前記加速システムは前記クライアント装置によりアクセス可能であると判断するステップを含む、実施形態１記載の方法。
実施形態３  
前記加速システムはインターネット・サービス・プロバイダ内に組み込まれ、前記インターネット・サービス・プロバイダと提携するクライアント装置のみによりアクセス可能である、実施形態２記載の方法。
実施形態４  
前記加速システムは以前のＡＰＩコールが処理されるのも可能にし、前記加速システムを選択するステップは、前記以前のＡＰＩコールの処理に関連する待ち時間に更に基づいている、実施形態１記載の方法。
実施形態５  
第２のＡＰＩコールを処理することに関連した測定データであって前記クライアント装置に関連する一意の識別子を指定する測定データを受信するステップと、
前記測定データに基づいて、前記クライアント装置と前記加速システムの間の接続が開始された時から前記第２のＡＰＩコールに関連する応答が前記クライアント装置により受信された時までの総時間を表す待ち時間を算出するステップと、
解釈器から解釈器ＩＰアドレス及び前記一意の識別子を含む要求を受信するステップと、
前記要求に含まれる前記一意の識別子を前記測定データにより指定された前記一意の識別子と照合して前記待ち時間は前記解釈器ＩＰアドレスに関連すると判断するステップと
を更に含む、実施形態１記載の方法。
実施形態６  
前記クライアント装置から第３のＡＰＩコールに関連し前記解釈器ＩＰアドレスを含む第２のステアリング要求を受信するステップと、
前記第３のＡＰＩコールが処理されるのを可能にしながら前記クライアント装置と前記ＡＰＩ処理システムとの間の仲介者として働く前記加速システムを前記解釈器ＩＰアドレスに関連した前記待ち時間に基づいて選択するステップと
を更に含む、実施形態５記載の方法。
実施形態７  
前記解釈器ＩＰアドレスは、前記クライアント装置がそれを通してインターネット・サービスにアクセスするインターネット・サービス・プロバイダ（ＩＳＰ）に関連し、前記解釈器ＩＰアドレスは、前記クライアント装置に関連したクライアントＩＰアドレスとは異なる、実施形態６記載の方法。
実施形態８  
前記加速システムを選択するステップは、前記加速システムと前記ＡＰＩ処理システムの間の通信接続内の混雑レベルに更に基づいている、実施形態１記載の方法。
実施形態９  
前記加速システムに関連した１つ以上の測定実行から生成された測定データを前記クライアント装置から受信するステップ
を更に含む、実施形態１記載の方法。
実施形態１０  
命令群を記憶するコンピュータ読取可能媒体であって、プロセッサにより実行された時に前記命令群は前記プロセッサに
クライアント装置からアプリケーション・プログラミング・インターフェース（ＡＰＩ）コールに伴うステアリング要求を受信することと、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にしながら前記クライアント装置とＡＰＩ処理システムとの間の仲介者として働く加速システムを到達可能性選択基準に基づいて選択することと、
前記クライアント装置を前記加速システムへ経路付けすることと
を実行させる、コンピュータ読取可能媒体。
実施形態１１  
前記命令群は、前記プロセッサにより実行された時に、更に前記プロセッサに
前記加速システムは前記クライアント装置によりアクセス可能であると判断することで前記到達可能性選択基準に基づいて前記加速システムを選択すること
を実行させる、実施形態１０記載のコンピュータ読取可能媒体。
実施形態１２  
前記加速システムはインターネット・サービス・プロバイダ内に組み込まれ、前記インターネット・サービス・プロバイダと提携するクライアント装置のみによりアクセス可能である、実施形態１１記載のコンピュータ読取可能媒体。
実施形態１３  
前記加速システムはインターネット交換ポイント内に組み込まれ、前記インターネット交換ポイントへ経路付けされうるクライアント装置のみによりアクセス可能である、実施形態１０記載のコンピュータ読取可能媒体。
実施形態１４  
前記命令群は、前記プロセッサにより実行された時に、更に前記プロセッサに
第２のＡＰＩコールを処理することに関連した測定データであって前記クライアント装置に関連する一意の識別子を指定する測定データを受信することと、
前記測定データに基づいて、前記クライアント装置と前記加速システムの間の接続が開始された時から前記第２のＡＰＩコールに関連する応答が前記クライアント装置により受信された時までの総時間を表す待ち時間を算出することと、
解釈器から解釈器ＩＰアドレス及び前記一意の識別子を含む要求を受信することと、
前記要求に含まれる前記一意の識別子を前記測定データにより指定された前記一意の識別子と照合して前記待ち時間は前記解釈器ＩＰアドレスに関連すると判断することと
を実行させる、実施形態１０記載のコンピュータ読取可能媒体。
実施形態１５  
前記命令群は、前記プロセッサにより実行された時に、更に前記プロセッサに
前記クライアント装置から第３のＡＰＩコールに関連し前記解釈器ＩＰアドレスを含む第２のステアリング要求を受信することと、
前記第３のＡＰＩコールが処理されるのを可能にしながら前記クライアント装置と前記ＡＰＩ処理システムとの間の仲介者として働く前記加速システムを前記解釈器ＩＰアドレスに関連した前記待ち時間に基づいて選択することと
を実行させる、実施形態１４記載のコンピュータ読取可能媒体。
実施形態１６  
前記命令群は、前記プロセッサにより実行された時に、更に前記プロセッサに
待ち時間基準に基づいて前記加速システムを選択すること
を実行させる、実施形態１０記載のコンピュータ読取可能媒体。
実施形態１７  
前記命令群は、前記プロセッサにより実行された時に、前記プロセッサに
前記クライアント装置から受信され前記加速システムにより処理された１つ以上の以前のＡＰＩコールに関連した待ち時間を計測することで前記待ち時間基準に基づいて前記加速システムを選択すること
を実行させる、実施形態１６記載のコンピュータ読取可能媒体。
実施形態１８  
前記命令群は、前記プロセッサにより実行された時に、前記プロセッサに
前記クライアント装置から受信した測定データを処理して前記待ち時間を求めることを実行させる、実施形態１７記載のコンピュータ読取可能媒体。
実施形態１９  
アプリケーション・プログラミング・インターフェース（ＡＰＩ）コールが処理されるのを可能にしながらクライアント装置とＡＰＩ処理システムとの間の仲介者としてそれぞれ働く複数の加速システムと、
１組の選択基準に基づいて前記クライアント装置を前記複数の加速システムのうちの１つへ経路付けするよう構成されたクライアント・ステアリングシステムと
を備え、
前記クライアント・ステアリングシステムは
前記クライアント装置からＡＰＩコールに伴うステアリング要求を受信し、
前記ステアリング要求の受信に応答して、
前記ＡＰＩコールが処理されるのを可能にするための前記複数の加速システムから１つの加速システムを到達可能性選択基準に基づいて選択し、
前記クライアント装置を前記１つの加速システムへ経路付けする
ように構成された選択エンジンを備える、コンピュータ環境。
実施形態２０  
前記加速システムへ経路付けされたことに応答して、前記クライアント装置は前記加速システムとの伝送制御プロトコル（ＴＣＰ）応答確認及びトランスポート層セキュリティー（ＴＬＳ）応答確認を実行する、実施形態１９記載のコンピュータ環境。
実施形態２１  
前記ＴＣＰ及びＴＬＳ応答確認に続いて、前記クライアント装置は前記ＡＰＩコールを前記加速システムへ送信し、前記加速システムは前記ＡＰＩコールを前記ＡＰＩ処理システムへ転送する、実施形態１９記載のコンピュータ環境。
【００５０】
上記説明に鑑みて、本発明の範囲は添付の請求項により決定される。
【符号の説明】
【００５１】
１００、３００    システム環境
１０２    ＡＰＩ処理システム
１０４    クライアント
１０６    加速システム
３０２    ＡＰＩエッジゲートウェイ
３０６    測定システム
３０８    クライアント・ステアリングシステム
３１０    プローブモジュール
３１２    マッピングエンジン（測定エンジン）
３１４    測定記憶
３１６    選択エンジン
３１８    ゲートウェイマップ
３２０    組み込み加速システム
３２２    インターネット交換加速システム
４００    解釈器
【図１】
0006972182.tif 000002
【図２】
0006972182.tif 000003
【図３】
0006972182.tif 000004
【図４】
0006972182.tif 000005
【図５】
0006972182.tif 000006