(57)【要約】  ルーターモジュールがクライアント要求を受信する。要求の受信に応答して、ルーターモジュールは、該要求を満たすサーバーモジュールのネットワークアドレスを取得する。次に、ルーターモジュールは、サーバーモジュールと同じ物理的なコンピューター上で実行されているか否かを判断する。ルーターモジュールは、サーバーモジュールが同じ物理的なコンピューター上で実行されていないと判断した場合、標準的なネットワークトランスポートを利用してクライアント要求をサーバーモジュールに転送する。ルーターモジュールは、サーバーモジュールが同じコンピューター上で実行されていると判断した場合、最適化されたローカルマシンのみのトランスポート等の最適化されたトランスポートを用いてクライアント要求をサーバーモジュールに転送する。
2012522318.tif 000002
【特許請求の範囲】
【請求項１】
クライアント要求（２０２）をサーバーモジュール（１１０）にルーティングするコンピューターにより実施される方法において、コンピューターにより実施される動作であって、
クライアントコンピューター（１０４）からクライアント要求（２０２）をルーターモジュール（１０８）において受信する動作と、
前記クライアント要求（２０２）の受信に応答して、該クライアント要求（２０２）を満たすサーバーモジュール（１１０）のターゲットネットワークアドレス（２０６）をロードバランサー（１１２）に問い合わせ、前記ターゲットネットワークアドレス（２０６）をネットワークアドレスのリスト（２０８）の１つ又は複数のネットワークアドレスと比較して、前記ルーターモジュール（１０８）及び前記クライアント要求（２０２）を満たす前記サーバーモジュール（１１０）が同じ物理的なコンピューター上で実行されているか否かを判断し、前記ルーターモジュール（１０８）及び前記サーバーモジュール（１１０）が前記同じ物理的なコンピューター上で実行されているとの判断に応答して、前記クライアント要求（２０２）を前記ルーターモジュール（１０８）から前記サーバーモジュール（１１０）に、２進符号化を利用する最適化されたトランスポート（２１０）を介して転送する動作と
を含むコンピューターにより実施される方法。
【請求項２】
前記最適化されたトランスポートは、最適化されたローカルマシンのみのトランスポートを含む請求項１に記載のコンピューターにより実施される方法。
【請求項３】
前記最適化されたローカルマシンのみのトランスポートは２進符号化を利用する請求項２に記載のコンピューターにより実施される方法。
【請求項４】
前記最適化されたローカルマシンのみのトランスポートは名前付きパイプバインディングを含む請求項３に記載のコンピューターにより実施される方法。
【請求項５】
コンピューター実行可能命令が記憶されているコンピューター可読媒体において、該命令は、コンピューターによって実行されると、請求項１に記載の方法を該コンピューターに実行させるコンピューター可読媒体。
【請求項６】
クライアント要求（２０２）をサーバーモジュール（１１０）にルーティングするシステムにおいて、
前記クライアント要求（２０２）を受信し、該クライアント要求（２０２）に応答するように構成されたサーバーモジュール（１１０）と、
前記クライアント要求（２０２）を受信し、該クライアント要求（２０２）の受信に応答して、前記サーバーモジュール（１１０）のネットワークアドレス（２０６）を取得し、前記サーバーモジュール（１１０）が前記ルーターモジュール（１０８）と同じコンピューター上で実行されているか否かを判断し、前記サーバーモジュール（１１０）が前記同じコンピューター上で実行されているとの判断に応答して、最適化されたトランスポート（２１０）を利用して前記要求（２０２）を前記サーバーモジュール（１１０）に転送するように構成されたルーターモジュール（１０８）と
を備えるシステム。
【請求項７】
ロードバランサーをさらに備え、前記サーバーモジュールのネットワークアドレスを取得することは、ロードバランサーに問い合わせて、サーバーモジュールの前記ネットワークアドレスを取得することを含む請求項６に記載のシステム。
【請求項８】
前記ルーターモジュールは、前記サーバーモジュールが前記同じコンピューター上で実行されていないとの判断に応答して、標準的なトランスポートを利用するようにさらに構成されている請求項７に記載のシステム。
【請求項９】
前記サーバーモジュールが前記同じコンピューター上で実行されているか否かを判断することは、前記サーバーモジュール前記同じコンピューター上で実行されているか否かを判断するために、前記ロードバランサーから受信された前記ネットワークアドレスを、前記ルーターモジュールを実行しているコンピューターが応答するネットワークアドレスのリストにおける１つ又は複数のネットワークアドレスと比較することを含む請求項８に記載のシステム。
【請求項１０】
前記最適化されたトランスポートは伝送制御プロトコル（ＴＣＰ）トランスポートを含む請求項９に記載のシステム。
【請求項１１】
前記最適化されたトランスポートは最適化されたローカルマシンのみのトランスポートを含む請求項９に記載のシステム。
【請求項１２】
前記最適化されたローカルマシンのみのトランスポートは２進符号化を利用する請求項１１に記載のシステム。
【請求項１３】
前記最適化されたローカルマシンのみのトランスポートは名前付きパイプバインディングを含む請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートルーティングに関する。
【背景技術】
【０００２】
[0001]多くのタイプのクライアント・サーバーアーキテクチャーでは、クライアントによって行われた要求が、該要求を満たすサーバーに到達するまで、或る形態のルーティングが該要求に対して実行される。このタイプのルーティングは、一群のサーバーコンピューター間で負荷をバランスさせること、より高いサービス品質を或る特定のカテゴリーのクライアントに提供すること等、多くの理由で行われる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0002]場合によっては、ルーティングを実行するサーバー及びクライアント要求を満たすサーバーは同じ物理的なサーバーである。これらの場合に、サーバーは、通常、クライアント要求を、処理のためにネットワーク上でルーティングし、そして同じ物理的なサーバーに戻すようにルーティングする。このタイプのルーティングは非効率になる可能性がある。
【０００４】
[0003]本明細書で行われる開示は、これらの検討事項及び他の検討事項に関して提示されている。
【課題を解決するための手段】
【０００５】
[0004]スマートルーティング（smart routing）のための技術が本明細書で説明される。詳細には、本明細書で提示する概念及び技術の一実施の態様によれば、コンテンツサーバー及びルーターが同じ物理的なコンピューティングシステム上にある場合、ルーターからサーバーにクライアント要求を搬送し応答を搬送して戻すのに、最適化されたトランスポート（移送、transport）が利用される。例えば、最適化されたトランスポートは、クライアント要求をネットワーク上でルーティングする必要がないローカルマシンのみ（local-machine-only）のトランスポートとすることができる。それどころか、ローカルマシンのみのトランスポートは、ネットワークスタックを用いることなく、クライアント要求をルーティングする最適化された機構を提供する。
【０００６】
[0005]一実施の形態によれば、ルーターモジュールがクライアント要求を受信する。そのような要求の受信に応答して、ルーターモジュールは、要求を満たすサーバーモジュールのネットワークアドレスを取得する。例えば、ルーターモジュールは、ロードバランサーに問い合わせて、サーバーモジュールのネットワークアドレスを取得することができる。次に、ルーターモジュールは、サーバーモジュールのネットワークアドレスに基づいて、自身がサーバーモジュールと同じ物理的なコンピューター上で実行されているか否かを判断する。一実施の態様では、ルーターモジュールは、この判断を行うために、サーバーモジュールのネットワークアドレスを、ルーターモジュールが実行されているサーバーが応答するネットワークアドレスのリストと比較する。
【０００７】
[0006]ルーターモジュールは、サーバーモジュールが同じ物理的なコンピューター上で実行されていないと判断した場合、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、ハイパーテキストトランスポートプロトコル（「ＨＴＴＰ」）、又は別のタイプのトランスポート等の標準的なネットワークトランスポートを利用して、クライアント要求をサーバーモジュールに転送する。ルーターモジュールは、サーバーモジュールが同じコンピューター上で実行されていると判断した場合、最適化されたトランスポートを用いて、クライアント要求をサーバーモジュールに転送する。例えば、一特定の実施態様では、最適化されたトランスポートは、ＴＣＰトランスポート等の２進符号化を利用するトランスポートを含むことができる。別の実施態様によれば、最適化されたトランスポートは、ネットワークスタックを用いることなくルーターモジュールとサーバーモジュールとの間の通信を可能にする名前付きパイプバインディング等の最適化されたローカルマシンのみのトランスポートを含む。最適化されたトランスポートは、サーバーモジュールからの応答をサーバーモジュールに送信するのにも利用される。
【０００８】
[0007]上記で説明した主題は、コンピューター制御される装置、コンピュータープロセス、コンピューティングシステム、又はコンピューター可読媒体等の製品として実施することもできることが理解されるべきである。これらの特徴及びさまざまな他の特徴は、以下の詳細な説明を読み、関連した図面をレビューすることによって明らかになる。
【０００９】
[0008]この概要は、以下の詳細な説明でさらに説明する概念のうちの選択したものを簡略化した形で導入するために設けられている。この概要は、請求項に記載の主題の重要な特徴又は不可欠な特徴を特定することを意図しておらず、また、この概要は、請求項に記載の主題の範囲を限定するのに用いられることも意図されていない。さらに、請求項に記載の主題は、この開示のいずれかの部分に示しているいずれかの不利な点又は全ての不利な点を解決する実施態様に限定されない。
【図面の簡単な説明】
【００１０】
【図１】[0009]本明細書で提示する実施形態の一例示の動作環境を示すネットワーク図である。
【図２】[0010]最適化されたルーティングのための本明細書で提示する一実施形態の態様を示すネットワーク図である。
【図３】[0011]本明細書で提示する一実施形態におけるクライアント要求の最適化されたルーティングのための一例示のプロセスを示すフロー図である。
【図４】[0012]本明細書で提示する実施形態の態様を実施することができるコンピューティングシステムの一例のコンピューターハードウェア及びソフトウェアアーキテクチャーを示すコンピューターアーキテクチャーの図である。
【発明を実施するための形態】
【００１１】
[0013]以下の詳細な説明は、最適化されたルーティングのための技術を対象としている。本明細書で説明する主題は、コンピューターシステム上で、オペレーティングシステム及びアプリケーションプログラムの実行と共に実行されるプログラムモジュールの一般的な関連において提示されるが、当業者ならば、他の実施態様を、他のタイプのプログラムモジュールと組み合わせて実行することができることを認識する。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造体、及び特定のタスクを実行するか又は特定の抽象データタイプを実施する他のタイプの構造体が含まれる。さらに、当業者ならば、本明細書で説明する主題が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの民生用電子機器又はプログラマブルな民生用電子機器、ミニコンピューター、メインフレームコンピューター等を含む他のコンピューターシステム構成を用いて実施することができることを理解しよう。
【００１２】
[0014]以下の詳細な説明では、本明細書の一部をなしかつ例示として特定の実施形態又は実施例を示す添付図面が参照される。次に図面を参照して、最適化されたルーティングのためのコンピューティングシステム及び方法論の態様を提示することにする。図面において、同じ番号はいくつかの図を通じて同じ要素を表す。
【００１３】
[0015]次に図１を参照して、本明細書で提示する実施形態の例示の動作環境に関する詳細な内容を提供することにする。特に、図１は、本明細書で提示する実施形態の例示の動作環境を形成するシステム１００の態様を示している。図１に示すように、クライアントコンピューター１０４は、ネットワーク１０６を介して１つ又は複数のサーバーコンピューター１０２Ａ〜１０２Ｂに接続する。ネットワーク１０６等の本明細書で述べるネットワークは単なる例示にすぎないこと、及び本明細書で提示する技術の実際の実施態様ではより多くの又はより少ないネットワークを利用することができることが理解されるべきである。その上、単一のネットワーク１０６が図１に示されているが、図示したものよりも多くのネットワークを本明細書で提示するさまざまな実施形態で利用することができることも理解されるべきである。その上、ネットワーク１０６は例えばインターネットに及ぶことができることも理解されるべきである。例えば、クライアントコンピューター１０４は、或る大陸に配置されている場合がある一方、サーバー１０２Ａ〜１０２Ｂは別の大陸に配置されている。
【００１４】
[0016]クライアントコンピューター１０４は、サーバーコンピューターへの要求を生成することができる任意のタイプのコンピューティングシステムを含むことができることがさらに理解されるべきである。例えば、クライアントコンピューター１０４は、標準的なデスクトップコンピューターシステム又はラップトップコンピューターシステム、サーバーコンピューター、ハンドヘルドコンピューティングシステム、セットトップボックス、又はデータ機能を有する無線移動電話を含むことができる。
【００１５】
[0017]図１に示すように、サーバーコンピューター１０２Ａ〜１０２Ｂのそれぞれは、それぞれルーターモジュール１０８Ａ〜１０８Ｂと、それぞれサーバーモジュール１１０Ａ〜１１０Ｂとを装備することができる。ルーターモジュール１０８Ａ〜１０８Ｂは、クライアントコンピューター１０４からの要求を受信するソフトウェアプログラムを備える。ルーターモジュール１０８Ａ〜１０８Ｂは、クライアントコンピューター１０４から受信された要求を、処理のために、適切なサーバーモジュール１１０Ａ〜１１０Ｂにルーティングする機能も提供する。それぞれのサーバーモジュール１１０Ａ〜１１０Ｂからの応答は、元の要求をそのサーバーモジュールに転送したルーターモジュール１０８Ａ〜１０８Ｂに返される。次に、ルーターモジュールは、その応答をクライアントコンピューター１０４に転送する。サーバーモジュール１１０Ａ〜１１０Ｂは、要求を受信しかつ要求に応答するように構成されたソフトウェアコンポーネントを備えることが理解されるべきである。例えば、サーバーモジュール１１０Ａ〜１１０Ｂは、ウェブサーバープログラム、ウェブサービス、及び他のタイプのサーバーコンポーネントを備えることができる。
【００１６】
[0018]クライアントコンピューター１０４から受信されたクライアント要求がサーバーモジュール１１０Ａ〜１１０Ｂのいずれにルーティングされるべきかを決定するために、ルーターモジュール１０８Ａ〜１０８Ｂは、ロードバランサー１１２のサービスを利用するように構成されている。ロードバランサーは、クライアントコンピューター１０４からの要求を満たすサーバーモジュール１１０Ａ〜１１０Ｂのうちの１つを特定するように構成されたソフトウェアコンポーネント又はハードウェアコンポーネントである。ロードバランサー１１２は、限定するものではないが、サーバーコンピューター１０２Ａ〜１０２Ｂの現在の処理負荷、或る特定のカテゴリーのクライアントコンピューター１０４へのより高いサービス品質の提供、及び他のファクターを含めて、さまざまなアルゴリズムを利用して、適切なサーバーモジュール１１０Ａ〜１１０Ｂを特定することができることが理解されるべきである。本明細書で提示する実施形態は、特定のクライアント要求を満たすべきであるサーバーモジュール１１０Ａ〜１１０Ｂを特定するためにロードバランサー１１２によって利用されるどの特定の機構にも依存しないことが理解されるべきである。
【００１７】
[0019]要求が、クライアントコンピューター１０４からルーターモジュール１０８Ａ〜１０８Ｂのうちの１つによって受信されると、要求を受信したルーターモジュールは、クライアント要求を満たすサーバーモジュール１１０Ａ〜１１０Ｂのネットワークアドレスをロードバランサー１１２に問い合わせる。ルーターモジュール１０８Ａ〜１０８Ｂは、要求を満たすサーバーモジュール１１０Ａ〜１１０Ｂのネットワークアドレスを有すると、クライアント要求を適切なサーバーモジュール１１０Ａ〜１１０Ｂに転送する。例えば、ルーターモジュール１０８Ａがクライアント要求をサーバーモジュール１１０Ｂに転送するように命令された場合、サーバーモジュール１１０Ｂとのネットワーク接続１１４Ｂが適切なネットワーク接続により確立される。同様に、ルーター１０８Ｂがクライアント要求をサーバーモジュール１１０Ａに転送するように命令された場合、クライアント要求はネットワーク接続１１４Ｄを介して転送される。さらに、ルーターモジュール１０８Ａが要求をサーバーモジュール１１０Ａに転送するように命令された場合、ネットワーク接続１１４Ａが、クライアント要求用にそのルーターモジュールとサーバーモジュール１１０Ａとの間に確立される。同様に、ルーターモジュール１０８Ｂがクライアント要求をサーバーモジュール１１０Ｂに転送するように命令された場合、ネットワーク接続１１４Ｃがルーターモジュール１０８Ｂとサーバーモジュール１１０Ｂとの間に確立され、クライアント要求はその後すぐに転送される。適切なサーバーモジュール１１０Ａ〜１１０Ｂからの応答も、同じネットワーク接続を介してルーターモジュール１０８Ａ〜１０８Ｂに返される。
【００１８】
[0020]図１に示す例では、ルーターモジュール１０８Ａ及びサーバーモジュール１１０Ａが同じサーバーコンピューター１０２Ａ上で実行されていても、ネットワーク接続１１４Ａはこれらのコンポーネント間に確立される。同様に、ルーターモジュール１０８Ｂ及びサーバーモジュール１１０Ｂが同じ物理的なサーバーコンピューター１０２Ｂ上で実行されていても、ネットワーク接続１１４Ｃはこれらのコンポーネント間に確立される。ネットワーク接続１１４Ａ及び１１４Ｃをこのように確立することは非常に非効率的である。図２〜図４を参照して以下で説明するさまざまな概念及び技術がこの特定のルーティングのシナリオに対処している。
【００１９】
[0021]次に図２を参照して、ルーターモジュール１０８Ａとサーバーモジュール１１０Ａとの間に最適化されたルーティングを提供する一例示のシステム２００の態様を説明することにする。図２に示すシステム２００では、ルーターモジュール１０８Ａは、ルーターモジュール１０８Ａ及びサーバーモジュール１１０Ａが同じ物理的なサーバーコンピューター１０２Ａ上で実行されているときにサーバーモジュール１１０Ａへの最適化された経路を作成するように構成されている。このプロセスに関するさらに詳細な内容を以下で提供することにする。
【００２０】
[0022]図２に示すように、ルーターモジュール１０８Ａは、クライアントコンピューター１０４からのクライアント要求２０２を受信することができる。クライアント要求２０２の受信に応答して、ルーターモジュール１０８Ａは、クライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂのネットワークアドレスを求める要求２０４をロードバランサー１１２に送信する。要求２０４の受信に応答して、ロードバランサー１１２は、クライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂのターゲットアドレス２０６を返す。
【００２１】
[0023]ルーターモジュール１０８Ａが、ロードバランサー１１２からのターゲットアドレス２０６を受信すると、ルーターモジュール１０８Ａは、クライアント要求２０２を満たすべきサーバーモジュールが、ルーターモジュール１０８Ａと同じ物理的なコンピューター１０２Ａ上で実行されているか否かを判断する。例えば、一実施態様では、ルーターモジュール１０８Ａは、ターゲットアドレス２０６を、サーバーコンピューター１０２Ａが応答するネットワークアドレスのリスト２０８と比較することによってこの判断を行う。ターゲットアドレスがネットワークアドレスのリスト２０８において特定された場合、ルーターモジュール１０８Ａは、サーバーモジュール１１０Ａが同じ物理的なサーバーコンピューター１０２Ａ上で実行されていると結論づける。ターゲットアドレス２０６がネットワークアドレスのリスト２０８に含まれていない場合、ルーターモジュール１０８Ａは、クライアント要求２０２を満たすサーバーモジュールがサーバーコンピューター１０２Ｂ等の別の物理的なコンピューター上で実行されていると結論づける。
【００２２】
[0024]ルーターモジュール１０８Ａは、クライアント要求２０２を満たすサーバーモジュールがサーバーモジュール１１０Ｂ等の別の物理的なサーバーコンピューター上で実行されていると結論づけた場合、クライアント要求２０２をサーバーモジュール１１０Ｂに標準的なネットワークトランスポート２１２により転送する。例えば、ＴＣＰ／ＩＰトランスポート機構を利用して、クライアント要求２０２を適切なサーバーモジュール１１０Ｂに転送し、クライアント要求２０２に対する応答をルーターモジュール１０８Ａに返すことができる。
【００２３】
[0025]一方、ルーターモジュール１０８Ａは、クライアント要求２０２を満たすサーバーモジュールが同じ物理的なサーバーコンピューター１０２Ａ上で実行されていると判断した場合、クライアント要求２０２を適切なサーバーモジュール１１０Ａに、最適化されたトランスポート２１０を介して転送する。一実施形態によれば、この最適化されたトランスポート２１０は、２進符号化を利用するＴＣＰトランスポートを含む。
【００２４】
[0026]一代替的な実施形態では、最適化されたトランスポート２１０は、最適化されたローカルマシンのみのトランスポートを含む。最適化されたトランスポート２１０は、ネットワークスタックを利用しないトランスポートであり、したがって、他のタイプのトランスポートと比較して非常に最適化されている。例えば、一実施形態では、最適化されたローカルマシンのみのトランスポートは、WINDOWS COMMUNICATIONS FOUNDATION（「ＷＣＦ」）の名前付きパイプバインディング（named pipe binding）を備える。名前付きパイプバインディングは、ルーターモジュール１０８Ａ及びサーバーモジュール１１０Ａがそれを通じて通信することができるサーバーコンピューター１０２Ａ上に共有メモリーのエリアを作成する。ルーターモジュール１０８Ａ及びサーバーモジュール１１０Ａのコンポーネントが同じ物理的なコンピューター上で実行されているとき、ＷＣＦ名前付きパイプバインディングが、本明細書で説明した一特定の実施態様で利用されるが、当業者に知られている他のタイプのプロセス間通信機構を利用して、ルーターモジュール１０８Ａとサーバーモジュール１１０Ａとの間のトランスポートを作成することもできることが理解されるべきである。このプロセスに関するさらに詳細な内容は、図３〜図４について以下で提供することにする。
【００２５】
[0027]次に図３を参照して、最適化されたルーティングについて本明細書で提示する実施形態に関してさらに詳細な内容を提供することにする。詳細には、図３は、本明細書で提示する一実施形態によるルーターモジュール１０８Ａ〜１０８Ｂの動作の態様を示すフロー図である。
【００２６】
[0028]本明細書で説明する論理動作は、（１）コンピューティングシステム上で実行中の一連のコンピューターにより実施される動作又はプログラムモジュールとして、かつ／又は（２）コンピューティングシステム内の相互接続されたマシン論理回路若しくは回路モジュールとして実施されることが理解されるべきである。実施態様は、コンピューティングシステムの性能及び他の要件に依存した選択の問題である。したがって、本明細書で説明する論理動作は、状態動作、構造デバイス、動作、又はモジュールとさまざまに呼ばれる。これらの動作、構造デバイス、動作、及びモジュールは、ソフトウェア、ファームウェア、専用デジタルロジック、及びそれらの任意の組み合わせで実施することができる。図に示しかつ本明細書で説明するものよりも多くの又は少ない動作を実行することができることも理解されるべきである。これらの動作は、本明細書で説明する順序とは異なる順序で実行することもできる。
【００２７】
[0029]ルーチン３００は動作３０２で開始し、動作３０２において、ルーターモジュール１０８Ａは、サーバーコンピューター１０２Ａが通信に利用するネットワークアドレスのリスト２０８をリトリーブする。動作３０２から、ルーチン３００は動作３０４に進み、動作３０４において、ルーターモジュール１０８Ａは、クライアント要求２０２が例えばクライアントコンピューター１０４等のコンピューターから受信されているか否かを判断する。受信されていない場合、ルーチン３００は動作３０４に戻り、動作３０４において、別のそのような判断が行われる。図３に示す機能はループで実行されるものとして示されているが、他の実施形態はループ機構を利用しない場合もあることが理解されるべきである。例えば、一実施態様では、図３に示すプロセスは、クライアント要求が受信されると開始することができる。その結果、プロセスがそのような実施態様において図３に示す方法でループする必要はない。
【００２８】
[0030]ルーターモジュール１０８Ａがクライアント要求２０２を受信した場合、ルーチン３００は動作３０６に進む。動作３０６において、ルーターモジュール１０８Ａは、要求２０４をロードバランサー１１２に送信して、クライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂのターゲットアドレス２０６を取得する。ルーターモジュール１０８Ａがターゲットアドレス２０６を受信すると、ルーターモジュール１０８Ａは、ターゲットアドレス２０６を、ネットワークアドレスのリスト２０８に含まれるネットワークアドレスと比較して、ルーターモジュール１０８Ａ及びクライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂが同じ物理的なコンピューターシステム上で実行されているか否かを判断する。
【００２９】
[0031]ルーターモジュール１０８及びクライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂが同じ物理的なコンピューター上で実行されていない場合、ルーチン３００は動作３１０から動作３１２に進む。動作３１２において、ルーターモジュール１０８Ａは、標準的なネットワークトランスポート２１２を利用して、クライアント要求２０２をサーバーモジュール１１０Ｂ等のサーバーモジュールに転送し、クライアント要求２０２に応答してサーバーモジュール１１０Ｂから応答を受信する。動作３１２から、ルーチン３００は、上記で説明した動作３０４に進み、動作３０４において、別のそのようなクライアント要求を同様の方法で処理することができる。
【００３０】
[0032]ルーターモジュール１０８Ａが、クライアント要求２０２を満たすサーバーモジュール１１０Ａ〜１１０Ｂのターゲットアドレスが同じ物理的なサーバーコンピューター上で実行されていると判断した場合、ルーチン３００は動作３１０から動作３１４に進む。動作３１４において、ルーターモジュール１０８Ａは、最適化されたトランスポート２１０を利用して、クライアント要求２０２を満たすサーバーモジュール１１０Ａ等のサーバーモジュールにクライアント要求２０２を転送し、クライアント要求２０２に対する応答を受信する。上述したように、最適化されたトランスポート２１０は、一実施形態では、２進符号化を利用するトランスポートを含むことができる。例えば、最適化されたトランスポート２１０は、ＴＣＰトランスポートを含むことができる。代替的に、最適化されたトランスポート２１０は、名前付きパイプバインディング等の２進符号化を利用する最適化されたローカルマシンのみのトランスポートを含むことができる。動作３１４から、ルーチン３００は上述した動作３０４に戻り、動作３０４において、別のクライアント要求２０２を受信し、同様の方法で処理することができる。
【００３１】
[0033]図４は、上記で提示した方法での最適化されたルーティングのための、本明細書で説明したソフトウェアコンポーネントを実行することができるコンピューター４００の一例示のコンピューターアーキテクチャーを示している。図４に示すコンピューターアーキテクチャーは、従来のデスクトップコンピューター、ラップトップコンピューター、又はサーバーコンピューターを示し、クライアントコンピューター１０４、サーバーコンピューター１０２Ａ〜１０２Ｂ、及びロードバランサー１１２上で実行されるものとして説明した、本明細書で提示したソフトウェアコンポーネントの任意の態様を実行するのに利用することができる。
【００３２】
[0034]図４に示すコンピューターアーキテクチャーは、中央処理装置４０２（「ＣＰＵ」）と、ランダムアクセスメモリー４１４（「ＲＡＭ」）及び読み出し専用メモリー（「ＲＯＭ」）４１６を含むシステムメモリー４０８と、メモリーをＣＰＵ４０２に結合するシステムバス４０４とを含む。スタートアップ中等にコンピューター４００内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システムが、ＲＯＭ４１６内に記憶される。コンピューター４００は、オペレーティングシステム４１８、アプリケーションプログラム、及び他のプログラムモジュールを記憶するマスストレージデバイス４１０をさらに含み、これらは本明細書中でより詳細に記載される。
【００３３】
[0035]マスストレージデバイス４１０は、バス４０４に接続されたマスストレージコントローラー（図示せず）を通じてＣＰＵ４０２に接続される。マスストレージデバイス４１０及びそれに関連したコンピューター可読媒体は、コンピューター４００の不揮発性ストレージを提供する。本明細書に含まれるコンピューター可読媒体の説明は、ハードディスク又はＣＤ−ＲＯＭドライブ等のマスストレージデバイスを指すが、コンピューター可読媒体は、コンピューター４００がアクセスすることができる任意の利用可能なコンピューターストレージ媒体とすることができることが当業者によって理解されるべきである。
【００３４】
[0036]限定ではなく例として、コンピューター可読媒体には、コンピューター可読命令、データ構造体、プログラムモジュール、又は他のデータ等の情報の記憶のための任意の方法又は技術で実施される揮発性及び不揮発性の着脱可能及び着脱不能な媒体を含めることができる。例えば、コンピューター可読媒体には、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、若しくは他のソリッドステートメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ、若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気ストレージデバイス、又は所望の情報を記憶するのに用いることができかつコンピューター４００がアクセスすることができる他の任意の媒体が含まれるが、これらに限定されるものではない。
【００３５】
[0037]さまざまな実施形態によれば、コンピューター４００は、ネットワーク４２０等のネットワークを通じたリモートコンピューターへの論理接続を用いてネットワーク化環境で動作することができる。コンピューター４００は、バス４０４に接続されたネットワークインターフェースユニット４０６を通じてネットワーク４２０に接続することができる。ネットワークインターフェースユニット４０６は、他のタイプのネットワーク及びリモートコンピューターシステムに接続するのに利用することもできることが理解されるべきである。コンピューター４００は、キーボード、マウス、又は電子スタイラス（図４に図示せず）を含む複数の他のデバイスからの入力を受け取って処理する入出力コントローラー４１２も含むことができる。同様に、入出力コントローラーは、表示スクリーン、プリンタ、又は他のタイプの出力デバイス（これも図４に図示せず）に出力を提供することもできる。
【００３６】
[0038]上記で簡潔に述べたように、ネットワーク化されたデスクトップコンピューター、ラップトップコンピューター、又はサーバーコンピューターの動作を制御するのに適したオペレーティングシステム４１８を含めて、多数のプログラムモジュール及びデータファイルをコンピューター４００のマスストレージデバイス４１０及びＲＡＭ４１４に記憶することができる。マスストレージデバイス４１０及びＲＡＭ４１４は、１つ又は複数のプログラムモジュールも記憶することができる。特に、マスストレージデバイス４１０及びＲＡＭ４１４は、ルーターモジュール１０８及びサーバーモジュール１１０を記憶することができ、これらのそれぞれは図１〜図３に関して上記で詳細に説明されたものである。マスストレージデバイス４１０及びＲＡＭ４１４は、他のタイプのプログラムモジュール及びデータも格納することができる。
【００３７】
[0039]本明細書で説明したソフトウェアコンポーネントは、ＣＰＵ４０２内にロードされて実行されると、ＣＰＵ４０２及びコンピューター４００全体を汎用コンピューティングシステムから、本明細書で提示した機能を円滑にするようにカスタマイズされた専用コンピューティングシステムに変換することができることが理解されるべきである。ＣＰＵ４０２は、任意の数のトランジスター又は他のディスクリート回路素子から構成することができ、これらの任意の数のトランジスター又は他のディスクリート回路素子は、個々に又は集合的に任意の数の状態を仮定することができる。より具体的には、ＣＰＵ４０２は、本明細書で開示したソフトウェアモジュール内に含まれる実行可能命令に応答して、有限状態マシンとして動作することができる。これらのコンピューター実行可能命令は、ＣＰＵ４０２が状態間をどのように遷移するのかを指定することによってＣＰＵ４０２を変換することができ、それによって、ＣＰＵ４０２を構成するトランジスター又は他のディスクリートハードウェア素子を変換することができる。
【００３８】
[0040]本明細書で提示したソフトウェアモジュールを符号化することによって、本明細書で提示したコンピューター可読媒体の物理的な構造も変換することができる。物理的な構造の特定の変換は、この説明のさまざまな実施態様におけるさまざまな因子に依存し得る。そのような因子の例には、コンピューター可読媒体を実施するのに用いられる技術、コンピューター可読媒体が１次ストレージとして特徴付けられるのか又は２次ストレージとして特徴付けられるのか等を含めることができるが、それらに限定されるものではない。例えば、コンピューター可読媒体が半導体ベースのメモリーとして実施される場合、本明細書で開示したソフトウェアは、半導体メモリーの物理的な状態を変換することによって、コンピューター可読媒体上に符号化することができる。例えば、ソフトウェアは、半導体メモリーを構成するトランジスター、キャパシター、又は他のディスクリート回路素子の状態を変換することができる。ソフトウェアは、その後すぐにデータを記憶するために、そのようなコンポーネントの物理的な状態を変換することもできる。
【００３９】
[0041]別の例として、本明細書で開示したコンピューター可読媒体は、磁気技術又は光技術を用いて実施することができる。そのような実施態様では、本明細書で提示したソフトウェアは、磁気媒体内又は光媒体内に符号化されるとき、該磁気媒体又は光媒体の物理的な状態を変換することができる。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含むことができる。これらの変換は、所与の光媒体内の特定の位置の物理的な特徴又は特性を変更して、それらの位置の光学特性を変化させることも含むことができる。本説明の範囲及び趣旨から逸脱することなく、物理媒体の他の変換が可能であり、上記例は、この議論を円滑にするためにのみ提示されている。
【００４０】
[0042]上記に鑑み、多くのタイプの物理的な変換は、本明細書で提示したソフトウェアコンポーネントを記憶及び実行するためにコンピューター４００で行われることが理解されるべきである。コンピューター４００は、ハンドヘルドコンピューター、内蔵型コンピューターシステム、携帯情報端末、及び当業者に知られている他のタイプのコンピューティングデバイスを含む他のタイプのコンピューティングデバイスを含むことができることも理解されるべきである。コンピューター４００は、図４に示すコンポーネントの全てを含むとは限らないことがあること、図４に明示的に示していない他のコンポーネントを含むことがあること、又は図４に示すものとは全く異なるアーキテクチャーを利用することがあることも意図されている。
【００４１】
[0043]上記内容に基づいて、最適化されたルーティングのための技術が本明細書で提供されることが理解されるべきである。本明細書で提示した主題は、コンピューターの構造的特徴、方法論的動作、変換動作、特定の計算機、及びコンピューター可読媒体に特有の文言で説明されているが、添付の特許請求の範囲に規定される本発明は、必ずしも、本明細書で説明した特定の特徴にも、特定の動作にも、特定の媒体にも限定されないことが理解されるべきである。それどころか、特定の特徴、特定の動作、及び特定の媒体は、特許請求の範囲を実施する例示の形態として開示されている。
【００４２】
[0044]上記で説明した主題は、例示としてのみ提供され、限定として解釈されるべきではない。図示及び説明した例示の実施形態及び用途に従うことなく、かつ次の特許請求の範囲で述べられている本発明の真の趣旨及び範囲から逸脱することなく、さまざまな修正形態及び変更形態を、本明細書で説明した主題に対して行うことができる。
【図１】
2012522318.tif 000003
【図２】
2012522318.tif 000004
【図３】
2012522318.tif 000005
【図４】
2012522318.tif 000006
【国際調査報告】
2012522318.tif 000007
2012522318.tif 000008