(57)【要約】【課題】処理性能の低下を防止すること。【解決手段】受信部１ａは、クライアントコンピュータ２から複数のサーバコンピュータ５〜７の１つへ送信されるデータ２ａを受信する。識別処理部１ｂは、受信部１ａが受信したデータから、転送先のサーバコンピュータ５〜７に関する転送先情報と転送元のクライアントコンピュータ２に関する転送元情報を抽出する。検索装置決定部１ｃは、識別処理部１ｂが抽出した情報を基に転送先のサーバコンピュータ５〜７を検索する検索装置３または検索装置４を決定する。送信部１ｄは、データ、転送先情報および転送元情報を決定された検索装置３に送信する。【選択図】図１
2011008484.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する受信部と、
前記受信部が受信したデータから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理部と、
前記識別処理部が抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置決定部と、
前記データ、前記転送先情報および前記転送元情報を前記検索装置決定部により決定された前記検索装置に送信する送信部と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記転送先情報は、前記サーバコンピュータ上で動作するコンピュータのプログラムを特定する情報を有しており、前記転送元情報はクライアントコンピュータを操作する利用者に関する情報を有していることを特徴する請求項１記載のデータ処理装置。
【請求項３】
前記転送先情報および前記転送元情報を前記データ内の所定位置に追加する追加処理部をさらに有することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータと、転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報とを受信する受信部と、
前記受信部が受信した情報を基に転送先の前記サーバコンピュータを決定する転送先決定部と、
転送先の前記サーバコンピュータに前記データを送信する送信部と、
を有することを特徴とするデータ処理装置。
【請求項５】
前記サーバコンピュータのアドレスを前記転送先情報および前記転送元情報とともに受信する転送ルール受信部と、
前記転送ルール受信部が受信した前記サーバコンピュータのアドレスと前記転送先情報と前記転送元情報とを関連づけて記憶する記憶部とをさらに有し、
前記転送先決定部は、前記受信部が受信した前記転送元情報に一致する前記記憶部に記憶された前記転送元情報に関連づけられた前記サーバコンピュータのアドレスを、転送先として決定することを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記転送先情報および前記転送元情報は、前記データの所定位置に付加されており、
前記受信部は、前記転送先情報および前記転送元情報を前記所定位置から抽出することを特徴とする請求項４または５に記載のデータ処理装置。
【請求項７】
転送先の前記サーバコンピュータを決定後、付加された前記転送先情報と前記転送元情報を削除する削除部とをさらに有することを特徴とする請求項６記載のデータ処理装置。
【請求項８】
コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する受信手順と、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理手順と、
抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置選択手順と、
前記データ、前記転送先情報および前記転送元情報を決定された前記検索装置に送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
【請求項９】
コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータ、通知された転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報を受信する受信手順と、
前記転送元情報を基に転送先の前記サーバコンピュータを決定する転送先決定手順と、
転送先の前記サーバコンピュータに前記データを送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
【請求項１０】
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する第１の装置が、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出し、
抽出した情報を基に前記サーバコンピュータを検索する第２の装置を決定し、
前記データ、前記転送先情報および前記転送元情報を前記第２の装置に送信し、
前記第２の装置が、受信した前記転送先情報と前記転送元情報を基に転送先の前記サーバコンピュータを決定し、
決定した転送先の前記サーバコンピュータに前記データを送信する、
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、データ処理プログラムおよびデータ処理方法に関する。
【背景技術】
【０００２】
近年ＳＯＡ（Service Oriented Architecture）等のシステムアーキテクチャの普及に伴い、企業のＩＴシステムやデータセンタ等において、アプリケーション間のメッセージのやり取りにＳＯＡＰ（Simple Object Access Protocol）を用いる技術が知られている。
【０００３】
ＳＯＡＰの通信内容の記述には、ＸＭＬ（Extensible Markup Language）が用いられる。
また、メッセージのやり取りに際し、メッセージを中継する中継装置が知られている。
【０００４】
中継装置は、アプリケーション同士がやり取りするメッセージ中の値に基づいて、アプリケーション間のメッセージを中継する。
例えば、アプリケーションの負荷分散を行う場合、中継装置は、メッセージ中のＩＤやユーザ名に基づき転送先のサーバを決定することで、振り分けの一意性を保証する。
【０００５】
ここで、中継装置は、メッセージに含まれる値を識別（解析）する必要があるため、処理負荷が高くなる場合がある。
このため、中継装置１台当たりの負荷を軽減するために、複数の中継装置を用意しロードバランサにて中継装置の負荷分散を行う技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１３８６８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ロードバランサは、負荷が１つの中継装置に集中しないよう転送先の中継装置を決定する。このため、中継装置ではメッセージがどの中継装置に転送されても転送ルールの検索を可能とするために、全ての装置において同じ転送ルールを保持しておく必要がある。
【０００８】
しかしながら、全ての中継装置が同じ転送ルールテーブルを保持する場合、転送ルールテーブルのエントリ数が増大する。
これにより、全ての中継装置において転送ルールの検索処理のコストが増大し、処理性能が低下するという問題がある。
【０００９】
また、転送ルールテーブルが増大しても処理性能を低下させないようなハードウェアを導入しても、実装コストが増大するという問題がある。
本発明はこのような点に鑑みてなされたものであり、処理性能の低下を防止するデータ処理装置、データ処理プログラムおよびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、開示のデータ処理装置が提供される。このデータ処理装置は、受信部と、識別処理部と、装置決定部と、送信部とを有している。
受信部は、クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する。
【００１１】
識別処理部は、受信部が受信したデータから、転送先のサーバコンピュータに関する転送先情報と転送元のクライアントコンピュータに関する転送元情報を抽出する。
検索装置決定部は、識別処理部が抽出した情報を基に転送先のサーバコンピュータを検索する検索装置を決定する。
【００１２】
送信部は、データ、転送先情報および転送元情報を検索装置決定部により決定された検索装置に送信する。
【発明の効果】
【００１３】
開示のデータ処理装置によれば、処理性能の低下を防止することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態のデータ処理装置の概要を示す図である。
【図２】実施の形態のシステムを示す図である。
【図３】識別処理装置のハードウェア構成例を示す図である。
【図４】識別処理装置の機能を示すブロック図である。
【図５】クライアント装置が送信するリクエストメッセージの一例を示す図である。
【図６】識別処理装置が送信するリクエストメッセージの一例を示す図である。
【図７】宛先アプリ名ルールの一例を示す図である。
【図８】識別ルールの一例を示す図である。
【図９】関数定義格納部に格納されている情報を示す図である。
【図１０】従属テーブルの一例を示す図である。
【図１１】検索処理装置の機能を示すブロック図である。
【図１２】転送ルールの一例を示す図である。
【図１３】他方の検索処理装置の転送ルールの一例を示す図である。
【図１４】エンドポイントリストの一例を示す図である。
【図１５】転送ルール生成装置の機能を示すブロック図である。
【図１６】識別子情報の一例を示す図である。
【図１７】転送ルール設定メッセージの一例を示す図である。
【図１８】従属テーブルの一例を示す図である。
【図１９】システムの第１の処理を示す図である。
【図２０】システムの第２の処理を示す図である。
【図２１】識別処理装置の処理を示すフローチャートである。
【図２２】検索処理装置の処理を示すフローチャートである。
【図２３】宛先決定処理を示すフローチャートである。
【図２４】転送ルール生成処理を示すフローチャートである。
【図２５】転送ルール設定処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のデータ処理装置について説明し、その後、実施の形態をより具体的に説明する。
【００１６】
＜第１の実施の形態＞
図１は、実施の形態のデータ処理装置の概要を示す図である。
実施の形態のデータ処理装置１は、受信部１ａと、識別処理部１ｂと、検索装置決定部１ｃと、送信部１ｄとを有している。
【００１７】
受信部１ａは、クライアントコンピュータ２から複数のサーバコンピュータ５〜７の１つへ送信されるデータ２ａを受信する。
識別処理部１ｂは、受信部１ａが受信したデータから、転送先のサーバコンピュータ５〜７に関する転送先情報と転送元のクライアントコンピュータ２に関する転送元情報を抽出する。
【００１８】
転送先情報としては、例えば、サーバコンピュータ５〜７上で動作するプログラムを特定する情報（アプリケーション名）等が挙げられる。
転送元情報としては、例えば、クライアントコンピュータ２を操作する利用者を識別する情報等が挙げられる。
【００１９】
ここで、転送先情報および転送元情報は、データ２ａ内の所定位置に追加するのが好ましい。これにより、後述する検索装置３において、転送先情報および転送元情報を削除する際に、削除する箇所を容易に特定することができる。
【００２０】
検索装置決定部１ｃは、識別処理部１ｂが抽出した情報を基に転送先のサーバコンピュータ５〜７を検索する検索装置３または検索装置４を決定する。
この決定方法は、特に限定されないが、例えば、予め用意しておいた決定基準に基づいて、同じ転送元情報を有するデータは、同一の検索装置に送信するようにする。ここでは、検索装置３を決定したものとして説明する。
【００２１】
送信部１ｄは、データ２ａ、転送先情報および転送元情報を決定された検索装置３に送信する。
このようなデータ処理装置１によれば、予め必要となる転送先情報と転送元情報を抽出しておくことで、後段の検索装置３、４の処理の負荷を軽減することができる。従って、処理性能の低下を防止することができる。
【００２２】
検索装置３は、受信部３ａと、転送先決定部３ｂと、送信部３ｃとを有している。
受信部３ａは、クライアントコンピュータ２からのサーバコンピュータ５〜７の１つへ送信されるデータ２ａと、転送先情報および転送元情報とを受信する。
【００２３】
前述したように、転送先情報および転送元情報が、データ２ａ内の所定位置に追加されている場合、その位置を参照することにより、転送先情報および転送元情報を容易に取得することができる。
【００２４】
転送先決定部３ｂは、転送先情報と転送元情報を基に転送先のサーバコンピュータを決定する。
例えば、転送元情報に対応する転送先のサーバコンピュータの関係を示す情報が検索装置３に格納されており、その情報に基づいて、転送先のサーバコンピュータを決定する。
【００２５】
送信部３ｃは、転送先のサーバコンピュータにデータ２ａを送信する。
ここで、転送先情報および転送元情報が、データ２ａ内の所定位置に追加されている場合、その所定位置から転送先情報と転送元情報を削除するようにするのが好ましい。
【００２６】
これにより、サーバコンピュータの処理に不必要な情報を送ることがないので、サーバコンピュータ側で無駄な処理が行われることを防止することができる。
検索装置３では、転送先のサーバコンピュータを決定するために必要な転送先情報と転送元情報を受け取るため、検索装置３側では、これらの情報を別個に抽出する処理を行う必要がない。従って、処理負荷を軽減することができる。
【００２７】
＜第２の実施の形態＞
以下、実施の形態をより具体的に説明する。
図２は、実施の形態のシステムを示す図である。
【００２８】
システム１００は、クライアント装置１０ａ、１０ｂと、ロードバランサ２０と、識別処理装置３０ａ、３０ｂと、検索処理装置４０ａ、４０ｂと、サーバ装置５０ａ〜５０ｅと、転送ルール生成装置６０とを有している。
【００２９】
クライアント装置１０ａ、１０ｂは、それぞれ、ネットワークを介してロードバランサ２０に接続されている。
クライアント装置１０ａ、１０ｂは、それぞれ、少なくとも１つのアプリケーション（クライアントアプリ）を有している。
【００３０】
これらクライアントアプリは、それぞれ、サーバ装置５０ａ〜５０ｅが備えるアプリケーション（サーバアプリ）に所定の動作を要求（リクエスト）するメッセージ（以下、リクエストメッセージと言う）を送信する。
【００３１】
サーバアプリは、識別処理装置３０ａ、３０ｂ並びに検索処理装置４０ａ、４０ｂ、および、ロードバランサ２０によって仮想化される。
このため、クライアント装置１０ａ、１０ｂが送信するサーバアプリへのリクエストメッセージのネットワークアドレスはロードバランサ２０のアドレスとなる。
【００３２】
ロードバランサ２０は、ネットワークを介して識別処理装置３０ａ、３０ｂに接続されている。
ロードバランサ２０は、クライアント装置１０ａ、１０ｂからのリクエストメッセージを受信すると、識別処理装置３０ａおよび識別処理装置３０ｂの負荷等に基づいて、転送先の識別処理装置を決定する。
【００３３】
また、ロードバランサ２０は、振り分け先のサーバ装置５０ａ〜５０ｅからリクエストメッセージに対する応答を受信すると、リクエストメッセージを送信したクライアント装置１０ａまたはクライアント装置１０ｂに対し、その応答を返す。
【００３４】
識別処理装置３０ａ、３０ｂ並びに、検索処理装置４０ａ、４０ｂは、リクエストメッセージを中継する中継装置としての機能を有している。
識別処理装置３０ａ、３０ｂは、それぞれ、ネットワークを介して検索処理装置４０ａ、４０ｂに接続されている。
【００３５】
識別処理装置３０ａ、３０ｂは、それぞれ、同じ機能を有している。
例えば、識別処理装置３０ａは、ロードバランサ２０からリクエストメッセージを受け取ると、そのメッセージに基づいて、転送先のサーバ装置５０ａ〜５０ｅと転送元のクライアント装置１０ａ、１０ｂを識別する識別処理を行う。
【００３６】
また、識別処理装置３０ａは、識別処理の結果を含むリクエストメッセージを送信する検索処理装置４０ａ、４０ｂを決定する。
そして、決定した検索処理装置に識別処理の結果を含むリクエストメッセージを送信する。
【００３７】
検索処理装置４０ａ、４０ｂは、それぞれ、ネットワークを介してサーバ装置５０ａ〜５０ｅに接続されている。
検索処理装置４０ａ、４０ｂは、それぞれ、同じ機能を有している。
【００３８】
例えば、検索処理装置４０ａは、識別処理装置３０ａから識別処理の結果を含むリクエストメッセージを受け取ると、リクエストメッセージに含まれる識別処理の結果に基づいて、転送先のサーバ装置を決定する。
【００３９】
そして、決定したサーバ装置にリクエストメッセージを送信する。
また、検索処理装置４０ａは、転送ルール生成装置６０から転送ルールを受け取ると、そのルールを所定の場所に格納する。
【００４０】
格納された転送ルールは、リクエストメッセージを受け取ったときの転送先のサーバ装置の決定に用いられる。
サーバ装置５０ａ〜５０ｅは、それぞれ、ネットワークを介して転送ルール生成装置６０に接続されている。
【００４１】
サーバ装置５０ａ〜５０ｅは、それぞれ、受信したリクエストメッセージに対して処理を行った後、処理に対する応答をクライアント装置１０ａ、１０ｂに送信する。
また、サーバ装置５０ａ〜５０ｅは、それぞれ、受信したリクエストメッセージに含まれる情報に基づいて、クライアント装置１０ａを操作するユーザを識別するデータ（ユーザデータ）のキャッシュが存在するか否かを判断する。
【００４２】
ユーザデータのキャッシュが存在しない場合、ユーザデータのキャッシュを生成する。そして、ユーザデータのキャッシュを生成したときは、そのキャッシュを含む転送ルールを生成するための情報を転送ルール生成装置６０に通知する。
【００４３】
転送ルール生成装置６０は、ネットワークを介して検索処理装置４０ａ、４０ｂに接続されている。
転送ルール生成装置６０は、サーバ装置５０ａ〜５０ｅのいずれかから受信した、転送ルールを生成するための情報に基づいて、転送ルールを生成する。
【００４４】
そして、転送ルールを生成するための情報に基づいて、生成した転送ルールを検索処理装置４０ａまたは検索処理装置４０ｂのいずれに設定すべきかを決定する。
そして、決定した検索処理装置に生成した転送ルールを送信する。
【００４５】
次に、識別処理装置３０ａのハードウェア構成を説明する。
図３は、識別処理装置のハードウェア構成例を示す図である。
識別処理装置３０ａは、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、外部補助記憶装置１０６および通信インタフェース１０７が接続されている。
【００４６】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ１０３内には、プログラムファイルが格納される。
【００４７】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００４８】
外部補助記憶装置１０６は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置１０６で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００４９】
通信インタフェース１０７は、ネットワーク７０に接続されている。通信インタフェース１０７は、ネットワーク７０を介して、他のコンピュータや装置との間でデータの送受信を行う。
【００５０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には識別処理装置３０ａのハードウェア構成を示したが識別処理装置３０ｂについても同様のハードウェア構成で実現することができる。また、検索処理装置４０ａ、４０ｂについても同様のハードウェア構成で実現することができる。また、転送ルール生成装置６０についても同様のハードウェア構成で実現することができる。
【００５１】
このようなハードウェア構成の識別処理装置３０ａ、３０ｂ、検索処理装置４０ａ、４０ｂ、および、転送ルール生成装置６０内には、以下のような機能が設けられる。
図４は、識別処理装置の機能を示すブロック図である。
【００５２】
識別処理装置３０ａは、リクエストメッセージ受信部３１ａと、識別処理部３２ａと、中間ヘッダ追加部（追加処理部）３３ａと、検索処理装置選択部３４ａと、リクエストメッセージ送信部３５ａと、宛先アプリ名ルール格納部３６ａと、識別ルール格納部３７ａと、関数定義格納部３８ａとを有している。
【００５３】
リクエストメッセージ受信部３１ａは、ロードバランサ２０からリクエストメッセージ１１を受信する。そして、受信したリクエストメッセージ１１を識別処理部３２ａに送る。
【００５４】
図５は、クライアント装置が送信するリクエストメッセージの一例を示す図である。
図５では、リクエストメッセージ１１としてＳＯＡＰｏｖｅｒＨＴＴＰリクエストメッセージの例を示している。
【００５５】
リクエストメッセージ１１には、ＩＰヘッダ１１１と、ＴＣＰヘッダ１１２と、レイヤ７プロトコルヘッダ１１３と、メッセージコンテンツ１１４とが含まれている。
リクエストメッセージ１１では、レイヤ７プロトコルヘッダ１１３としてＨＴＴＰヘッダを有している。また、メッセージコンテンツ１１４は、ＳＯＡＰヘッダを有している。
【００５６】
ＨＴＴＰヘッダには、例えばサーバ装置５０ａで動作するアプリケーションを指定する情報（宛先アプリ名）「/services/A1」が含まれている。
ＳＯＡＰヘッダには、クライアント装置１０ａを操作するユーザを識別する識別子「sip:bob@example.com」が含まれている。
【００５７】
再び図４に戻って説明する。
識別処理部３２ａは、宛先アプリ名ルール格納部３６ａに格納されている宛先アプリ名ルールおよび識別ルール格納部３７ａに格納されている識別ルールを参照する。
【００５８】
そして、宛先アプリ名ルールおよび識別ルールに基づいて、受け取ったリクエストメッセージ１１からサーバ装置５０ａ〜５０ｅが有するアプリケーションを示す情報（以下、「宛先アプリ名」と言う）と識別子を識別して抽出する。なお、宛先アプリ名と識別子とを識別して抽出する処理を「識別処理」と言う。
【００５９】
そして、識別処理部３２ａは、抽出した宛先アプリ名と識別子をリクエストメッセージ１１とともに中間ヘッダ追加部３３ａに送る。
中間ヘッダ追加部３３ａは、識別処理部３２ａによって抽出された宛先アプリ名と識別子を、中間ヘッダとしてリクエストメッセージ１１のレイヤ７プロトコルヘッダ１１３の前部に追加する。以下、この中間ヘッダが追加されたリクエストメッセージ１１を、リクエストメッセージ１１ａとして説明する。
【００６０】
検索処理装置選択部３４ａは、関数定義格納部３８ａに格納されているＮｅｘｔＨｏｐ決定関数Ｆ（ｘ）に基づいて、転送先の検索処理装置として、検索処理装置４０ａまたは検索処理装置４０ｂを決定する。
【００６１】
リクエストメッセージ送信部３５ａは、検索処理装置選択部３４ａにて決定した検索処理装置４０ａまたは検索処理装置４０ｂにリクエストメッセージ１１ａを送信する。
次に、識別処理装置３０ａが送信するリクエストメッセージ１１ａを説明する。
【００６２】
図６は、識別処理装置が送信するリクエストメッセージの一例を示す図である。
リクエストメッセージ１１ａには、前述したように、中間ヘッダ１１５が、レイヤ７プロトコルヘッダ１１３の前部に追加されている。
【００６３】
中間ヘッダ１１５は、前述したように、識別処理部３２ａによって抽出された宛先アプリ名と識別子を有している。具体的には、レイヤ７プロトコルヘッダ１１３に含まれる宛先アプリ名「/services/A1」を有している。また、メッセージコンテンツ１１４に含まれる識別子「sip:bob@example.com」を有している。
【００６４】
次に、宛先アプリ名ルール格納部３６ａに格納されている情報を説明する。
図７は、宛先アプリ名ルールの一例を示す図である。
宛先アプリ名ルール格納部３６ａには、宛先アプリ名ルールがテーブル化されて格納されている。
【００６５】
宛先アプリ名ルールテーブル３６１ａには、プロトコル（Protocol）番号、ポート（port）番号、メッセージフォーマット、抽出場所、抽出場所の書式の欄が設けられている。横方向に並べられた情報同士が、互いに関連づけられている。
【００６６】
プロトコル番号の欄には、転送されるＩＰパケットの種別を識別する番号が設定されている。図７では、「６」が設定されている。従って、転送されるＩＰパケットがＴＣＰプロトコル形式のリクエストメッセージ１１を宛先アプリ名の抽出対象とする。
【００６７】
ポート番号の欄には、サービスを識別する番号が設定されている。図７では、「８０８０」が設定されている。従って、ポート番号８０８０にアクセスするリクエストメッセージ１１を宛先アプリ名の抽出対象とする。
【００６８】
メッセージフォーマットの欄には、リクエストメッセージ１１のフォーマットを識別する情報が設定されている。図７では、「ＨＴＴＰ」が設定されている。従って、ＨＴＴＰ形式のリクエストメッセージ１１を宛先アプリ名の抽出対象とする。
【００６９】
抽出場所の欄には、メッセージフォーマットの欄に設定された情報に従って、宛先アプリ名を抽出する場所を識別する情報が設定されている。
図７では、「Ｒｅｑｕｅｓｔ−ＵＲＩ」が設定されている。また、前述したように、メッセージフォーマットの欄には、「ＨＴＴＰ」が設定されている。
【００７０】
従って、例えば、図５に示すリクエストメッセージ１１であれば、「HTTP/1.1/services/A1\r\n」のＲｅｑｕｅｓｔ−ＵＲＩである「/services/A1」を宛先アプリ名として取り出す。
【００７１】
抽出場所の書式の欄には、抽出場所の書式を示す情報が設定されている。図７では、「ＨＴＴＰヘッダフィールド名」が設定されている。従って、例えば、図４に示すリクエストメッセージ１１であれば、ＨＴＴＰヘッダフィールド名から宛先アプリ名を抽出する。
【００７２】
次に、識別ルール格納部３７ａに格納されている情報を説明する。
図８は、識別ルールの一例を示す図である。
識別ルール格納部３７ａには、識別ルールがテーブル化されて格納されている。
【００７３】
識別ルールテーブル３７１ａには、宛先アプリ名、メッセージフォーマット、抽出場所、抽出場所の書式の欄が設けられている。
宛先アプリ名の欄には、サーバ装置５０ａ、５０ｂのアプリケーションを特定する情報が設定されている。図８では、「/services/A1」が設定されている。従って、宛先アプリ名が「/services/A1」であるリクエストメッセージ１１を識別子の抽出対象とする。
【００７４】
メッセージフォーマットの欄には、メッセージコンテンツ１１４のフォーマットを識別する情報が設定されている。図８では、「ＳＯＡＰ」が設定されている。従って、ＳＯＡＰ形式のリクエストメッセージ１１を識別子の抽出対象とする。
【００７５】
抽出場所の欄には、識別子を抽出する場所を識別する情報が設定されている。図８では、「//presentity」が設定されている。従って、例えば、図５に示すリクエストメッセージ１１であれば、＜Presentity＞タグで囲まれた部分を抽出場所とする。
【００７６】
抽出場所の書式の欄には、抽出場所の書式を示す情報が設定されている。図８では、「Xpath」が設定されている。
次に、関数定義格納部３８ａに格納されている情報を説明する。
【００７７】
図９は、関数定義格納部に格納されている情報を示す図である。
関数定義格納部３８ａには、ＮｅｘｔＨｏｐ決定関数Ｆ（ｘ）の定義であるＮｅｘｔＨｏｐ決定関数定義３８１ａが格納されている。
【００７８】
ＮｅｘｔＨｏｐ決定関数定義３８１ａの内容は以下の通りである。
Ｆ（ｘ）＝Ｇ（Ｈ（ｘ）％Ｎ）が、Ｆ（ｘ）の計算内容を表している。
ここで、（Ｈ（ｘ）％Ｎ）は、Ｈ（ｘ）をＮで除算した余りを示している。
【００７９】
ｘ＝識別子であるため、識別処理の結果、得られた識別子をパラメータｘに代入する。
ここで、ＭＤ（Message Digest）５は、ハッシュ関数を示している。
Ｈ（ｘ）＝ＭＤ５であるため、識別子のＭＤ５ハッシュを計算する。
【００８０】
Ｎ＝１００であるため、ＭＤ５ハッシュの計算結果（ハッシュ値）を１００で除算した余りを求める。
Ｇ（ｘ）＝Ｔａｂｌｅ１と従属テーブルが指定されているため、求めた余りをキーに従属テーブルのＴａｂｌｅ１を検索する。
【００８１】
なお、図９に示す例では、ＮｅｘｔＨｏｐ決定関数Ｆ（ｘ）のパラメータｘとして識別子を用いたが、これに限らず、「宛先アプリ名」、または、「宛先アプリ名と識別子を繋げたもの」を用いてもよい。但し、パラメータｘとして何を用いるかは、予め（静的に）決めておく。
【００８２】
次に、従属テーブルを説明する。
図１０は、従属テーブルの一例を示す図である。
従属テーブル３８２ａは、１つまたは複数のテーブルを有している。１つのテーブルには、テーブルを識別する名前（図１０では「Ｔａｂｌｅ１」）が設定されている。また、各テーブルには、キー値の欄とアドレスの欄が設けられている。
【００８３】
キー値の欄には、Ｎで除算した余りとして、とり得る可能性のある値が設定されている。
図１０では、図９に示すＮｅｘｔＨｏｐ決定関数定義３８１ａのＧ（ｘ）＝Ｔａｂｌｅ１に対応する従属テーブル３８２ａを示している。従って、ＭＤ５ハッシュの計算結果を１００で除算することによって得られる可能性のある余り０〜９９が設定されている。
【００８４】
アドレスの欄には、キー値に対応する転送先の検索処理装置のアドレスが設定されている。
図１０では、一例として、キー値が偶数のアドレスの欄には、検索処理装置４０ａのアドレス「10.10.10.10:9999」が設定されている。また、キー値が奇数のアドレスの欄には、検索処理装置４０ｂのアドレス「10.10.10.11:9999」が設定されている。
【００８５】
このように、本実施の形態では、検索処理装置選択部３４ａが、識別子に基づいて、転送先の検索処理装置を決定するようにした。従って、宛先アプリ名と転送先アドレスが同じリクエストメッセージ１１ａであっても、キー値が異なれば、これらのリクエストメッセージ１１ａは異なる検索処理装置に送信されることになる。
【００８６】
次に、検索処理装置４０ａの機能を説明する。
図１１は、検索処理装置の機能を示すブロック図である。
検索処理装置４０ａは、リクエストメッセージ受信部４１ａと、中間ヘッダパース部４２ａと、宛先決定部４３ａと、中間ヘッダ削除部４４ａと、リクエストメッセージ送信部４５ａと、転送ルール検索処理部４６ａと、初期アドレス決定部４７ａと、転送ルール格納部４８ａと、エンドポイントリスト格納部４９ａと、転送ルール受付部５１ａとを有している。
【００８７】
リクエストメッセージ受信部４１ａは、識別処理装置３０ａまたは識別処理装置３０ｂからリクエストメッセージ１１ａを受信する。そして、受信したリクエストメッセージ１１ａを中間ヘッダパース部４２ａに送る。
【００８８】
中間ヘッダパース部４２ａは、受信したリクエストメッセージ１１ａの中間ヘッダ１１５のパース処理を実行し、宛先アプリ名と識別子を取得する。そして、その取得した宛先アプリ名と識別子を宛先決定部４３ａに送る。
【００８９】
宛先決定部４３ａは、宛先アプリ名と識別子に基づいて、図１１に示すリクエストメッセージ１１ｂを送信するサーバ装置を決定する。
転送先の決定の際、宛先決定部４３ａは、転送ルール検索処理部４６ａと初期アドレス決定部４７ａを用いる。
【００９０】
中間ヘッダ削除部４４ａは、リクエストメッセージ１１ａに含まれる中間ヘッダ１１５を削除する。これにより、リクエストメッセージ１１と同じリクエストメッセージになる。以降、説明の便宜上、中間ヘッダ１１５を削除したリクエストメッセージ（内容は、リクエストメッセージ１１と同じ）をリクエストメッセージ１１ｂとして説明する。
【００９１】
リクエストメッセージ送信部４５ａは、宛先決定部４３ａが決定した転送先にリクエストメッセージ１１ｂを送信する。
転送ルール検索処理部４６ａは、宛先決定部４３ａの依頼に応じて、転送ルール格納部４８ａに格納されている情報を参照し、転送先のアドレスが存在するか否かを判断する（検索処理）。そして得られた検索結果を宛先決定部４３ａに返す。
【００９２】
転送ルール格納部４８ａには、宛先決定部４３ａが送信するリクエストメッセージ１１ｂの転送先を決定する転送ルールが格納されている。
初期アドレス決定部４７ａは、転送ルール検索処理部４６ａの検索処理によって転送先のアドレスが得られなかったときに、転送先のアドレスを決定する。
【００９３】
具体的には、初期アドレス決定部４７ａは、エンドポイントリスト格納部４９ａに格納されている情報を参照し、転送先のアドレスの検索処理を行う。そして、得られたアドレスを宛先決定部４３ａに返す。
【００９４】
なお、検索結果として複数のアドレスが得られた場合、その中から予め定められたルールに従って１つのアドレスを選択する。
転送ルール受付部５１ａは、転送ルール生成装置６０から後述する転送ルールメッセージを受信すると、転送ルールの設定または設定解除を実行する。
【００９５】
具体的には、受信した転送ルールメッセージに含まれている転送ルールを、転送ルール格納部４８ａに格納する。または、受信した転送ルールメッセージに含まれている転送ルールに一致する転送ルール格納部４８ａに格納されている転送ルールを削除する。
【００９６】
転送ルールの設定後、転送ルール受付部５１ａは、Acknowledgementを転送ルール生成装置６０に返信する。
このように、検索処理装置４０ａは、大きく分けてリクエストメッセージをサーバ装置に送信する処理と、転送ルールを設定する処理の２つの処理を行う。
【００９７】
次に、転送ルール格納部４８ａに格納されている情報を説明する。
図１２は、転送ルールの一例を示す図である。
転送ルール格納部４８ａには、転送ルールがテーブル化されて格納されている。
【００９８】
転送ルールテーブル４８１ａには、宛先アプリ名、識別子、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
宛先アプリ名の欄には、宛先のアプリケーションを示す情報が設定されている。
【００９９】
識別子の欄には、クライアント装置１０ａ、１０ｂを操作する利用者を識別する情報が設定されている。
転送先アドレスの欄には、転送先のサーバ装置のアドレスが設定されている。例えば、「host1.example.com:8080」は、サーバ装置５０ａのアドレスである。「host2.example.com:8080」は、サーバ装置５０ｂのアドレスである。「host3.example.com:8080」は、サーバ装置５０ｃのアドレスである。
【０１００】
このように、転送ルールテーブル４８１ａは、宛先アプリ名と識別子の組に対して転送先サーバのアドレスを保持するものである。
ここで、識別子と転送先サーバの関係は運用中に決まる。このため、転送ルールは、サーバアプリが識別子を決定した際に、転送ルール生成装置６０を通して転送ルールテーブル４８１ａに動的に設定される。
【０１０１】
なお、転送ルールの設定方法の詳細については、後述する。
次に、検索処理装置４０ｂの転送ルール格納部に格納されている情報を説明する。
図１３は、他方の検索処理装置の転送ルールの一例を示す図である。
【０１０２】
検索処理装置４０ｂの転送ルール格納部には、転送ルールがテーブル化されて格納されている。
転送ルールテーブル４８１ｂには、宛先アプリ名、識別子、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
【０１０３】
各欄の項目は、それぞれ、転送ルールテーブル４８１ａと同様である。なお、転送先アドレスの欄に設定されている「host4.example.com:8080」は、サーバ装置５０ｄのアドレスである。「host5.example.com:8080」は、サーバ装置５０ｅのアドレスである。
【０１０４】
但し、転送ルールテーブル４８１ｂに格納されている情報は、転送ルールテーブル４８１ａに格納されている情報の内容が重複しないようになっている。これは、後述する転送ルール生成装置の機能によるものである。
【０１０５】
次に、エンドポイントリスト格納部４９ａに格納されている情報を説明する。
図１４は、エンドポイントリストの一例を示す図である。
エンドポイントリスト格納部４９ａには、エンドポイントリストがテーブル化されて格納されている。
【０１０６】
エンドポイントリストテーブル４９１ａには、宛先アプリ名、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
宛先アプリ名の欄には、宛先アプリを識別する情報が設定されている。
【０１０７】
転送先アドレスの欄には、宛先アプリを有するサーバ装置のアドレスが設定されている。
ここで、エンドポイントリストテーブル４９１ａには、宛先アプリ名のアプリケーションを処理することができる全てのサーバ装置のアドレスが予め設定されている。図１４では、宛先アプリ名が「/services/A1」であるリクエストメッセージ１１ａを処理することができるサーバ装置は、サーバ装置５０ａ〜５０ｄであることが示されている。また、宛先アプリ名が「/services/B2」であるリクエストメッセージ１１ａを処理することができるサーバ装置は、サーバ装置５０ａ〜５０ｅであることが示されている。
【０１０８】
次に、転送ルール生成装置６０の機能を説明する。
図１５は、転送ルール生成装置の機能を示すブロック図である。
転送ルール生成装置６０は、識別子情報受付部６１と、転送ルール生成部６２と、設定先装置選択部６３と、転送ルール送信部６４と、関数定義格納部６５とを有している。
【０１０９】
識別子情報受付部６１は、サーバ装置５０ａ〜５０ｅから識別子情報５００を受け付ける。
この識別子情報５００は、サーバ装置５０ａ〜５０ｅがリクエストに対する処理を行ったときに、ユーザデータのキャッシュが存在しない場合、サーバ装置５０ａ〜５０ｅが転送ルール生成装置６０に通知する情報である。
【０１１０】
転送ルール生成部６２は、サーバ装置５０ａ〜５０ｅが有するアプリケーションの情報と、これらアプリケーションのポート番号の情報とを備えている。
転送ルール生成部６２は、この情報に基づいて、識別子情報受付部６１が受け付けた識別子情報５００に基づいて、識別子情報５００を検索処理装置４０ａ、４０ｂに送信する転送ルール設定メッセージ６００を生成する。
【０１１１】
設定先装置選択部６３は、テーブル配備先決定関数Ｆ（ｘ）により転送ルールを設定する検索処理装置４０ａ、４０ｂを選択する。なお、パラメータｘは、「宛先アプリ名」、「識別子」または「宛先アプリ名と識別子をつなげたもの」のいずれかを用いる。但し、ＮｅｘｔＨｏｐ決定関数定義３８１ａのパラメータｘと同じものを用いる。
【０１１２】
転送ルール送信部６４は、転送ルール生成部６２が生成した転送ルール設定メッセージ６００を、設定先装置選択部６３が選択した設定先に送信する。
関数定義格納部６５は、設定先の検索処理装置を決定するためのテーブル配備先決定関数Ｆ（ｘ）の定義を格納している。このテーブル配備先決定関数Ｆ（ｘ）は、ＮｅｘｔＨｏｐ決定関数Ｆ（ｘ）と同じ関数である。
【０１１３】
ＮｅｘｔＨｏｐ決定関数Ｆ（ｘ）とテーブル配備先決定関数Ｆ（ｘ）で同じ関数を用いることで、識別処理装置３０ａ、３０ｂが送信したリクエストメッセージ１１ａの転送ルールが、検索処理装置４０ａ、４０ｂに存在することを保証することができる。
【０１１４】
次に、識別子情報受付部６１が受け付ける識別子情報５００を説明する。
図１６は、識別子情報の一例を示す図である。
識別子情報５００は、サーバアプリ名、識別子、サーバアドレスの情報を有している。
【０１１５】
サーバアプリ名は、当該識別子情報を送信したサーバアプリを識別する情報である。図１６では、「Ｒｅｑｕｅｓｔ−ＵＲＩ」である「/services/A1」が設定されている。
識別子は、当該識別子情報５００を発信したサーバ装置に処理を依頼したクライアント装置のユーザを識別する情報である。
【０１１６】
サーバアドレスは、当該識別子情報５００を発信したサーバ装置のアドレスである。
次に、転送ルール設定メッセージ６００を説明する。
図１７は、転送ルール設定メッセージの一例を示す図である。
【０１１７】
転送ルール設定メッセージ６００は、宛先アプリ名、識別子、転送先アドレス、操作の情報を有している。
宛先アプリ名、識別子は、それぞれ、識別子情報５００のサーバアプリ名、識別子と同じ情報である。
【０１１８】
転送先アドレスは、識別子情報５００のサーバアドレスにポート番号を追加したものである。この転送先アドレスは、以下のようにして取得することができる。
転送ルール生成部６２は、前述したように、サーバ装置５０ａ〜５０ｅが有するアプリケーションの情報と、これらアプリケーションのポート番号の情報とを備えている。
【０１１９】
転送ルール生成部６２は、識別子情報５００に含まれるサーバアドレスと宛先アプリ名に基づいて、サーバ装置５０ａ〜５０ｅが有するアプリケーションを特定する。そして、転送ルール生成部６２が備える情報を参照し、特定したアプリケーションのポート番号を特定する。そして、特定したポート番号を、識別子情報５００のサーバアドレスに追加する。
【０１２０】
操作は、転送ルールテーブル４８１ａに情報を追加するか、削除するかを決定する情報が設定されている。この情報が「追加」である場合、転送ルール設定メッセージ６００は、転送ルールテーブル４８１ａに当該情報の追加を要求するメッセージとなる。他方、この情報が「削除」である場合、転送ルール設定メッセージ６００は、転送ルールテーブル４８１ａに当該情報に一致するエントリの削除を要求するメッセージとなる。
【０１２１】
次に、従属テーブル６５ａを説明する。
図１８は、従属テーブルの一例を示す図である。
従属テーブル６５ａには、キー値の欄とアドレスの欄が設けられている。
【０１２２】
キー値の欄には、ＭＤ５ハッシュの計算結果を除算することによって得られる可能性のある余りが設定されている。
図１８では、ＮｅｘｔＨｏｐ決定関数定義３８１ａと同じテーブル配備先決定関数定義の従属テーブル６５ａを示している。従って、ＭＤ５ハッシュの計算結果を１００で除算することによって得られる可能性のある余り０〜９９が設定されている。
【０１２３】
アドレスの欄には、キー値に対応するアドレスが設定されている。
図１８では、一例として、キー値が偶数のアドレスの欄には、検索処理装置４０ａのアドレス「10.10.10.10:8888」が設定されている。また、キー値が奇数のアドレスの欄には、検索処理装置４０ｂのアドレス「10.10.10.11:8888」が設定されている。
【０１２４】
なお、アドレスのポート番号部分については必ずしも従属テーブル３８２ａと同じものである必要はない。
次に、システム１００の全体処理を説明する。
【０１２５】
最初に、転送ルールテーブル４８１ａにリクエストメッセージ１１ａに対する転送先の情報が設定されていなかったときのシステム１００の処理（第１の処理）を説明する。その後、転送ルールテーブル４８１ａにリクエストメッセージ１１ａに対する転送先の情報が設定されているときのシステム１００の処理（第２の処理）を説明する。
【０１２６】
＜第１の処理＞
図１９は、システムの第１の処理を示す図である。
クライアント装置１０ａまたはクライアント装置１０ｂ（図１９ではクライアント装置１０ａ）がリクエストメッセージ１１をサーバアプリに送信する。
【０１２７】
このとき、クライアント装置１０ａが送信するリクエストメッセージ１１のネットワークアドレスはロードバランサ２０のネットワークアドレスとなる。これにより、クライアント装置１０ａは、ロードバランサ２０上に割り振られた仮想サーバにアクセスすることになる（ステップＳ１）。
【０１２８】
リクエストメッセージ１１を受信したロードバランサ２０は、予め設定された負荷分散アルゴリズムに従って、負荷分散対象の識別処理装置３０ａ、３０ｂのいずれか一方を転送先として決定する。そして、決定した識別処理装置（図１９では識別処理装置３０ａ）に、リクエストメッセージ１１を送信する（ステップＳ２）。
【０１２９】
リクエストメッセージ１１を受信した識別処理装置３０ａは、識別処理を行う。そして、得られた識別子に基づいて、転送先の検索処理装置４０ａ、４０ｂのいずれか一方を転送先として決定する。
【０１３０】
このとき、識別処理装置３０ａは、宛先アプリ名および識別子を中間ヘッダ１１５としてリクエストメッセージ１１に追加する。
そして、転送先として決定した検索処理装置（図１９では検索処理装置４０ｂ）に、リクエストメッセージ１１ａを送信する（ステップＳ３）。
【０１３１】
リクエストメッセージ１１ａを受信した検索処理装置４０ｂは、中間ヘッダ１１５から宛先アプリ名および識別子を取得する。そして、取得した宛先アプリ名と識別子をキーワードとして転送ルールテーブル４８１ｂを検索する。転送ルールテーブル４８１ｂにはキーワードに一致する転送ルールが存在しないため、検索処理装置４０ｂは、負荷分散対象のサーバ装置５０ａ〜５０ｅのいずれかを転送先のサーバ装置として決定する。
【０１３２】
このとき、検索処理装置４０ｂは、リクエストメッセージ１１ａの中間ヘッダ１１５を削除する。
そして、転送先として決定したサーバ装置（図１９では、サーバ装置５０ｅ）にリクエストメッセージ１１ｂを送信する（ステップＳ４）。
【０１３３】
リクエストメッセージ１１ｂを受信したサーバ装置５０ｅは、リクエストの処理を行う。処理の中でユーザデータのキャッシュを新規に生成する。
そして、生成したユーザデータのキャッシュに関する識別子情報５００を転送ルール生成装置６０に通知する（ステップＳ５）。
【０１３４】
転送ルール生成装置６０は、通知された識別子情報５００に基づいて、転送ルールを生成する。そして、生成した転送ルールに基づいて検索処理装置４０ａ、４０ｂのいずれか一方を送信先として決定する。
【０１３５】
ここで、サーバ装置５０ｅにリクエストメッセージ１１ｂを送信したのは検索処理装置４０ｂであるため、送信先も検索処理装置４０ｂになる。
そして、決定した検索処理装置４０ｂに、転送ルール設定メッセージ６００を送信する（ステップＳ６）。
【０１３６】
その後、転送ルール設定メッセージ６００を受信した検索処理装置４０ｂは、転送ルールを設定する。
以上で、第１の処理の説明を終了する。
【０１３７】
次に、システム１００の第２の処理を説明する。
＜第２の処理＞
図２０は、システムの第２の処理を示す図である。
【０１３８】
クライアント装置１０ｂが第１の処理と同じサーバアプリにリクエストメッセージ１１を送信する（ステップＳ１１）。
リクエストメッセージ１１を受信したロードバランサ２０は、負荷分散対象の識別処理装置３０ａ、３０ｂの中から転送先を決定する。そして決定した転送先にリクエストメッセージ１１を送信する（ステップＳ１２）。
【０１３９】
リクエストメッセージ１１を受信した識別処理装置３０ａは、識別処理を行う。そして、処理の結果得られた識別子に基づいて転送先の検索処理装置を決定する。
このとき、識別処理装置３０ａは、宛先アプリ名および識別子を中間ヘッダ１１５としてリクエストメッセージ１１に追加する。
【０１４０】
そして、決定した検索処理装置４０ｂにリクエストメッセージ１１ａを送信する（ステップＳ１３）。
リクエストメッセージ１１ａを受信した検索処理装置４０ｂは、中間ヘッダ１１５から宛先アプリ名および識別子を取得する。そして、取得した宛先アプリ名と識別子をキーワードとして転送ルールテーブル４８１ａを検索する。転送ルールテーブルには第１の処理によって得られた該当する転送ルールのエントリが存在する。従って、転送先のサーバ装置５０ｅのアドレスが得られる。
【０１４１】
このとき、検索処理装置４０ｂは、リクエストメッセージ１１ａに含まれる中間ヘッダ１１５を削除する。
検索処理装置４０ｂは得られたアドレス、すなわち、サーバ装置５０ｅにリクエストメッセージ１１ｂを送信する（ステップＳ１４）。
【０１４２】
リクエストメッセージ１１ｂを受信したサーバ装置５０ｂは、第１の処理の中で生成したユーザデータのキャッシュを用いて、リクエストメッセージ１１ｂの処理を行う。そして、処理結果をクライアント装置１０ａに応答する。
【０１４３】
このとき、サーバ装置５０ｂは、ユーザデータのキャッシュが既に存在するため、転送ルール生成装置６０に識別子情報５００を送信しない。
以上で第２の処理の説明を終了する。
【０１４４】
次に、第１の処理および第２の処理における識別処理装置３０ａ、３０ｂの処理を詳しく説明する。
図２１は、識別処理装置の処理を示すフローチャートである。
【０１４５】
まず、リクエストメッセージ受信部３１ａがリクエストメッセージ１１を受信する（ステップＳ２１）。そして、リクエストメッセージ受信部３１ａは、受信したリクエストメッセージ１１を識別処理部３２ａに送る。
【０１４６】
識別処理部３２ａは、リクエストメッセージ１１に含まれる宛先アプリ名と識別子を抽出する（ステップＳ２２）。
宛先アプリ名の抽出については、受信したリクエストメッセージのプロトコル番号、ポート番号をキーワードとして宛先アプリ名ルールテーブル３６１ａを参照する。そして、抽出対象となるメッセージフォーマットとその抽出場所を特定する。そして、特定した宛先アプリ名を抽出する。
【０１４７】
また、識別子の抽出については、宛先アプリ名をキーワードとして識別ルールテーブル３７１ａを参照する。そして、抽出対象となるリクエストメッセージ１１のフォーマットとその抽出場所を特定する。そして、特定した識別子を抽出する。
【０１４８】
そして、得られた宛先アプリ名および識別子とともにリクエストメッセージ１１を中間ヘッダ追加部３３ａに送る。
中間ヘッダ追加部３３ａは、リクエストメッセージ１１のレイヤ７プロトコルヘッダ１１３の前部に中間ヘッダ１１５を挿入（追加）する（ステップＳ２３）。
【０１４９】
そして、中間ヘッダ１１５を追加したリクエストメッセージ１１ａを検索処理装置選択部３４ａに送る。
検索処理装置選択部３４ａは、ＮｅｘｔＨｏｐ決定関数定義３８１ａのパラメータｘに識別子を代入することによりキー値を決定する。そして従属テーブル３８２ａを参照することにより、決定したキー値に一致する転送先の検索処理装置のアドレスを決定する（ステップＳ２４）。そして、決定したアドレスとリクエストメッセージ１１ａとをリクエストメッセージ送信部３５ａに送る。
【０１５０】
リクエストメッセージ送信部３５ａは、受け取ったリクエストメッセージ１１ａを受け取ったアドレスに送信する（ステップＳ２５）。
以上で、識別処理装置３０ａ、３０ｂの処理の説明を終了する。
【０１５１】
次に、ステップＳ２４の転送先の検索処理装置のアドレスの決定方法を説明する。
以下、図９に示すＮｅｘｔＨｏｐ決定関数定義３８１ａが定義されている場合の検索処理装置選択部３４ａの処理内容を説明する。
１）ｘ＝識別子であるため、識別処理結果の識別子、例えば「sip:bob@example.com」をｘに代入する。
２）Ｈ（ｘ）＝ＭＤ５であるため識別子「sip:bob@example.com」のＭＤ５ハッシュを計算する。
３）Ｎ＝１００であるため計算結果を１００で除算した余りを求める。仮にこの値が０だったとする。
４）Ｇ（ｘ）＝Ｔａｂｌｅ１と、従属テーブルとして、従属テーブル３８２ａが指定されているため、計算結果０をキーに従属テーブル３８２ａのＴａｂｌｅ１を検索する。
５）結果、Ｆ（ｘ）として、キー値が「０」のアドレス「10.10.10.10:9999」が得られる。
【０１５２】
次に、検索処理装置４０ａ、４０ｂの処理を説明する。
図２２は、検索処理装置の処理を示すフローチャートである。
＜リクエストメッセージ受信時の動作＞
リクエストメッセージ受信部４１ａがリクエストメッセージ１１ａを受信すると、中間ヘッダパース部４２ａに受信したリクエストメッセージ１１ａを送る（ステップＳ３１）。
【０１５３】
中間ヘッダパース部４２ａは、中間ヘッダ１１５の解析処理を行い、宛先アプリ名および識別子を抽出する（ステップＳ３２）。その後、抽出した宛先アプリ名および識別子と、リクエストメッセージ１１ａとを宛先決定部４３ａに送る。
【０１５４】
宛先決定部４３ａは、宛先決定処理を行って、転送先のサーバ装置のアドレスを決定する（ステップＳ３３）。そして、決定した転送先のサーバ装置のアドレスとリクエストメッセージ１１ａとを中間ヘッダ削除部４４ａに送る。なお、宛先決定処理は後に詳述する。
【０１５５】
中間ヘッダ削除部４４ａは、リクエストメッセージ１１ａに含まれる中間ヘッダ１１５を削除する（ステップＳ３４）。そして、中間ヘッダ１１５を削除したリクエストメッセージ１１ｂと転送先のアドレスをリクエストメッセージ送信部４５ａに送る。
【０１５６】
中間ヘッダ削除後のリクエストメッセージ１１ｂは図５に示すリクエストメッセージ１１と同じメッセージになる。すなわち、クライアント装置１０ａが送信したリクエストメッセージ１１と同じものとなる。
【０１５７】
リクエストメッセージ送信部４５ａは、転送先のアドレスにリクエストメッセージ１１ｂを送信する（ステップＳ３５）。
以上で、検索処理装置の処理の説明を終了する。
【０１５８】
次に、ステップＳ３３の宛先決定処理を説明する。
図２３は、宛先決定処理を示すフローチャートである。
宛先決定部４３ａは、中間ヘッダパース部４２ａから宛先アプリ名、識別子、リクエストメッセージ１１ａを受け取ると、まず、受け取った宛先アプリ名と識別子とを転送ルール検索処理部４６ａに渡し、転送ルールの検索処理を依頼する（ステップＳ４１）。転送ルール検索処理部４６ａは、宛先アプリ名と識別子をキーワードに転送ルールテーブル４８１ａを検索する。転送ルール検索処理部４６ａの戻り値は、転送先のアドレス、または、ｎｕｌｌである。宛先決定部４３ａは、戻り値がアドレスか否かを判断する（ステップＳ４２）。
【０１５９】
アドレスが得られた場合（ステップＳ４２のＹｅｓ）、宛先決定部４３ａは、得られたアドレスを転送先のアドレスとして決定する（ステップＳ４３）。
一方、アドレスが得られなかった場合（ステップＳ４２のＮｏ）、宛先アプリ名を初期アドレス決定部４７ａに渡し転送先のアドレスの決定を依頼する。初期アドレス決定部４７ａは、宛先アプリ名をキーワードとして、エンドポイントリストテーブル４９１ａを検索する。宛先アプリ名をキーワードとして検索を行った場合、検索結果として複数のアドレスが得られる可能性がある。初期アドレス決定部４７ａは、得られたアドレスの中から自律的に１つのアドレスを選択する。そして、選択したアドレスを転送先のアドレスとして宛先決定部４３ａに返す。結果、宛先決定部４３ａは戻り値として転送先のアドレスを得る（ステップＳ４４）。
【０１６０】
宛先決定部４３ａは、ステップＳ４４にて得られたアドレスを転送先のアドレスとして決定する（ステップＳ４３）。
以上で、宛先決定処理の説明を終了する。
【０１６１】
次に、転送ルール設定メッセージ受信時の処理を説明する。
まず、転送ルール生成装置６０の処理（転送ルール生成処理）を説明する。
図２４は、転送ルール生成処理を示すフローチャートである。
【０１６２】
識別子情報受付部６１は、リクエストメッセージ１１ｂを処理したサーバ装置からの識別子情報５００を受け付ける（ステップＳ５１）。
転送ルール生成部６２は、受け付けた識別子情報５００に基づいて、転送ルール設定メッセージ６００を生成する（ステップＳ５２）。
【０１６３】
設定先装置選択部６３は、関数定義格納部６５に格納されているテーブル配備先決定関数定義を参照する。そして転送ルールの設定先となる検索処理装置のアドレスを決定する（ステップＳ５３）。
【０１６４】
ここで、テーブル配備先決定関数定義は図２１の通りＮｅｘｔＨｏｐ決定関数定義３８１ａと同じ関数を使用する。なお、ＮｅｘｔＨｏｐ決定関数定義３８１ａと同様に図１８のように従属テーブルを用意してもよい。
【０１６５】
転送ルール送信部６４は、設定先装置選択部６３が決定した転送ルールの設定先アドレスへ転送ルール設定メッセージ６００を送信する（ステップＳ５４）。
以上で、転送ルール生成装置６０の処理の説明を終了する。
【０１６６】
次に、検索処理装置４０ａが、転送ルール設定メッセージを受信したときの処理（転送ルール設定処理）を説明する。
図２５は、転送ルール設定処理を示すフローチャートである。
【０１６７】
転送ルール受付部５１ａは、転送ルール設定メッセージ６００を受け付ける（ステップＳ６１）。
次に、転送ルール受付部５１ａは、転送ルール設定メッセージ６００の操作の欄を参照し、操作の内容を判断する（ステップＳ６２）。
【０１６８】
操作が追加である場合（ステップＳ６２の追加）、転送ルールテーブル４８１ａのエントリに転送ルールを追加する（ステップＳ６３）。
その後、Acknowledgementを転送ルール生成装置６０に返信する（ステップＳ６４）。
【０１６９】
一方、操作が削除である場合（ステップＳ６２の削除）、転送ルールテーブル４８１ａから転送ルール設定メッセージに一致する転送ルールを削除する（ステップＳ６５）。
その後、Acknowledgementを転送ルール生成装置６０に返信する（ステップＳ６４）。
【０１７０】
以上で、転送ルール設定処理の説明を終了する。
以上述べたように、システム１００によれば、識別処理と検索処理の機能を別個の装置に実行させることにより、検索処理装置の処理の負荷を軽減させることができる。
【０１７１】
具体的には、検索処理装置選択部３４ａが、リクエストメッセージ１１から抽出した識別子を、ＮｅｘｔＨｏｐ決定関数定義３８１ａに代入することにより得られたアドレスに従い、リクエストメッセージ１１ａを送信する検索処理装置４０ａ、４０ｂを決定するようにした。
【０１７２】
従って、同じ識別子を備えるリクエストメッセージ１１ａは、同じ検索処理装置に送信される。
また、中間ヘッダ１１５を設けて、抽出した識別子をこの中間ヘッダ１１５に設定するようにした。
【０１７３】
これにより、検索処理装置４０ａ、４０ｂは、中間ヘッダ１１５を参照することで、再度識別処理を行う必要がない。
また、転送ルール生成装置６０が、識別子情報５００を受け取ると、設定先装置選択部６３が、ＮｅｘｔＨｏｐ決定関数定義３８１ａと同じテーブル配備先決定関数定義を用いて転送ルールの送信先を決定するようにした。これにより、リクエストメッセージ１１ａと同じ識別子を備える転送ルールは、リクエストメッセージ１１ａを送信した検索処理装置と同じ検索処理装置に送信される。
【０１７４】
そして、転送ルールを受信した検索処理装置４０ａ、４０ｂが、その転送ルールを転送ルール格納部４８ａに格納し、以降の転送先の決定に使用するようにした。
これにより、例えば、検索処理装置４０ａは、以前送られてきたリクエストメッセージ１１ａと同じ識別子を中間ヘッダ１１５に備えるリクエストメッセージ１１ａが送られてきたときは、エンドポイントリストテーブル４９１ａよりもデータ格納量の少ない転送ルールテーブル４８１ａに、リクエストメッセージ１１ｂの転送先アドレスが必ず格納されていることが保証される。これにより、迅速に転送先のサーバ装置にリクエストメッセージ１１ｂを送信することができる。
【０１７５】
以上、本発明のデータ処理装置、データ処理プログラムおよびデータ処理方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１７６】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、識別処理装置３０ａ、３０ｂおよび検索処理装置４０ａ、４０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１７７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１７８】
データ処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１７９】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する受信部と、
前記受信部が受信したデータから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理部と、
前記識別処理部が抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置決定部と、
前記データ、前記転送先情報および前記転送元情報を前記検索装置決定部により決定された前記検索装置に送信する送信部と、
を有することを特徴とするデータ処理装置。
【０１８０】
（付記２）  前記転送先情報は、前記サーバコンピュータ上で動作するコンピュータのプログラムを特定する情報を有しており、前記転送元情報はクライアントコンピュータを操作する利用者に関する情報を有していることを特徴する付記１記載のデータ処理装置。
【０１８１】
（付記３）  前記検索装置決定部は、前記転送元情報を基に前記検索装置を決定することを特徴とする付記１記載のデータ処理装置。
（付記４）  前記転送先情報および前記転送元情報を前記データ内の所定位置に追加する追加処理部をさらに有することを特徴とする付記１記載のデータ処理装置。
【０１８２】
（付記５）  クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータと、転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報とを受信する受信部と、
前記受信部が受信した情報を基に転送先の前記サーバコンピュータを決定する転送先決定部と、
転送先の前記サーバコンピュータに前記データを送信する送信部と、
を有することを特徴とするデータ処理装置。
【０１８３】
（付記６）  前記サーバコンピュータのアドレスを前記転送先情報および前記転送元情報とともに受信する転送ルール受信部と、
前記転送ルール受信部が受信した前記サーバコンピュータのアドレスと前記転送先情報と前記転送元情報とを関連づけて記憶する記憶部とをさらに有し、
前記転送先決定部は、前記受信部が受信した前記転送元情報に一致する前記記憶部に記憶された前記転送元情報に関連づけられた前記サーバコンピュータのアドレスを、転送先として決定することを特徴とする付記５記載のデータ処理装置。
【０１８４】
（付記７）  前記転送ルール受信部は、前記受信部が受信した前記転送元情報と同じ転送元情報を、前記サーバコンピュータのアドレスおよび前記転送先情報とともに受信することを特徴とする付記６記載のデータ処理装置。
【０１８５】
（付記８）  前記転送先情報および前記転送元情報は、前記データの所定位置に付加されており、
前記受信部は、前記転送先情報および前記転送元情報を前記所定位置から抽出することを特徴とする付記５ないし７のいずれかに記載のデータ処理装置。
【０１８６】
（付記９）  転送先の前記サーバコンピュータを決定後、付加された前記転送先情報と前記転送元情報を削除する削除部とをさらに有することを特徴とする付記８記載のデータ処理装置。
【０１８７】
（付記１０）  前記転送先情報は、前記サーバコンピュータ上で動作するコンピュータのプログラムを特定する特定情報を有しており、前記転送元情報はクライアントコンピュータを操作する利用者を識別する識別情報を有していることを特徴する付記５ないし９のいずれかに記載のデータ処理装置。
【０１８８】
（付記１１）  コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する受信手順と、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理手順と、
抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置選択手順と、
前記データ、前記転送先情報および前記転送元情報を決定された前記検索装置に送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
【０１８９】
（付記１２）  コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータ、通知された転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報を受信する受信手順と、
前記転送元情報を基に転送先の前記サーバコンピュータを決定する転送先決定手順と、
転送先の前記サーバコンピュータに前記データを送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
【０１９０】
（付記１３）  クライアントコンピュータから複数のサーバコンピュータの１つへ送信されるデータを受信する第１の装置が、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出し、
抽出した情報を基に前記サーバコンピュータを検索する第２の装置を決定し、
前記データ、前記転送先情報および前記転送元情報を前記第２の装置に送信し、
前記第２の装置が、受信した前記転送先情報と前記転送元情報を基に転送先の前記サーバコンピュータを決定し、
決定した転送先の前記サーバコンピュータに前記データを送信する、
ことを特徴とするデータ処理方法。
【符号の説明】
【０１９１】
１  データ処理装置
１ａ、３ａ  受信部
１ｂ  識別処理部
１ｃ  装置決定部
１ｄ、３ｃ  送信部
２  クライアントコンピュータ
２ａ  データ
３、４  検索装置
３ｂ  転送先決定部
５、６、７  サーバコンピュータ
１０ａ、１０ｂ  クライアント装置
１１、１１ａ、１１ｂ  リクエストメッセージ
２０  ロードバランサ
３０ａ、３０ｂ  識別処理装置
３１ａ  リクエストメッセージ受信部
３２ａ  識別処理部
３３ａ  中間ヘッダ追加部
３４ａ  検索処理装置選択部
３５ａ  リクエストメッセージ送信部
３６ａ  宛先アプリ名ルール格納部
３７ａ  識別ルール格納部
３８ａ、６５  関数定義格納部
４０ａ、４０ｂ  検索処理装置
４１ａ  リクエストメッセージ受信部
４２ａ  中間ヘッダパース部
４３ａ  宛先決定部
４４ａ  中間ヘッダ削除部
４５ａ  リクエストメッセージ送信部
４６ａ  転送ルール検索処理部
４７ａ  初期アドレス決定部
４８ａ  転送ルール格納部
４９ａ  エンドポイントリスト格納部
５０ａ、５０ｂ  サーバ装置
５１ａ  転送ルール受付部
６０  転送ルール生成装置
６１  識別子情報受付部
６２  転送ルール生成部
６３  設定先装置選択部
６４  転送ルール送信部
６５ａ、３８２ａ  従属テーブル
７０  ネットワーク
１００  システム
１１１  ＩＰヘッダ
１１２  ＴＣＰヘッダ
１１３  レイヤ７プロトコルヘッダ
１１４  メッセージコンテンツ
１１５  中間ヘッダ
３６１ａ  宛先アプリ名ルールテーブル
３７１ａ  識別ルールテーブル
３８１ａ  ＮｅｘｔＨｏｐ決定関数定義
４８１ａ、４８１ｂ  転送ルールテーブル
４９１ａ  エンドポイントリストテーブル
５００  識別子情報
６００  転送ルール設定メッセージ
【図１】
2011008484.tif 000003
【図２】
2011008484.tif 000004
【図３】
2011008484.tif 000005
【図４】
2011008484.tif 000006
【図５】
2011008484.tif 000007
【図６】
2011008484.tif 000008
【図７】
2011008484.tif 000009
【図８】
2011008484.tif 000010
【図９】
2011008484.tif 000011
【図１０】
2011008484.tif 000012
【図１１】
2011008484.tif 000013
【図１２】
2011008484.tif 000014
【図１３】
2011008484.tif 000015
【図１４】
2011008484.tif 000016
【図１５】
2011008484.tif 000017
【図１６】
2011008484.tif 000018
【図１７】
2011008484.tif 000019
【図１８】
2011008484.tif 000020
【図１９】
2011008484.tif 000021
【図２０】
2011008484.tif 000022
【図２１】
2011008484.tif 000023
【図２２】
2011008484.tif 000024
【図２３】
2011008484.tif 000025
【図２４】
2011008484.tif 000026
【図２５】
2011008484.tif 000027