[0013]以下の詳細な説明は、最適化されたルーティングのための技術を対象としている。本明細書で説明する主題は、コンピューターシステム上で、オペレーティングシステム及びアプリケーションプログラムの実行と共に実行されるプログラムモジュールの一般的な関連において提示されるが、当業者ならば、他の実施態様を、他のタイプのプログラムモジュールと組み合わせて実行することができることを認識する。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造体、及び特定のタスクを実行するか又は特定の抽象データタイプを実施する他のタイプの構造体が含まれる。さらに、当業者ならば、本明細書で説明する主題が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの民生用電子機器又はプログラマブルな民生用電子機器、ミニコンピューター、メインフレームコンピューター等を含む他のコンピューターシステム構成を用いて実施することができることを理解しよう。
[0014]以下の詳細な説明では、本明細書の一部をなしかつ例示として特定の実施形態又は実施例を示す添付図面が参照される。次に図面を参照して、最適化されたルーティングのためのコンピューティングシステム及び方法論の態様を提示することにする。図面において、同じ番号はいくつかの図を通じて同じ要素を表す。
[0015]次に図1を参照して、本明細書で提示する実施形態の例示の動作環境に関する詳細な内容を提供することにする。特に、図1は、本明細書で提示する実施形態の例示の動作環境を形成するシステム100の態様を示している。図1に示すように、クライアントコンピューター104は、ネットワーク106を介して1つ又は複数のサーバーコンピューター102A〜102Bに接続する。ネットワーク106等の本明細書で述べるネットワークは単なる例示にすぎないこと、及び本明細書で提示する技術の実際の実施態様ではより多くの又はより少ないネットワークを利用することができることが理解されるべきである。その上、単一のネットワーク106が図1に示されているが、図示したものよりも多くのネットワークを本明細書で提示するさまざまな実施形態で利用することができることも理解されるべきである。その上、ネットワーク106は例えばインターネットに及ぶことができることも理解されるべきである。例えば、クライアントコンピューター104は、或る大陸に配置されている場合がある一方、サーバー102A〜102Bは別の大陸に配置されている。
[0016]クライアントコンピューター104は、サーバーコンピューターへの要求を生成することができる任意のタイプのコンピューティングシステムを含むことができることがさらに理解されるべきである。例えば、クライアントコンピューター104は、標準的なデスクトップコンピューターシステム又はラップトップコンピューターシステム、サーバーコンピューター、ハンドヘルドコンピューティングシステム、セットトップボックス、又はデータ機能を有する無線移動電話を含むことができる。
[0017]図1に示すように、サーバーコンピューター102A〜102Bのそれぞれは、それぞれルーターモジュール108A〜108Bと、それぞれサーバーモジュール110A〜110Bとを装備することができる。ルーターモジュール108A〜108Bは、クライアントコンピューター104からの要求を受信するソフトウェアプログラムを備える。ルーターモジュール108A〜108Bは、クライアントコンピューター104から受信された要求を、処理のために、適切なサーバーモジュール110A〜110Bにルーティングする機能も提供する。それぞれのサーバーモジュール110A〜110Bからの応答は、元の要求をそのサーバーモジュールに転送したルーターモジュール108A〜108Bに返される。次に、ルーターモジュールは、その応答をクライアントコンピューター104に転送する。サーバーモジュール110A〜110Bは、要求を受信しかつ要求に応答するように構成されたソフトウェアコンポーネントを備えることが理解されるべきである。例えば、サーバーモジュール110A〜110Bは、ウェブサーバープログラム、ウェブサービス、及び他のタイプのサーバーコンポーネントを備えることができる。
[0018]クライアントコンピューター104から受信されたクライアント要求がサーバーモジュール110A〜110Bのいずれにルーティングされるべきかを決定するために、ルーターモジュール108A〜108Bは、ロードバランサー112のサービスを利用するように構成されている。ロードバランサーは、クライアントコンピューター104からの要求を満たすサーバーモジュール110A〜110Bのうちの1つを特定するように構成されたソフトウェアコンポーネント又はハードウェアコンポーネントである。ロードバランサー112は、限定するものではないが、サーバーコンピューター102A〜102Bの現在の処理負荷、或る特定のカテゴリーのクライアントコンピューター104へのより高いサービス品質の提供、及び他のファクターを含めて、さまざまなアルゴリズムを利用して、適切なサーバーモジュール110A〜110Bを特定することができることが理解されるべきである。本明細書で提示する実施形態は、特定のクライアント要求を満たすべきであるサーバーモジュール110A〜110Bを特定するためにロードバランサー112によって利用されるどの特定の機構にも依存しないことが理解されるべきである。
[0019]要求が、クライアントコンピューター104からルーターモジュール108A〜108Bのうちの1つによって受信されると、要求を受信したルーターモジュールは、クライアント要求を満たすサーバーモジュール110A〜110Bのネットワークアドレスをロードバランサー112に問い合わせる。ルーターモジュール108A〜108Bは、要求を満たすサーバーモジュール110A〜110Bのネットワークアドレスを有すると、クライアント要求を適切なサーバーモジュール110A〜110Bに転送する。例えば、ルーターモジュール108Aがクライアント要求をサーバーモジュール110Bに転送するように命令された場合、サーバーモジュール110Bとのネットワーク接続114Bが適切なネットワーク接続により確立される。同様に、ルーター108Bがクライアント要求をサーバーモジュール110Aに転送するように命令された場合、クライアント要求はネットワーク接続114Dを介して転送される。さらに、ルーターモジュール108Aが要求をサーバーモジュール110Aに転送するように命令された場合、ネットワーク接続114Aが、クライアント要求用にそのルーターモジュールとサーバーモジュール110Aとの間に確立される。同様に、ルーターモジュール108Bがクライアント要求をサーバーモジュール110Bに転送するように命令された場合、ネットワーク接続114Cがルーターモジュール108Bとサーバーモジュール110Bとの間に確立され、クライアント要求はその後すぐに転送される。適切なサーバーモジュール110A〜110Bからの応答も、同じネットワーク接続を介してルーターモジュール108A〜108Bに返される。
[0020]図1に示す例では、ルーターモジュール108A及びサーバーモジュール110Aが同じサーバーコンピューター102A上で実行されていても、ネットワーク接続114Aはこれらのコンポーネント間に確立される。同様に、ルーターモジュール108B及びサーバーモジュール110Bが同じ物理的なサーバーコンピューター102B上で実行されていても、ネットワーク接続114Cはこれらのコンポーネント間に確立される。ネットワーク接続114A及び114Cをこのように確立することは非常に非効率的である。図2〜図4を参照して以下で説明するさまざまな概念及び技術がこの特定のルーティングのシナリオに対処している。
[0021]次に図2を参照して、ルーターモジュール108Aとサーバーモジュール110Aとの間に最適化されたルーティングを提供する一例示のシステム200の態様を説明することにする。図2に示すシステム200では、ルーターモジュール108Aは、ルーターモジュール108A及びサーバーモジュール110Aが同じ物理的なサーバーコンピューター102A上で実行されているときにサーバーモジュール110Aへの最適化された経路を作成するように構成されている。このプロセスに関するさらに詳細な内容を以下で提供することにする。
[0022]図2に示すように、ルーターモジュール108Aは、クライアントコンピューター104からのクライアント要求202を受信することができる。クライアント要求202の受信に応答して、ルーターモジュール108Aは、クライアント要求202を満たすサーバーモジュール110A〜110Bのネットワークアドレスを求める要求204をロードバランサー112に送信する。要求204の受信に応答して、ロードバランサー112は、クライアント要求202を満たすサーバーモジュール110A〜110Bのターゲットアドレス206を返す。
[0023]ルーターモジュール108Aが、ロードバランサー112からのターゲットアドレス206を受信すると、ルーターモジュール108Aは、クライアント要求202を満たすべきサーバーモジュールが、ルーターモジュール108Aと同じ物理的なコンピューター102A上で実行されているか否かを判断する。例えば、一実施態様では、ルーターモジュール108Aは、ターゲットアドレス206を、サーバーコンピューター102Aが応答するネットワークアドレスのリスト208と比較することによってこの判断を行う。ターゲットアドレスがネットワークアドレスのリスト208において特定された場合、ルーターモジュール108Aは、サーバーモジュール110Aが同じ物理的なサーバーコンピューター102A上で実行されていると結論づける。ターゲットアドレス206がネットワークアドレスのリスト208に含まれていない場合、ルーターモジュール108Aは、クライアント要求202を満たすサーバーモジュールがサーバーコンピューター102B等の別の物理的なコンピューター上で実行されていると結論づける。
[0024]ルーターモジュール108Aは、クライアント要求202を満たすサーバーモジュールがサーバーモジュール110B等の別の物理的なサーバーコンピューター上で実行されていると結論づけた場合、クライアント要求202をサーバーモジュール110Bに標準的なネットワークトランスポート212により転送する。例えば、TCP/IPトランスポート機構を利用して、クライアント要求202を適切なサーバーモジュール110Bに転送し、クライアント要求202に対する応答をルーターモジュール108Aに返すことができる。
[0025]一方、ルーターモジュール108Aは、クライアント要求202を満たすサーバーモジュールが同じ物理的なサーバーコンピューター102A上で実行されていると判断した場合、クライアント要求202を適切なサーバーモジュール110Aに、最適化されたトランスポート210を介して転送する。一実施形態によれば、この最適化されたトランスポート210は、2進符号化を利用するTCPトランスポートを含む。
[0026]一代替的な実施形態では、最適化されたトランスポート210は、最適化されたローカルマシンのみのトランスポートを含む。最適化されたトランスポート210は、ネットワークスタックを利用しないトランスポートであり、したがって、他のタイプのトランスポートと比較して非常に最適化されている。例えば、一実施形態では、最適化されたローカルマシンのみのトランスポートは、WINDOWS COMMUNICATIONS FOUNDATION(「WCF」)の名前付きパイプバインディング(named pipe binding)を備える。名前付きパイプバインディングは、ルーターモジュール108A及びサーバーモジュール110Aがそれを通じて通信することができるサーバーコンピューター102A上に共有メモリーのエリアを作成する。ルーターモジュール108A及びサーバーモジュール110Aのコンポーネントが同じ物理的なコンピューター上で実行されているとき、WCF名前付きパイプバインディングが、本明細書で説明した一特定の実施態様で利用されるが、当業者に知られている他のタイプのプロセス間通信機構を利用して、ルーターモジュール108Aとサーバーモジュール110Aとの間のトランスポートを作成することもできることが理解されるべきである。このプロセスに関するさらに詳細な内容は、図3〜図4について以下で提供することにする。
[0027]次に図3を参照して、最適化されたルーティングについて本明細書で提示する実施形態に関してさらに詳細な内容を提供することにする。詳細には、図3は、本明細書で提示する一実施形態によるルーターモジュール108A〜108Bの動作の態様を示すフロー図である。
[0028]本明細書で説明する論理動作は、(1)コンピューティングシステム上で実行中の一連のコンピューターにより実施される動作又はプログラムモジュールとして、かつ/又は(2)コンピューティングシステム内の相互接続されたマシン論理回路若しくは回路モジュールとして実施されることが理解されるべきである。実施態様は、コンピューティングシステムの性能及び他の要件に依存した選択の問題である。したがって、本明細書で説明する論理動作は、状態動作、構造デバイス、動作、又はモジュールとさまざまに呼ばれる。これらの動作、構造デバイス、動作、及びモジュールは、ソフトウェア、ファームウェア、専用デジタルロジック、及びそれらの任意の組み合わせで実施することができる。図に示しかつ本明細書で説明するものよりも多くの又は少ない動作を実行することができることも理解されるべきである。これらの動作は、本明細書で説明する順序とは異なる順序で実行することもできる。
[0029]ルーチン300は動作302で開始し、動作302において、ルーターモジュール108Aは、サーバーコンピューター102Aが通信に利用するネットワークアドレスのリスト208をリトリーブする。動作302から、ルーチン300は動作304に進み、動作304において、ルーターモジュール108Aは、クライアント要求202が例えばクライアントコンピューター104等のコンピューターから受信されているか否かを判断する。受信されていない場合、ルーチン300は動作304に戻り、動作304において、別のそのような判断が行われる。図3に示す機能はループで実行されるものとして示されているが、他の実施形態はループ機構を利用しない場合もあることが理解されるべきである。例えば、一実施態様では、図3に示すプロセスは、クライアント要求が受信されると開始することができる。その結果、プロセスがそのような実施態様において図3に示す方法でループする必要はない。
[0030]ルーターモジュール108Aがクライアント要求202を受信した場合、ルーチン300は動作306に進む。動作306において、ルーターモジュール108Aは、要求204をロードバランサー112に送信して、クライアント要求202を満たすサーバーモジュール110A〜110Bのターゲットアドレス206を取得する。ルーターモジュール108Aがターゲットアドレス206を受信すると、ルーターモジュール108Aは、ターゲットアドレス206を、ネットワークアドレスのリスト208に含まれるネットワークアドレスと比較して、ルーターモジュール108A及びクライアント要求202を満たすサーバーモジュール110A〜110Bが同じ物理的なコンピューターシステム上で実行されているか否かを判断する。
[0031]ルーターモジュール108及びクライアント要求202を満たすサーバーモジュール110A〜110Bが同じ物理的なコンピューター上で実行されていない場合、ルーチン300は動作310から動作312に進む。動作312において、ルーターモジュール108Aは、標準的なネットワークトランスポート212を利用して、クライアント要求202をサーバーモジュール110B等のサーバーモジュールに転送し、クライアント要求202に応答してサーバーモジュール110Bから応答を受信する。動作312から、ルーチン300は、上記で説明した動作304に進み、動作304において、別のそのようなクライアント要求を同様の方法で処理することができる。
[0032]ルーターモジュール108Aが、クライアント要求202を満たすサーバーモジュール110A〜110Bのターゲットアドレスが同じ物理的なサーバーコンピューター上で実行されていると判断した場合、ルーチン300は動作310から動作314に進む。動作314において、ルーターモジュール108Aは、最適化されたトランスポート210を利用して、クライアント要求202を満たすサーバーモジュール110A等のサーバーモジュールにクライアント要求202を転送し、クライアント要求202に対する応答を受信する。上述したように、最適化されたトランスポート210は、一実施形態では、2進符号化を利用するトランスポートを含むことができる。例えば、最適化されたトランスポート210は、TCPトランスポートを含むことができる。代替的に、最適化されたトランスポート210は、名前付きパイプバインディング等の2進符号化を利用する最適化されたローカルマシンのみのトランスポートを含むことができる。動作314から、ルーチン300は上述した動作304に戻り、動作304において、別のクライアント要求202を受信し、同様の方法で処理することができる。
[0033]図4は、上記で提示した方法での最適化されたルーティングのための、本明細書で説明したソフトウェアコンポーネントを実行することができるコンピューター400の一例示のコンピューターアーキテクチャーを示している。図4に示すコンピューターアーキテクチャーは、従来のデスクトップコンピューター、ラップトップコンピューター、又はサーバーコンピューターを示し、クライアントコンピューター104、サーバーコンピューター102A〜102B、及びロードバランサー112上で実行されるものとして説明した、本明細書で提示したソフトウェアコンポーネントの任意の態様を実行するのに利用することができる。
[0034]図4に示すコンピューターアーキテクチャーは、中央処理装置402(「CPU」)と、ランダムアクセスメモリー414(「RAM」)及び読み出し専用メモリー(「ROM」)416を含むシステムメモリー408と、メモリーをCPU402に結合するシステムバス404とを含む。スタートアップ中等にコンピューター400内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システムが、ROM416内に記憶される。コンピューター400は、オペレーティングシステム418、アプリケーションプログラム、及び他のプログラムモジュールを記憶するマスストレージデバイス410をさらに含み、これらは本明細書中でより詳細に記載される。
[0035]マスストレージデバイス410は、バス404に接続されたマスストレージコントローラー(図示せず)を通じてCPU402に接続される。マスストレージデバイス410及びそれに関連したコンピューター可読媒体は、コンピューター400の不揮発性ストレージを提供する。本明細書に含まれるコンピューター可読媒体の説明は、ハードディスク又はCD−ROMドライブ等のマスストレージデバイスを指すが、コンピューター可読媒体は、コンピューター400がアクセスすることができる任意の利用可能なコンピューターストレージ媒体とすることができることが当業者によって理解されるべきである。
[0036]限定ではなく例として、コンピューター可読媒体には、コンピューター可読命令、データ構造体、プログラムモジュール、又は他のデータ等の情報の記憶のための任意の方法又は技術で実施される揮発性及び不揮発性の着脱可能及び着脱不能な媒体を含めることができる。例えば、コンピューター可読媒体には、RAM、ROM、EPROM、EEPROM、フラッシュメモリー、若しくは他のソリッドステートメモリー技術、CD−ROM、デジタル多用途ディスク(「DVD」)、HD−DVD、BLU−RAY、若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気ストレージデバイス、又は所望の情報を記憶するのに用いることができかつコンピューター400がアクセスすることができる他の任意の媒体が含まれるが、これらに限定されるものではない。
[0037]さまざまな実施形態によれば、コンピューター400は、ネットワーク420等のネットワークを通じたリモートコンピューターへの論理接続を用いてネットワーク化環境で動作することができる。コンピューター400は、バス404に接続されたネットワークインターフェースユニット406を通じてネットワーク420に接続することができる。ネットワークインターフェースユニット406は、他のタイプのネットワーク及びリモートコンピューターシステムに接続するのに利用することもできることが理解されるべきである。コンピューター400は、キーボード、マウス、又は電子スタイラス(図4に図示せず)を含む複数の他のデバイスからの入力を受け取って処理する入出力コントローラー412も含むことができる。同様に、入出力コントローラーは、表示スクリーン、プリンタ、又は他のタイプの出力デバイス(これも図4に図示せず)に出力を提供することもできる。
[0038]上記で簡潔に述べたように、ネットワーク化されたデスクトップコンピューター、ラップトップコンピューター、又はサーバーコンピューターの動作を制御するのに適したオペレーティングシステム418を含めて、多数のプログラムモジュール及びデータファイルをコンピューター400のマスストレージデバイス410及びRAM414に記憶することができる。マスストレージデバイス410及びRAM414は、1つ又は複数のプログラムモジュールも記憶することができる。特に、マスストレージデバイス410及びRAM414は、ルーターモジュール108及びサーバーモジュール110を記憶することができ、これらのそれぞれは図1〜図3に関して上記で詳細に説明されたものである。マスストレージデバイス410及びRAM414は、他のタイプのプログラムモジュール及びデータも格納することができる。
[0039]本明細書で説明したソフトウェアコンポーネントは、CPU402内にロードされて実行されると、CPU402及びコンピューター400全体を汎用コンピューティングシステムから、本明細書で提示した機能を円滑にするようにカスタマイズされた専用コンピューティングシステムに変換することができることが理解されるべきである。CPU402は、任意の数のトランジスター又は他のディスクリート回路素子から構成することができ、これらの任意の数のトランジスター又は他のディスクリート回路素子は、個々に又は集合的に任意の数の状態を仮定することができる。より具体的には、CPU402は、本明細書で開示したソフトウェアモジュール内に含まれる実行可能命令に応答して、有限状態マシンとして動作することができる。これらのコンピューター実行可能命令は、CPU402が状態間をどのように遷移するのかを指定することによってCPU402を変換することができ、それによって、CPU402を構成するトランジスター又は他のディスクリートハードウェア素子を変換することができる。
[0040]本明細書で提示したソフトウェアモジュールを符号化することによって、本明細書で提示したコンピューター可読媒体の物理的な構造も変換することができる。物理的な構造の特定の変換は、この説明のさまざまな実施態様におけるさまざまな因子に依存し得る。そのような因子の例には、コンピューター可読媒体を実施するのに用いられる技術、コンピューター可読媒体が1次ストレージとして特徴付けられるのか又は2次ストレージとして特徴付けられるのか等を含めることができるが、それらに限定されるものではない。例えば、コンピューター可読媒体が半導体ベースのメモリーとして実施される場合、本明細書で開示したソフトウェアは、半導体メモリーの物理的な状態を変換することによって、コンピューター可読媒体上に符号化することができる。例えば、ソフトウェアは、半導体メモリーを構成するトランジスター、キャパシター、又は他のディスクリート回路素子の状態を変換することができる。ソフトウェアは、その後すぐにデータを記憶するために、そのようなコンポーネントの物理的な状態を変換することもできる。
[0041]別の例として、本明細書で開示したコンピューター可読媒体は、磁気技術又は光技術を用いて実施することができる。そのような実施態様では、本明細書で提示したソフトウェアは、磁気媒体内又は光媒体内に符号化されるとき、該磁気媒体又は光媒体の物理的な状態を変換することができる。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含むことができる。これらの変換は、所与の光媒体内の特定の位置の物理的な特徴又は特性を変更して、それらの位置の光学特性を変化させることも含むことができる。本説明の範囲及び趣旨から逸脱することなく、物理媒体の他の変換が可能であり、上記例は、この議論を円滑にするためにのみ提示されている。
[0042]上記に鑑み、多くのタイプの物理的な変換は、本明細書で提示したソフトウェアコンポーネントを記憶及び実行するためにコンピューター400で行われることが理解されるべきである。コンピューター400は、ハンドヘルドコンピューター、内蔵型コンピューターシステム、携帯情報端末、及び当業者に知られている他のタイプのコンピューティングデバイスを含む他のタイプのコンピューティングデバイスを含むことができることも理解されるべきである。コンピューター400は、図4に示すコンポーネントの全てを含むとは限らないことがあること、図4に明示的に示していない他のコンポーネントを含むことがあること、又は図4に示すものとは全く異なるアーキテクチャーを利用することがあることも意図されている。
[0043]上記内容に基づいて、最適化されたルーティングのための技術が本明細書で提供されることが理解されるべきである。本明細書で提示した主題は、コンピューターの構造的特徴、方法論的動作、変換動作、特定の計算機、及びコンピューター可読媒体に特有の文言で説明されているが、添付の特許請求の範囲に規定される本発明は、必ずしも、本明細書で説明した特定の特徴にも、特定の動作にも、特定の媒体にも限定されないことが理解されるべきである。それどころか、特定の特徴、特定の動作、及び特定の媒体は、特許請求の範囲を実施する例示の形態として開示されている。
[0044]上記で説明した主題は、例示としてのみ提供され、限定として解釈されるべきではない。図示及び説明した例示の実施形態及び用途に従うことなく、かつ次の特許請求の範囲で述べられている本発明の真の趣旨及び範囲から逸脱することなく、さまざまな修正形態及び変更形態を、本明細書で説明した主題に対して行うことができる。