JP5316259B2 - データ処理装置、データ処理プログラムおよびデータ処理方法 - Google Patents

データ処理装置、データ処理プログラムおよびデータ処理方法 Download PDF

Info

Publication number
JP5316259B2
JP5316259B2 JP2009150780A JP2009150780A JP5316259B2 JP 5316259 B2 JP5316259 B2 JP 5316259B2 JP 2009150780 A JP2009150780 A JP 2009150780A JP 2009150780 A JP2009150780 A JP 2009150780A JP 5316259 B2 JP5316259 B2 JP 5316259B2
Authority
JP
Japan
Prior art keywords
transfer
information
destination
data
unit
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.)
Expired - Fee Related
Application number
JP2009150780A
Other languages
English (en)
Other versions
JP2011008484A (ja
Inventor
圭 濱田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009150780A priority Critical patent/JP5316259B2/ja
Priority to US12/816,866 priority patent/US8914436B2/en
Publication of JP2011008484A publication Critical patent/JP2011008484A/ja
Application granted granted Critical
Publication of JP5316259B2 publication Critical patent/JP5316259B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • H04L2101/365Application layer names, e.g. buddy names, unstructured names chosen by a user or home appliance name
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Facsimiles In General (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はデータ処理装置、データ処理プログラムおよびデータ処理方法に関する。
近年SOA(Service Oriented Architecture)等のシステムアーキテクチャの普及に伴い、企業のITシステムやデータセンタ等において、アプリケーション間のメッセージのやり取りにSOAP(Simple Object Access Protocol)を用いる技術が知られている。
SOAPの通信内容の記述には、XML(Extensible Markup Language)が用いられる。
また、メッセージのやり取りに際し、メッセージを中継する中継装置が知られている。
中継装置は、アプリケーション同士がやり取りするメッセージ中の値に基づいて、アプリケーション間のメッセージを中継する。
例えば、アプリケーションの負荷分散を行う場合、中継装置は、メッセージ中のIDやユーザ名に基づき転送先のサーバを決定することで、振り分けの一意性を保証する。
ここで、中継装置は、メッセージに含まれる値を識別(解析)する必要があるため、処理負荷が高くなる場合がある。
このため、中継装置1台当たりの負荷を軽減するために、複数の中継装置を用意しロードバランサにて中継装置の負荷分散を行う技術が知られている。
特開2000−138687号公報
ロードバランサは、負荷が1つの中継装置に集中しないよう転送先の中継装置を決定する。このため、中継装置ではメッセージがどの中継装置に転送されても転送ルールの検索を可能とするために、全ての装置において同じ転送ルールを保持しておく必要がある。
しかしながら、全ての中継装置が同じ転送ルールテーブルを保持する場合、転送ルールテーブルのエントリ数が増大する。
これにより、全ての中継装置において転送ルールの検索処理のコストが増大し、処理性能が低下するという問題がある。
また、転送ルールテーブルが増大しても処理性能を低下させないようなハードウェアを導入しても、実装コストが増大するという問題がある。
本発明はこのような点に鑑みてなされたものであり、処理性能の低下を防止するデータ処理装置、データ処理プログラムおよびデータ処理方法を提供することを目的とする。
上記目的を達成するために、開示のデータ処理装置が提供される。このデータ処理装置は、受信部と、識別処理部と、装置決定部と、送信部とを有している。
受信部は、クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する。
識別処理部は、受信部が受信したデータから、転送先のサーバコンピュータに関する転送先情報と転送元のクライアントコンピュータに関する転送元情報を抽出する。
検索装置決定部は、識別処理部が抽出した情報を基に転送先のサーバコンピュータを検索する検索装置を決定する。
送信部は、データ、転送先情報および転送元情報を検索装置決定部により決定された検索装置に送信する。
開示のデータ処理装置によれば、処理性能の低下を防止することができる。
実施の形態のデータ処理装置の概要を示す図である。 実施の形態のシステムを示す図である。 識別処理装置のハードウェア構成例を示す図である。 識別処理装置の機能を示すブロック図である。 クライアント装置が送信するリクエストメッセージの一例を示す図である。 識別処理装置が送信するリクエストメッセージの一例を示す図である。 宛先アプリ名ルールの一例を示す図である。 識別ルールの一例を示す図である。 関数定義格納部に格納されている情報を示す図である。 従属テーブルの一例を示す図である。 検索処理装置の機能を示すブロック図である。 転送ルールの一例を示す図である。 他方の検索処理装置の転送ルールの一例を示す図である。 エンドポイントリストの一例を示す図である。 転送ルール生成装置の機能を示すブロック図である。 識別子情報の一例を示す図である。 転送ルール設定メッセージの一例を示す図である。 従属テーブルの一例を示す図である。 システムの第1の処理を示す図である。 システムの第2の処理を示す図である。 識別処理装置の処理を示すフローチャートである。 検索処理装置の処理を示すフローチャートである。 宛先決定処理を示すフローチャートである。 転送ルール生成処理を示すフローチャートである。 転送ルール設定処理を示すフローチャートである。
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のデータ処理装置について説明し、その後、実施の形態をより具体的に説明する。
<第1の実施の形態>
図1は、実施の形態のデータ処理装置の概要を示す図である。
実施の形態のデータ処理装置1は、受信部1aと、識別処理部1bと、検索装置決定部1cと、送信部1dとを有している。
受信部1aは、クライアントコンピュータ2から複数のサーバコンピュータ5〜7の1つへ送信されるデータ2aを受信する。
識別処理部1bは、受信部1aが受信したデータから、転送先のサーバコンピュータ5〜7に関する転送先情報と転送元のクライアントコンピュータ2に関する転送元情報を抽出する。
転送先情報としては、例えば、サーバコンピュータ5〜7上で動作するプログラムを特定する情報(アプリケーション名)等が挙げられる。
転送元情報としては、例えば、クライアントコンピュータ2を操作する利用者を識別する情報等が挙げられる。
ここで、転送先情報および転送元情報は、データ2a内の所定位置に追加するのが好ましい。これにより、後述する検索装置3において、転送先情報および転送元情報を削除する際に、削除する箇所を容易に特定することができる。
検索装置決定部1cは、識別処理部1bが抽出した情報を基に転送先のサーバコンピュータ5〜7を検索する検索装置3または検索装置4を決定する。
この決定方法は、特に限定されないが、例えば、予め用意しておいた決定基準に基づいて、同じ転送元情報を有するデータは、同一の検索装置に送信するようにする。ここでは、検索装置3を決定したものとして説明する。
送信部1dは、データ2a、転送先情報および転送元情報を決定された検索装置3に送信する。
このようなデータ処理装置1によれば、予め必要となる転送先情報と転送元情報を抽出しておくことで、後段の検索装置3、4の処理の負荷を軽減することができる。従って、処理性能の低下を防止することができる。
検索装置3は、受信部3aと、転送先決定部3bと、送信部3cとを有している。
受信部3aは、クライアントコンピュータ2からのサーバコンピュータ5〜7の1つへ送信されるデータ2aと、転送先情報および転送元情報とを受信する。
前述したように、転送先情報および転送元情報が、データ2a内の所定位置に追加されている場合、その位置を参照することにより、転送先情報および転送元情報を容易に取得することができる。
転送先決定部3bは、転送先情報と転送元情報を基に転送先のサーバコンピュータを決定する。
例えば、転送元情報に対応する転送先のサーバコンピュータの関係を示す情報が検索装置3に格納されており、その情報に基づいて、転送先のサーバコンピュータを決定する。
送信部3cは、転送先のサーバコンピュータにデータ2aを送信する。
ここで、転送先情報および転送元情報が、データ2a内の所定位置に追加されている場合、その所定位置から転送先情報と転送元情報を削除するようにするのが好ましい。
これにより、サーバコンピュータの処理に不必要な情報を送ることがないので、サーバコンピュータ側で無駄な処理が行われることを防止することができる。
検索装置3では、転送先のサーバコンピュータを決定するために必要な転送先情報と転送元情報を受け取るため、検索装置3側では、これらの情報を別個に抽出する処理を行う必要がない。従って、処理負荷を軽減することができる。
<第2の実施の形態>
以下、実施の形態をより具体的に説明する。
図2は、実施の形態のシステムを示す図である。
システム100は、クライアント装置10a、10bと、ロードバランサ20と、識別処理装置30a、30bと、検索処理装置40a、40bと、サーバ装置50a〜50eと、転送ルール生成装置60とを有している。
クライアント装置10a、10bは、それぞれ、ネットワークを介してロードバランサ20に接続されている。
クライアント装置10a、10bは、それぞれ、少なくとも1つのアプリケーション(クライアントアプリ)を有している。
これらクライアントアプリは、それぞれ、サーバ装置50a〜50eが備えるアプリケーション(サーバアプリ)に所定の動作を要求(リクエスト)するメッセージ(以下、リクエストメッセージと言う)を送信する。
サーバアプリは、識別処理装置30a、30b並びに検索処理装置40a、40b、および、ロードバランサ20によって仮想化される。
このため、クライアント装置10a、10bが送信するサーバアプリへのリクエストメッセージのネットワークアドレスはロードバランサ20のアドレスとなる。
ロードバランサ20は、ネットワークを介して識別処理装置30a、30bに接続されている。
ロードバランサ20は、クライアント装置10a、10bからのリクエストメッセージを受信すると、識別処理装置30aおよび識別処理装置30bの負荷等に基づいて、転送先の識別処理装置を決定する。
また、ロードバランサ20は、振り分け先のサーバ装置50a〜50eからリクエストメッセージに対する応答を受信すると、リクエストメッセージを送信したクライアント装置10aまたはクライアント装置10bに対し、その応答を返す。
識別処理装置30a、30b並びに、検索処理装置40a、40bは、リクエストメッセージを中継する中継装置としての機能を有している。
識別処理装置30a、30bは、それぞれ、ネットワークを介して検索処理装置40a、40bに接続されている。
識別処理装置30a、30bは、それぞれ、同じ機能を有している。
例えば、識別処理装置30aは、ロードバランサ20からリクエストメッセージを受け取ると、そのメッセージに基づいて、転送先のサーバ装置50a〜50eと転送元のクライアント装置10a、10bを識別する識別処理を行う。
また、識別処理装置30aは、識別処理の結果を含むリクエストメッセージを送信する検索処理装置40a、40bを決定する。
そして、決定した検索処理装置に識別処理の結果を含むリクエストメッセージを送信する。
検索処理装置40a、40bは、それぞれ、ネットワークを介してサーバ装置50a〜50eに接続されている。
検索処理装置40a、40bは、それぞれ、同じ機能を有している。
例えば、検索処理装置40aは、識別処理装置30aから識別処理の結果を含むリクエストメッセージを受け取ると、リクエストメッセージに含まれる識別処理の結果に基づいて、転送先のサーバ装置を決定する。
そして、決定したサーバ装置にリクエストメッセージを送信する。
また、検索処理装置40aは、転送ルール生成装置60から転送ルールを受け取ると、そのルールを所定の場所に格納する。
格納された転送ルールは、リクエストメッセージを受け取ったときの転送先のサーバ装置の決定に用いられる。
サーバ装置50a〜50eは、それぞれ、ネットワークを介して転送ルール生成装置60に接続されている。
サーバ装置50a〜50eは、それぞれ、受信したリクエストメッセージに対して処理を行った後、処理に対する応答をクライアント装置10a、10bに送信する。
また、サーバ装置50a〜50eは、それぞれ、受信したリクエストメッセージに含まれる情報に基づいて、クライアント装置10aを操作するユーザを識別するデータ(ユーザデータ)のキャッシュが存在するか否かを判断する。
ユーザデータのキャッシュが存在しない場合、ユーザデータのキャッシュを生成する。そして、ユーザデータのキャッシュを生成したときは、そのキャッシュを含む転送ルールを生成するための情報を転送ルール生成装置60に通知する。
転送ルール生成装置60は、ネットワークを介して検索処理装置40a、40bに接続されている。
転送ルール生成装置60は、サーバ装置50a〜50eのいずれかから受信した、転送ルールを生成するための情報に基づいて、転送ルールを生成する。
そして、転送ルールを生成するための情報に基づいて、生成した転送ルールを検索処理装置40aまたは検索処理装置40bのいずれに設定すべきかを決定する。
そして、決定した検索処理装置に生成した転送ルールを送信する。
次に、識別処理装置30aのハードウェア構成を説明する。
図3は、識別処理装置のハードウェア構成例を示す図である。
識別処理装置30aは、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス108を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、外部補助記憶装置106および通信インタフェース107が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。また、HDD103内には、プログラムファイルが格納される。
グラフィック処理装置104には、モニタ104aが接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ104aの画面に表示させる。入力インタフェース105には、キーボード105aとマウス105bとが接続されている。入力インタフェース105は、キーボード105aやマウス105bから送られてくる信号を、バス108を介してCPU101に送信する。
外部補助記憶装置106は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置106で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、HDD、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
通信インタフェース107は、ネットワーク70に接続されている。通信インタフェース107は、ネットワーク70を介して、他のコンピュータや装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には識別処理装置30aのハードウェア構成を示したが識別処理装置30bについても同様のハードウェア構成で実現することができる。また、検索処理装置40a、40bについても同様のハードウェア構成で実現することができる。また、転送ルール生成装置60についても同様のハードウェア構成で実現することができる。
このようなハードウェア構成の識別処理装置30a、30b、検索処理装置40a、40b、および、転送ルール生成装置60内には、以下のような機能が設けられる。
図4は、識別処理装置の機能を示すブロック図である。
識別処理装置30aは、リクエストメッセージ受信部31aと、識別処理部32aと、中間ヘッダ追加部(追加処理部)33aと、検索処理装置選択部34aと、リクエストメッセージ送信部35aと、宛先アプリ名ルール格納部36aと、識別ルール格納部37aと、関数定義格納部38aとを有している。
リクエストメッセージ受信部31aは、ロードバランサ20からリクエストメッセージ11を受信する。そして、受信したリクエストメッセージ11を識別処理部32aに送る。
図5は、クライアント装置が送信するリクエストメッセージの一例を示す図である。
図5では、リクエストメッセージ11としてSOAPoverHTTPリクエストメッセージの例を示している。
リクエストメッセージ11には、IPヘッダ111と、TCPヘッダ112と、レイヤ7プロトコルヘッダ113と、メッセージコンテンツ114とが含まれている。
リクエストメッセージ11では、レイヤ7プロトコルヘッダ113としてHTTPヘッダを有している。また、メッセージコンテンツ114は、SOAPヘッダを有している。
HTTPヘッダには、例えばサーバ装置50aで動作するアプリケーションを指定する情報(宛先アプリ名)「/services/A1」が含まれている。
SOAPヘッダには、クライアント装置10aを操作するユーザを識別する識別子「sip:bob@example.com」が含まれている。
再び図4に戻って説明する。
識別処理部32aは、宛先アプリ名ルール格納部36aに格納されている宛先アプリ名ルールおよび識別ルール格納部37aに格納されている識別ルールを参照する。
そして、宛先アプリ名ルールおよび識別ルールに基づいて、受け取ったリクエストメッセージ11からサーバ装置50a〜50eが有するアプリケーションを示す情報(以下、「宛先アプリ名」と言う)と識別子を識別して抽出する。なお、宛先アプリ名と識別子とを識別して抽出する処理を「識別処理」と言う。
そして、識別処理部32aは、抽出した宛先アプリ名と識別子をリクエストメッセージ11とともに中間ヘッダ追加部33aに送る。
中間ヘッダ追加部33aは、識別処理部32aによって抽出された宛先アプリ名と識別子を、中間ヘッダとしてリクエストメッセージ11のレイヤ7プロトコルヘッダ113の前部に追加する。以下、この中間ヘッダが追加されたリクエストメッセージ11を、リクエストメッセージ11aとして説明する。
検索処理装置選択部34aは、関数定義格納部38aに格納されているNextHop決定関数F(x)に基づいて、転送先の検索処理装置として、検索処理装置40aまたは検索処理装置40bを決定する。
リクエストメッセージ送信部35aは、検索処理装置選択部34aにて決定した検索処理装置40aまたは検索処理装置40bにリクエストメッセージ11aを送信する。
次に、識別処理装置30aが送信するリクエストメッセージ11aを説明する。
図6は、識別処理装置が送信するリクエストメッセージの一例を示す図である。
リクエストメッセージ11aには、前述したように、中間ヘッダ115が、レイヤ7プロトコルヘッダ113の前部に追加されている。
中間ヘッダ115は、前述したように、識別処理部32aによって抽出された宛先アプリ名と識別子を有している。具体的には、レイヤ7プロトコルヘッダ113に含まれる宛先アプリ名「/services/A1」を有している。また、メッセージコンテンツ114に含まれる識別子「sip:bob@example.com」を有している。
次に、宛先アプリ名ルール格納部36aに格納されている情報を説明する。
図7は、宛先アプリ名ルールの一例を示す図である。
宛先アプリ名ルール格納部36aには、宛先アプリ名ルールがテーブル化されて格納されている。
宛先アプリ名ルールテーブル361aには、プロトコル(Protocol)番号、ポート(port)番号、メッセージフォーマット、抽出場所、抽出場所の書式の欄が設けられている。横方向に並べられた情報同士が、互いに関連づけられている。
プロトコル番号の欄には、転送されるIPパケットの種別を識別する番号が設定されている。図7では、「6」が設定されている。従って、転送されるIPパケットがTCPプロトコル形式のリクエストメッセージ11を宛先アプリ名の抽出対象とする。
ポート番号の欄には、サービスを識別する番号が設定されている。図7では、「8080」が設定されている。従って、ポート番号8080にアクセスするリクエストメッセージ11を宛先アプリ名の抽出対象とする。
メッセージフォーマットの欄には、リクエストメッセージ11のフォーマットを識別する情報が設定されている。図7では、「HTTP」が設定されている。従って、HTTP形式のリクエストメッセージ11を宛先アプリ名の抽出対象とする。
抽出場所の欄には、メッセージフォーマットの欄に設定された情報に従って、宛先アプリ名を抽出する場所を識別する情報が設定されている。
図7では、「Request−URI」が設定されている。また、前述したように、メッセージフォーマットの欄には、「HTTP」が設定されている。
従って、例えば、図5に示すリクエストメッセージ11であれば、「HTTP/1.1/services/A1\r\n」のRequest−URIである「/services/A1」を宛先アプリ名として取り出す。
抽出場所の書式の欄には、抽出場所の書式を示す情報が設定されている。図7では、「HTTPヘッダフィールド名」が設定されている。従って、例えば、図4に示すリクエストメッセージ11であれば、HTTPヘッダフィールド名から宛先アプリ名を抽出する。
次に、識別ルール格納部37aに格納されている情報を説明する。
図8は、識別ルールの一例を示す図である。
識別ルール格納部37aには、識別ルールがテーブル化されて格納されている。
識別ルールテーブル371aには、宛先アプリ名、メッセージフォーマット、抽出場所、抽出場所の書式の欄が設けられている。
宛先アプリ名の欄には、サーバ装置50a、50bのアプリケーションを特定する情報が設定されている。図8では、「/services/A1」が設定されている。従って、宛先アプリ名が「/services/A1」であるリクエストメッセージ11を識別子の抽出対象とする。
メッセージフォーマットの欄には、メッセージコンテンツ114のフォーマットを識別する情報が設定されている。図8では、「SOAP」が設定されている。従って、SOAP形式のリクエストメッセージ11を識別子の抽出対象とする。
抽出場所の欄には、識別子を抽出する場所を識別する情報が設定されている。図8では、「//presentity」が設定されている。従って、例えば、図5に示すリクエストメッセージ11であれば、<Presentity>タグで囲まれた部分を抽出場所とする。
抽出場所の書式の欄には、抽出場所の書式を示す情報が設定されている。図8では、「Xpath」が設定されている。
次に、関数定義格納部38aに格納されている情報を説明する。
図9は、関数定義格納部に格納されている情報を示す図である。
関数定義格納部38aには、NextHop決定関数F(x)の定義であるNextHop決定関数定義381aが格納されている。
NextHop決定関数定義381aの内容は以下の通りである。
F(x)=G(H(x)%N)が、F(x)の計算内容を表している。
ここで、(H(x)%N)は、H(x)をNで除算した余りを示している。
x=識別子であるため、識別処理の結果、得られた識別子をパラメータxに代入する。
ここで、MD(Message Digest)5は、ハッシュ関数を示している。
H(x)=MD5であるため、識別子のMD5ハッシュを計算する。
N=100であるため、MD5ハッシュの計算結果(ハッシュ値)を100で除算した余りを求める。
G(x)=Table1と従属テーブルが指定されているため、求めた余りをキーに従属テーブルのTable1を検索する。
なお、図9に示す例では、NextHop決定関数F(x)のパラメータxとして識別子を用いたが、これに限らず、「宛先アプリ名」、または、「宛先アプリ名と識別子を繋げたもの」を用いてもよい。但し、パラメータxとして何を用いるかは、予め(静的に)決めておく。
次に、従属テーブルを説明する。
図10は、従属テーブルの一例を示す図である。
従属テーブル382aは、1つまたは複数のテーブルを有している。1つのテーブルには、テーブルを識別する名前(図10では「Table1」)が設定されている。また、各テーブルには、キー値の欄とアドレスの欄が設けられている。
キー値の欄には、Nで除算した余りとして、とり得る可能性のある値が設定されている。
図10では、図9に示すNextHop決定関数定義381aのG(x)=Table1に対応する従属テーブル382aを示している。従って、MD5ハッシュの計算結果を100で除算することによって得られる可能性のある余り0〜99が設定されている。
アドレスの欄には、キー値に対応する転送先の検索処理装置のアドレスが設定されている。
図10では、一例として、キー値が偶数のアドレスの欄には、検索処理装置40aのアドレス「10.10.10.10:9999」が設定されている。また、キー値が奇数のアドレスの欄には、検索処理装置40bのアドレス「10.10.10.11:9999」が設定されている。
このように、本実施の形態では、検索処理装置選択部34aが、識別子に基づいて、転送先の検索処理装置を決定するようにした。従って、宛先アプリ名と転送先アドレスが同じリクエストメッセージ11aであっても、キー値が異なれば、これらのリクエストメッセージ11aは異なる検索処理装置に送信されることになる。
次に、検索処理装置40aの機能を説明する。
図11は、検索処理装置の機能を示すブロック図である。
検索処理装置40aは、リクエストメッセージ受信部41aと、中間ヘッダパース部42aと、宛先決定部43aと、中間ヘッダ削除部44aと、リクエストメッセージ送信部45aと、転送ルール検索処理部46aと、初期アドレス決定部47aと、転送ルール格納部48aと、エンドポイントリスト格納部49aと、転送ルール受付部51aとを有している。
リクエストメッセージ受信部41aは、識別処理装置30aまたは識別処理装置30bからリクエストメッセージ11aを受信する。そして、受信したリクエストメッセージ11aを中間ヘッダパース部42aに送る。
中間ヘッダパース部42aは、受信したリクエストメッセージ11aの中間ヘッダ115のパース処理を実行し、宛先アプリ名と識別子を取得する。そして、その取得した宛先アプリ名と識別子を宛先決定部43aに送る。
宛先決定部43aは、宛先アプリ名と識別子に基づいて、図11に示すリクエストメッセージ11bを送信するサーバ装置を決定する。
転送先の決定の際、宛先決定部43aは、転送ルール検索処理部46aと初期アドレス決定部47aを用いる。
中間ヘッダ削除部44aは、リクエストメッセージ11aに含まれる中間ヘッダ115を削除する。これにより、リクエストメッセージ11と同じリクエストメッセージになる。以降、説明の便宜上、中間ヘッダ115を削除したリクエストメッセージ(内容は、リクエストメッセージ11と同じ)をリクエストメッセージ11bとして説明する。
リクエストメッセージ送信部45aは、宛先決定部43aが決定した転送先にリクエストメッセージ11bを送信する。
転送ルール検索処理部46aは、宛先決定部43aの依頼に応じて、転送ルール格納部48aに格納されている情報を参照し、転送先のアドレスが存在するか否かを判断する(検索処理)。そして得られた検索結果を宛先決定部43aに返す。
転送ルール格納部48aには、宛先決定部43aが送信するリクエストメッセージ11bの転送先を決定する転送ルールが格納されている。
初期アドレス決定部47aは、転送ルール検索処理部46aの検索処理によって転送先のアドレスが得られなかったときに、転送先のアドレスを決定する。
具体的には、初期アドレス決定部47aは、エンドポイントリスト格納部49aに格納されている情報を参照し、転送先のアドレスの検索処理を行う。そして、得られたアドレスを宛先決定部43aに返す。
なお、検索結果として複数のアドレスが得られた場合、その中から予め定められたルールに従って1つのアドレスを選択する。
転送ルール受付部51aは、転送ルール生成装置60から後述する転送ルールメッセージを受信すると、転送ルールの設定または設定解除を実行する。
具体的には、受信した転送ルールメッセージに含まれている転送ルールを、転送ルール格納部48aに格納する。または、受信した転送ルールメッセージに含まれている転送ルールに一致する転送ルール格納部48aに格納されている転送ルールを削除する。
転送ルールの設定後、転送ルール受付部51aは、Acknowledgementを転送ルール生成装置60に返信する。
このように、検索処理装置40aは、大きく分けてリクエストメッセージをサーバ装置に送信する処理と、転送ルールを設定する処理の2つの処理を行う。
次に、転送ルール格納部48aに格納されている情報を説明する。
図12は、転送ルールの一例を示す図である。
転送ルール格納部48aには、転送ルールがテーブル化されて格納されている。
転送ルールテーブル481aには、宛先アプリ名、識別子、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
宛先アプリ名の欄には、宛先のアプリケーションを示す情報が設定されている。
識別子の欄には、クライアント装置10a、10bを操作する利用者を識別する情報が設定されている。
転送先アドレスの欄には、転送先のサーバ装置のアドレスが設定されている。例えば、「host1.example.com:8080」は、サーバ装置50aのアドレスである。「host2.example.com:8080」は、サーバ装置50bのアドレスである。「host3.example.com:8080」は、サーバ装置50cのアドレスである。
このように、転送ルールテーブル481aは、宛先アプリ名と識別子の組に対して転送先サーバのアドレスを保持するものである。
ここで、識別子と転送先サーバの関係は運用中に決まる。このため、転送ルールは、サーバアプリが識別子を決定した際に、転送ルール生成装置60を通して転送ルールテーブル481aに動的に設定される。
なお、転送ルールの設定方法の詳細については、後述する。
次に、検索処理装置40bの転送ルール格納部に格納されている情報を説明する。
図13は、他方の検索処理装置の転送ルールの一例を示す図である。
検索処理装置40bの転送ルール格納部には、転送ルールがテーブル化されて格納されている。
転送ルールテーブル481bには、宛先アプリ名、識別子、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
各欄の項目は、それぞれ、転送ルールテーブル481aと同様である。なお、転送先アドレスの欄に設定されている「host4.example.com:8080」は、サーバ装置50dのアドレスである。「host5.example.com:8080」は、サーバ装置50eのアドレスである。
但し、転送ルールテーブル481bに格納されている情報は、転送ルールテーブル481aに格納されている情報の内容が重複しないようになっている。これは、後述する転送ルール生成装置の機能によるものである。
次に、エンドポイントリスト格納部49aに格納されている情報を説明する。
図14は、エンドポイントリストの一例を示す図である。
エンドポイントリスト格納部49aには、エンドポイントリストがテーブル化されて格納されている。
エンドポイントリストテーブル491aには、宛先アプリ名、転送先アドレスの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
宛先アプリ名の欄には、宛先アプリを識別する情報が設定されている。
転送先アドレスの欄には、宛先アプリを有するサーバ装置のアドレスが設定されている。
ここで、エンドポイントリストテーブル491aには、宛先アプリ名のアプリケーションを処理することができる全てのサーバ装置のアドレスが予め設定されている。図14では、宛先アプリ名が「/services/A1」であるリクエストメッセージ11aを処理することができるサーバ装置は、サーバ装置50a〜50dであることが示されている。また、宛先アプリ名が「/services/B2」であるリクエストメッセージ11aを処理することができるサーバ装置は、サーバ装置50a〜50eであることが示されている。
次に、転送ルール生成装置60の機能を説明する。
図15は、転送ルール生成装置の機能を示すブロック図である。
転送ルール生成装置60は、識別子情報受付部61と、転送ルール生成部62と、設定先装置選択部63と、転送ルール送信部64と、関数定義格納部65とを有している。
識別子情報受付部61は、サーバ装置50a〜50eから識別子情報500を受け付ける。
この識別子情報500は、サーバ装置50a〜50eがリクエストに対する処理を行ったときに、ユーザデータのキャッシュが存在しない場合、サーバ装置50a〜50eが転送ルール生成装置60に通知する情報である。
転送ルール生成部62は、サーバ装置50a〜50eが有するアプリケーションの情報と、これらアプリケーションのポート番号の情報とを備えている。
転送ルール生成部62は、この情報に基づいて、識別子情報受付部61が受け付けた識別子情報500に基づいて、識別子情報500を検索処理装置40a、40bに送信する転送ルール設定メッセージ600を生成する。
設定先装置選択部63は、テーブル配備先決定関数F(x)により転送ルールを設定する検索処理装置40a、40bを選択する。なお、パラメータxは、「宛先アプリ名」、「識別子」または「宛先アプリ名と識別子をつなげたもの」のいずれかを用いる。但し、NextHop決定関数定義381aのパラメータxと同じものを用いる。
転送ルール送信部64は、転送ルール生成部62が生成した転送ルール設定メッセージ600を、設定先装置選択部63が選択した設定先に送信する。
関数定義格納部65は、設定先の検索処理装置を決定するためのテーブル配備先決定関数F(x)の定義を格納している。このテーブル配備先決定関数F(x)は、NextHop決定関数F(x)と同じ関数である。
NextHop決定関数F(x)とテーブル配備先決定関数F(x)で同じ関数を用いることで、識別処理装置30a、30bが送信したリクエストメッセージ11aの転送ルールが、検索処理装置40a、40bに存在することを保証することができる。
次に、識別子情報受付部61が受け付ける識別子情報500を説明する。
図16は、識別子情報の一例を示す図である。
識別子情報500は、サーバアプリ名、識別子、サーバアドレスの情報を有している。
サーバアプリ名は、当該識別子情報を送信したサーバアプリを識別する情報である。図16では、「Request−URI」である「/services/A1」が設定されている。
識別子は、当該識別子情報500を発信したサーバ装置に処理を依頼したクライアント装置のユーザを識別する情報である。
サーバアドレスは、当該識別子情報500を発信したサーバ装置のアドレスである。
次に、転送ルール設定メッセージ600を説明する。
図17は、転送ルール設定メッセージの一例を示す図である。
転送ルール設定メッセージ600は、宛先アプリ名、識別子、転送先アドレス、操作の情報を有している。
宛先アプリ名、識別子は、それぞれ、識別子情報500のサーバアプリ名、識別子と同じ情報である。
転送先アドレスは、識別子情報500のサーバアドレスにポート番号を追加したものである。この転送先アドレスは、以下のようにして取得することができる。
転送ルール生成部62は、前述したように、サーバ装置50a〜50eが有するアプリケーションの情報と、これらアプリケーションのポート番号の情報とを備えている。
転送ルール生成部62は、識別子情報500に含まれるサーバアドレスと宛先アプリ名に基づいて、サーバ装置50a〜50eが有するアプリケーションを特定する。そして、転送ルール生成部62が備える情報を参照し、特定したアプリケーションのポート番号を特定する。そして、特定したポート番号を、識別子情報500のサーバアドレスに追加する。
操作は、転送ルールテーブル481aに情報を追加するか、削除するかを決定する情報が設定されている。この情報が「追加」である場合、転送ルール設定メッセージ600は、転送ルールテーブル481aに当該情報の追加を要求するメッセージとなる。他方、この情報が「削除」である場合、転送ルール設定メッセージ600は、転送ルールテーブル481aに当該情報に一致するエントリの削除を要求するメッセージとなる。
次に、従属テーブル65aを説明する。
図18は、従属テーブルの一例を示す図である。
従属テーブル65aには、キー値の欄とアドレスの欄が設けられている。
キー値の欄には、MD5ハッシュの計算結果を除算することによって得られる可能性のある余りが設定されている。
図18では、NextHop決定関数定義381aと同じテーブル配備先決定関数定義の従属テーブル65aを示している。従って、MD5ハッシュの計算結果を100で除算することによって得られる可能性のある余り0〜99が設定されている。
アドレスの欄には、キー値に対応するアドレスが設定されている。
図18では、一例として、キー値が偶数のアドレスの欄には、検索処理装置40aのアドレス「10.10.10.10:8888」が設定されている。また、キー値が奇数のアドレスの欄には、検索処理装置40bのアドレス「10.10.10.11:8888」が設定されている。
なお、アドレスのポート番号部分については必ずしも従属テーブル382aと同じものである必要はない。
次に、システム100の全体処理を説明する。
最初に、転送ルールテーブル481aにリクエストメッセージ11aに対する転送先の情報が設定されていなかったときのシステム100の処理(第1の処理)を説明する。その後、転送ルールテーブル481aにリクエストメッセージ11aに対する転送先の情報が設定されているときのシステム100の処理(第2の処理)を説明する。
<第1の処理>
図19は、システムの第1の処理を示す図である。
クライアント装置10aまたはクライアント装置10b(図19ではクライアント装置10a)がリクエストメッセージ11をサーバアプリに送信する。
このとき、クライアント装置10aが送信するリクエストメッセージ11のネットワークアドレスはロードバランサ20のネットワークアドレスとなる。これにより、クライアント装置10aは、ロードバランサ20上に割り振られた仮想サーバにアクセスすることになる(ステップS1)。
リクエストメッセージ11を受信したロードバランサ20は、予め設定された負荷分散アルゴリズムに従って、負荷分散対象の識別処理装置30a、30bのいずれか一方を転送先として決定する。そして、決定した識別処理装置(図19では識別処理装置30a)に、リクエストメッセージ11を送信する(ステップS2)。
リクエストメッセージ11を受信した識別処理装置30aは、識別処理を行う。そして、得られた識別子に基づいて、転送先の検索処理装置40a、40bのいずれか一方を転送先として決定する。
このとき、識別処理装置30aは、宛先アプリ名および識別子を中間ヘッダ115としてリクエストメッセージ11に追加する。
そして、転送先として決定した検索処理装置(図19では検索処理装置40b)に、リクエストメッセージ11aを送信する(ステップS3)。
リクエストメッセージ11aを受信した検索処理装置40bは、中間ヘッダ115から宛先アプリ名および識別子を取得する。そして、取得した宛先アプリ名と識別子をキーワードとして転送ルールテーブル481bを検索する。転送ルールテーブル481bにはキーワードに一致する転送ルールが存在しないため、検索処理装置40bは、負荷分散対象のサーバ装置50a〜50eのいずれかを転送先のサーバ装置として決定する。
このとき、検索処理装置40bは、リクエストメッセージ11aの中間ヘッダ115を削除する。
そして、転送先として決定したサーバ装置(図19では、サーバ装置50e)にリクエストメッセージ11bを送信する(ステップS4)。
リクエストメッセージ11bを受信したサーバ装置50eは、リクエストの処理を行う。処理の中でユーザデータのキャッシュを新規に生成する。
そして、生成したユーザデータのキャッシュに関する識別子情報500を転送ルール生成装置60に通知する(ステップS5)。
転送ルール生成装置60は、通知された識別子情報500に基づいて、転送ルールを生成する。そして、生成した転送ルールに基づいて検索処理装置40a、40bのいずれか一方を送信先として決定する。
ここで、サーバ装置50eにリクエストメッセージ11bを送信したのは検索処理装置40bであるため、送信先も検索処理装置40bになる。
そして、決定した検索処理装置40bに、転送ルール設定メッセージ600を送信する(ステップS6)。
その後、転送ルール設定メッセージ600を受信した検索処理装置40bは、転送ルールを設定する。
以上で、第1の処理の説明を終了する。
次に、システム100の第2の処理を説明する。
<第2の処理>
図20は、システムの第2の処理を示す図である。
クライアント装置10bが第1の処理と同じサーバアプリにリクエストメッセージ11を送信する(ステップS11)。
リクエストメッセージ11を受信したロードバランサ20は、負荷分散対象の識別処理装置30a、30bの中から転送先を決定する。そして決定した転送先にリクエストメッセージ11を送信する(ステップS12)。
リクエストメッセージ11を受信した識別処理装置30aは、識別処理を行う。そして、処理の結果得られた識別子に基づいて転送先の検索処理装置を決定する。
このとき、識別処理装置30aは、宛先アプリ名および識別子を中間ヘッダ115としてリクエストメッセージ11に追加する。
そして、決定した検索処理装置40bにリクエストメッセージ11aを送信する(ステップS13)。
リクエストメッセージ11aを受信した検索処理装置40bは、中間ヘッダ115から宛先アプリ名および識別子を取得する。そして、取得した宛先アプリ名と識別子をキーワードとして転送ルールテーブル481aを検索する。転送ルールテーブルには第1の処理によって得られた該当する転送ルールのエントリが存在する。従って、転送先のサーバ装置50eのアドレスが得られる。
このとき、検索処理装置40bは、リクエストメッセージ11aに含まれる中間ヘッダ115を削除する。
検索処理装置40bは得られたアドレス、すなわち、サーバ装置50eにリクエストメッセージ11bを送信する(ステップS14)。
リクエストメッセージ11bを受信したサーバ装置50bは、第1の処理の中で生成したユーザデータのキャッシュを用いて、リクエストメッセージ11bの処理を行う。そして、処理結果をクライアント装置10aに応答する。
このとき、サーバ装置50bは、ユーザデータのキャッシュが既に存在するため、転送ルール生成装置60に識別子情報500を送信しない。
以上で第2の処理の説明を終了する。
次に、第1の処理および第2の処理における識別処理装置30a、30bの処理を詳しく説明する。
図21は、識別処理装置の処理を示すフローチャートである。
まず、リクエストメッセージ受信部31aがリクエストメッセージ11を受信する(ステップS21)。そして、リクエストメッセージ受信部31aは、受信したリクエストメッセージ11を識別処理部32aに送る。
識別処理部32aは、リクエストメッセージ11に含まれる宛先アプリ名と識別子を抽出する(ステップS22)。
宛先アプリ名の抽出については、受信したリクエストメッセージのプロトコル番号、ポート番号をキーワードとして宛先アプリ名ルールテーブル361aを参照する。そして、抽出対象となるメッセージフォーマットとその抽出場所を特定する。そして、特定した宛先アプリ名を抽出する。
また、識別子の抽出については、宛先アプリ名をキーワードとして識別ルールテーブル371aを参照する。そして、抽出対象となるリクエストメッセージ11のフォーマットとその抽出場所を特定する。そして、特定した識別子を抽出する。
そして、得られた宛先アプリ名および識別子とともにリクエストメッセージ11を中間ヘッダ追加部33aに送る。
中間ヘッダ追加部33aは、リクエストメッセージ11のレイヤ7プロトコルヘッダ113の前部に中間ヘッダ115を挿入(追加)する(ステップS23)。
そして、中間ヘッダ115を追加したリクエストメッセージ11aを検索処理装置選択部34aに送る。
検索処理装置選択部34aは、NextHop決定関数定義381aのパラメータxに識別子を代入することによりキー値を決定する。そして従属テーブル382aを参照することにより、決定したキー値に一致する転送先の検索処理装置のアドレスを決定する(ステップS24)。そして、決定したアドレスとリクエストメッセージ11aとをリクエストメッセージ送信部35aに送る。
リクエストメッセージ送信部35aは、受け取ったリクエストメッセージ11aを受け取ったアドレスに送信する(ステップS25)。
以上で、識別処理装置30a、30bの処理の説明を終了する。
次に、ステップS24の転送先の検索処理装置のアドレスの決定方法を説明する。
以下、図9に示すNextHop決定関数定義381aが定義されている場合の検索処理装置選択部34aの処理内容を説明する。
1)x=識別子であるため、識別処理結果の識別子、例えば「sip:bob@example.com」をxに代入する。
2)H(x)=MD5であるため識別子「sip:bob@example.com」のMD5ハッシュを計算する。
3)N=100であるため計算結果を100で除算した余りを求める。仮にこの値が0だったとする。
4)G(x)=Table1と、従属テーブルとして、従属テーブル382aが指定されているため、計算結果0をキーに従属テーブル382aのTable1を検索する。
5)結果、F(x)として、キー値が「0」のアドレス「10.10.10.10:9999」が得られる。
次に、検索処理装置40a、40bの処理を説明する。
図22は、検索処理装置の処理を示すフローチャートである。
<リクエストメッセージ受信時の動作>
リクエストメッセージ受信部41aがリクエストメッセージ11aを受信すると、中間ヘッダパース部42aに受信したリクエストメッセージ11aを送る(ステップS31)。
中間ヘッダパース部42aは、中間ヘッダ115の解析処理を行い、宛先アプリ名および識別子を抽出する(ステップS32)。その後、抽出した宛先アプリ名および識別子と、リクエストメッセージ11aとを宛先決定部43aに送る。
宛先決定部43aは、宛先決定処理を行って、転送先のサーバ装置のアドレスを決定する(ステップS33)。そして、決定した転送先のサーバ装置のアドレスとリクエストメッセージ11aとを中間ヘッダ削除部44aに送る。なお、宛先決定処理は後に詳述する。
中間ヘッダ削除部44aは、リクエストメッセージ11aに含まれる中間ヘッダ115を削除する(ステップS34)。そして、中間ヘッダ115を削除したリクエストメッセージ11bと転送先のアドレスをリクエストメッセージ送信部45aに送る。
中間ヘッダ削除後のリクエストメッセージ11bは図5に示すリクエストメッセージ11と同じメッセージになる。すなわち、クライアント装置10aが送信したリクエストメッセージ11と同じものとなる。
リクエストメッセージ送信部45aは、転送先のアドレスにリクエストメッセージ11bを送信する(ステップS35)。
以上で、検索処理装置の処理の説明を終了する。
次に、ステップS33の宛先決定処理を説明する。
図23は、宛先決定処理を示すフローチャートである。
宛先決定部43aは、中間ヘッダパース部42aから宛先アプリ名、識別子、リクエストメッセージ11aを受け取ると、まず、受け取った宛先アプリ名と識別子とを転送ルール検索処理部46aに渡し、転送ルールの検索処理を依頼する(ステップS41)。転送ルール検索処理部46aは、宛先アプリ名と識別子をキーワードに転送ルールテーブル481aを検索する。転送ルール検索処理部46aの戻り値は、転送先のアドレス、または、nullである。宛先決定部43aは、戻り値がアドレスか否かを判断する(ステップS42)。
アドレスが得られた場合(ステップS42のYes)、宛先決定部43aは、得られたアドレスを転送先のアドレスとして決定する(ステップS43)。
一方、アドレスが得られなかった場合(ステップS42のNo)、宛先アプリ名を初期アドレス決定部47aに渡し転送先のアドレスの決定を依頼する。初期アドレス決定部47aは、宛先アプリ名をキーワードとして、エンドポイントリストテーブル491aを検索する。宛先アプリ名をキーワードとして検索を行った場合、検索結果として複数のアドレスが得られる可能性がある。初期アドレス決定部47aは、得られたアドレスの中から自律的に1つのアドレスを選択する。そして、選択したアドレスを転送先のアドレスとして宛先決定部43aに返す。結果、宛先決定部43aは戻り値として転送先のアドレスを得る(ステップS44)。
宛先決定部43aは、ステップS44にて得られたアドレスを転送先のアドレスとして決定する(ステップS43)。
以上で、宛先決定処理の説明を終了する。
次に、転送ルール設定メッセージ受信時の処理を説明する。
まず、転送ルール生成装置60の処理(転送ルール生成処理)を説明する。
図24は、転送ルール生成処理を示すフローチャートである。
識別子情報受付部61は、リクエストメッセージ11bを処理したサーバ装置からの識別子情報500を受け付ける(ステップS51)。
転送ルール生成部62は、受け付けた識別子情報500に基づいて、転送ルール設定メッセージ600を生成する(ステップS52)。
設定先装置選択部63は、関数定義格納部65に格納されているテーブル配備先決定関数定義を参照する。そして転送ルールの設定先となる検索処理装置のアドレスを決定する(ステップS53)。
ここで、テーブル配備先決定関数定義は図21の通りNextHop決定関数定義381aと同じ関数を使用する。なお、NextHop決定関数定義381aと同様に図18のように従属テーブルを用意してもよい。
転送ルール送信部64は、設定先装置選択部63が決定した転送ルールの設定先アドレスへ転送ルール設定メッセージ600を送信する(ステップS54)。
以上で、転送ルール生成装置60の処理の説明を終了する。
次に、検索処理装置40aが、転送ルール設定メッセージを受信したときの処理(転送ルール設定処理)を説明する。
図25は、転送ルール設定処理を示すフローチャートである。
転送ルール受付部51aは、転送ルール設定メッセージ600を受け付ける(ステップS61)。
次に、転送ルール受付部51aは、転送ルール設定メッセージ600の操作の欄を参照し、操作の内容を判断する(ステップS62)。
操作が追加である場合(ステップS62の追加)、転送ルールテーブル481aのエントリに転送ルールを追加する(ステップS63)。
その後、Acknowledgementを転送ルール生成装置60に返信する(ステップS64)。
一方、操作が削除である場合(ステップS62の削除)、転送ルールテーブル481aから転送ルール設定メッセージに一致する転送ルールを削除する(ステップS65)。
その後、Acknowledgementを転送ルール生成装置60に返信する(ステップS64)。
以上で、転送ルール設定処理の説明を終了する。
以上述べたように、システム100によれば、識別処理と検索処理の機能を別個の装置に実行させることにより、検索処理装置の処理の負荷を軽減させることができる。
具体的には、検索処理装置選択部34aが、リクエストメッセージ11から抽出した識別子を、NextHop決定関数定義381aに代入することにより得られたアドレスに従い、リクエストメッセージ11aを送信する検索処理装置40a、40bを決定するようにした。
従って、同じ識別子を備えるリクエストメッセージ11aは、同じ検索処理装置に送信される。
また、中間ヘッダ115を設けて、抽出した識別子をこの中間ヘッダ115に設定するようにした。
これにより、検索処理装置40a、40bは、中間ヘッダ115を参照することで、再度識別処理を行う必要がない。
また、転送ルール生成装置60が、識別子情報500を受け取ると、設定先装置選択部63が、NextHop決定関数定義381aと同じテーブル配備先決定関数定義を用いて転送ルールの送信先を決定するようにした。これにより、リクエストメッセージ11aと同じ識別子を備える転送ルールは、リクエストメッセージ11aを送信した検索処理装置と同じ検索処理装置に送信される。
そして、転送ルールを受信した検索処理装置40a、40bが、その転送ルールを転送ルール格納部48aに格納し、以降の転送先の決定に使用するようにした。
これにより、例えば、検索処理装置40aは、以前送られてきたリクエストメッセージ11aと同じ識別子を中間ヘッダ115に備えるリクエストメッセージ11aが送られてきたときは、エンドポイントリストテーブル491aよりもデータ格納量の少ない転送ルールテーブル481aに、リクエストメッセージ11bの転送先アドレスが必ず格納されていることが保証される。これにより、迅速に転送先のサーバ装置にリクエストメッセージ11bを送信することができる。
以上、本発明のデータ処理装置、データ処理プログラムおよびデータ処理方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、識別処理装置30a、30bおよび検索処理装置40a、40bが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
データ処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の第1〜第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する受信部と、
前記受信部が受信したデータから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理部と、
前記識別処理部が抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置決定部と、
前記データ、前記転送先情報および前記転送元情報を前記検索装置決定部により決定された前記検索装置に送信する送信部と、
を有することを特徴とするデータ処理装置。
(付記2) 前記転送先情報は、前記サーバコンピュータ上で動作するコンピュータのプログラムを特定する情報を有しており、前記転送元情報はクライアントコンピュータを操作する利用者に関する情報を有していることを特徴する付記1記載のデータ処理装置。
(付記3) 前記検索装置決定部は、前記転送元情報を基に前記検索装置を決定することを特徴とする付記1記載のデータ処理装置。
(付記4) 前記転送先情報および前記転送元情報を前記データ内の所定位置に追加する追加処理部をさらに有することを特徴とする付記1記載のデータ処理装置。
(付記5) クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータと、転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報とを受信する受信部と、
前記受信部が受信した情報を基に転送先の前記サーバコンピュータを決定する転送先決定部と、
転送先の前記サーバコンピュータに前記データを送信する送信部と、
を有することを特徴とするデータ処理装置。
(付記6) 前記サーバコンピュータのアドレスを前記転送先情報および前記転送元情報とともに受信する転送ルール受信部と、
前記転送ルール受信部が受信した前記サーバコンピュータのアドレスと前記転送先情報と前記転送元情報とを関連づけて記憶する記憶部とをさらに有し、
前記転送先決定部は、前記受信部が受信した前記転送元情報に一致する前記記憶部に記憶された前記転送元情報に関連づけられた前記サーバコンピュータのアドレスを、転送先として決定することを特徴とする付記5記載のデータ処理装置。
(付記7) 前記転送ルール受信部は、前記受信部が受信した前記転送元情報と同じ転送元情報を、前記サーバコンピュータのアドレスおよび前記転送先情報とともに受信することを特徴とする付記6記載のデータ処理装置。
(付記8) 前記転送先情報および前記転送元情報は、前記データの所定位置に付加されており、
前記受信部は、前記転送先情報および前記転送元情報を前記所定位置から抽出することを特徴とする付記5ないし7のいずれかに記載のデータ処理装置。
(付記9) 転送先の前記サーバコンピュータを決定後、付加された前記転送先情報と前記転送元情報を削除する削除部とをさらに有することを特徴とする付記8記載のデータ処理装置。
(付記10) 前記転送先情報は、前記サーバコンピュータ上で動作するコンピュータのプログラムを特定する特定情報を有しており、前記転送元情報はクライアントコンピュータを操作する利用者を識別する識別情報を有していることを特徴する付記5ないし9のいずれかに記載のデータ処理装置。
(付記11) コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する受信手順と、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理手順と、
抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置選択手順と、
前記データ、前記転送先情報および前記転送元情報を決定された前記検索装置に送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
(付記12) コンピュータに、
クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータ、通知された転送先の前記サーバコンピュータに関する転送先情報および転送元の前記クライアントコンピュータに関する転送元情報を受信する受信手順と、
前記転送元情報を基に転送先の前記サーバコンピュータを決定する転送先決定手順と、
転送先の前記サーバコンピュータに前記データを送信する送信手順と、
を実行させることを特徴とするデータ処理プログラム。
(付記13) クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する第1の装置が、
前記データから、転送先の前記サーバコンピュータに関する転送先情報と転送元の前記クライアントコンピュータに関する転送元情報を抽出し、
抽出した情報を基に前記サーバコンピュータを検索する第2の装置を決定し、
前記データ、前記転送先情報および前記転送元情報を前記第2の装置に送信し、
前記第2の装置が、受信した前記転送先情報と前記転送元情報を基に転送先の前記サーバコンピュータを決定し、
決定した転送先の前記サーバコンピュータに前記データを送信する、
ことを特徴とするデータ処理方法。
1 データ処理装置
1a、3a 受信部
1b 識別処理部
1c 装置決定部
1d、3c 送信部
2 クライアントコンピュータ
2a データ
3、4 検索装置
3b 転送先決定部
5、6、7 サーバコンピュータ
10a、10b クライアント装置
11、11a、11b リクエストメッセージ
20 ロードバランサ
30a、30b 識別処理装置
31a リクエストメッセージ受信部
32a 識別処理部
33a 中間ヘッダ追加部
34a 検索処理装置選択部
35a リクエストメッセージ送信部
36a 宛先アプリ名ルール格納部
37a 識別ルール格納部
38a、65 関数定義格納部
40a、40b 検索処理装置
41a リクエストメッセージ受信部
42a 中間ヘッダパース部
43a 宛先決定部
44a 中間ヘッダ削除部
45a リクエストメッセージ送信部
46a 転送ルール検索処理部
47a 初期アドレス決定部
48a 転送ルール格納部
49a エンドポイントリスト格納部
50a、50b サーバ装置
51a 転送ルール受付部
60 転送ルール生成装置
61 識別子情報受付部
62 転送ルール生成部
63 設定先装置選択部
64 転送ルール送信部
65a、382a 従属テーブル
70 ネットワーク
100 システム
111 IPヘッダ
112 TCPヘッダ
113 レイヤ7プロトコルヘッダ
114 メッセージコンテンツ
115 中間ヘッダ
361a 宛先アプリ名ルールテーブル
371a 識別ルールテーブル
381a NextHop決定関数定義
481a、481b 転送ルールテーブル
491a エンドポイントリストテーブル
500 識別子情報
600 転送ルール設定メッセージ

Claims (10)

  1. クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する受信部と、
    前記受信部が受信した前記データを解析して転送先の前記サーバコンピュータ上で動作するプログラムの情報を含む転送先情報を抽出する共に、前記データから転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理部と、
    前記識別処理部が抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置決定部と、
    前記データ、前記転送先情報および前記転送元情報を前記検索装置決定部により決定された前記検索装置に送信する送信部と、
    を有する
    ことを特徴とするデータ処理装置。
  2. 記転送元情報は、前記クライアントコンピュータを操作する利用者に関する情報を有している
    ことを特徴する請求項1記載のデータ処理装置。
  3. 前記転送先情報および前記転送元情報を前記データ内の所定位置に追加する追加処理部をさらに有する
    ことを特徴とする請求項1記載のデータ処理装置。
  4. クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する他のデータ処理装置から、当該データと、前記他のデータ処理装置が当該データを解析して抽出した転送先の前記サーバコンピュータ上で動作するプログラムの情報を含む転送先情報と、転送元の前記クライアントコンピュータに関する転送元情報とを受信する受信部と、
    前記受信部が受信した情報を基に転送先の前記サーバコンピュータを決定する転送先決定部と、
    転送先の前記サーバコンピュータに前記データを送信する送信部と、
    を有する
    ことを特徴とするデータ処理装置。
  5. 前記サーバコンピュータのアドレスを前記転送先情報および前記転送元情報と共に受信する転送ルール受信部と、
    前記転送ルール受信部が受信した前記サーバコンピュータのアドレスと前記転送先情報と前記転送元情報とを関連づけて記憶する記憶部とをさらに有し、
    前記転送先決定部は、前記受信部が受信した前記転送元情報に一致する前記記憶部に記憶された前記転送元情報に関連づけられた前記サーバコンピュータのアドレスを、転送先として決定する
    ことを特徴とする請求項4記載のデータ処理装置。
  6. 前記転送先情報および前記転送元情報は、前記データの所定位置に付加されており、
    前記受信部は、前記転送先情報および前記転送元情報を前記所定位置から抽出する
    ことを特徴とする請求項4または5に記載のデータ処理装置。
  7. 転送先の前記サーバコンピュータを決定後、付加された前記転送先情報と前記転送元情報を削除する削除部とをさらに有する
    ことを特徴とする請求項6記載のデータ処理装置。
  8. コンピュータに、
    クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する受信手順と、
    前記データを解析して転送先の前記サーバコンピュータ上で動作するプログラムの情報を含む転送先情報を抽出する共に、前記データから転送元の前記クライアントコンピュータに関する転送元情報を抽出する識別処理手順と、
    抽出した情報を基に転送先の前記サーバコンピュータを検索する検索装置を決定する検索装置選択手順と、
    前記データ、前記転送先情報および前記転送元情報を決定された前記検索装置に送信する送信手順と、
    を実行させる
    ことを特徴とするデータ処理プログラム。
  9. コンピュータに、
    クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信するデータ処理装置から、当該データと前記データ処理装置が当該データを解析して抽出した転送先の前記サーバコンピュータ上で動作するプログラムの情報を含む転送先情報と、転送元の前記クライアントコンピュータに関する転送元情報を受信する受信手順と、
    前記転送元情報を基に転送先の前記サーバコンピュータを決定する転送先決定手順と、
    転送先の前記サーバコンピュータに前記データを送信する送信手順と、
    を実行させる
    ことを特徴とするデータ処理プログラム。
  10. クライアントコンピュータから複数のサーバコンピュータの1つへ送信されるデータを受信する第1の装置が、
    前記データを解析して転送先の前記サーバコンピュータ上で動作するプログラムの情報を含む転送先情報を抽出する共に、前記データから転送元の前記クライアントコンピュータに関する転送元情報を抽出し、
    抽出した情報を基に前記サーバコンピュータを検索する第2の装置を決定し、
    前記データ、前記転送先情報および前記転送元情報を前記第2の装置に送信し、
    前記第2の装置が、受信した前記転送先情報と前記転送元情報を基に転送先の前記サーバコンピュータを決定し、
    決定した転送先の前記サーバコンピュータに前記データを送信する、
    ことを特徴とするデータ処理方法。

JP2009150780A 2009-06-25 2009-06-25 データ処理装置、データ処理プログラムおよびデータ処理方法 Expired - Fee Related JP5316259B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009150780A JP5316259B2 (ja) 2009-06-25 2009-06-25 データ処理装置、データ処理プログラムおよびデータ処理方法
US12/816,866 US8914436B2 (en) 2009-06-25 2010-06-16 Data processing device and data retriever

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009150780A JP5316259B2 (ja) 2009-06-25 2009-06-25 データ処理装置、データ処理プログラムおよびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2011008484A JP2011008484A (ja) 2011-01-13
JP5316259B2 true JP5316259B2 (ja) 2013-10-16

Family

ID=43381913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009150780A Expired - Fee Related JP5316259B2 (ja) 2009-06-25 2009-06-25 データ処理装置、データ処理プログラムおよびデータ処理方法

Country Status (2)

Country Link
US (1) US8914436B2 (ja)
JP (1) JP5316259B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9516143B2 (en) * 2013-08-08 2016-12-06 Red Hat, Inc. System and method for assembly and use of integration applications
CN107547409B (zh) * 2016-06-24 2020-12-25 华为技术有限公司 一种路由查找方法、装置和路由设备
JP7067187B2 (ja) * 2018-03-27 2022-05-16 日本電気株式会社 通信制御装置、通信制御方法、及びプログラム
US11122136B2 (en) * 2018-10-22 2021-09-14 Red Hat, Inc. Quantum payload service for facilitating communications between a quantum computing system and classical computing systems
US11309974B2 (en) 2019-05-09 2022-04-19 Red Hat, Inc. Quantum channel routing utilizing a quantum channel measurement service
IL281912B2 (en) * 2019-12-03 2023-10-01 Netspark Ltd Fast network recognition of active applications for real time user notification
US11606432B1 (en) * 2022-02-15 2023-03-14 Accenture Global Solutions Limited Cloud distributed hybrid data storage and normalization

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000138687A (ja) * 1998-10-30 2000-05-16 Toshiba Corp 中継装置
US8300534B2 (en) * 2000-05-24 2012-10-30 Alcatel Lucent Programmable packet processor with flow resolution logic
JP4326764B2 (ja) * 2001-10-31 2009-09-09 富士通株式会社 負荷分散装置
US7711819B2 (en) * 2001-10-31 2010-05-04 Fujitsu Limited Load balancer
JP3898498B2 (ja) * 2001-12-06 2007-03-28 富士通株式会社 サーバ負荷分散システム
JP3995580B2 (ja) * 2002-11-05 2007-10-24 富士通株式会社 負荷分散処理システム
US20050010668A1 (en) * 2003-07-07 2005-01-13 Shiwen Chen Traversable network address translation with hierarchical internet addressing architecture
CN100375470C (zh) * 2003-11-18 2008-03-12 株式会社东芝 设置通信路径的设备和方法
US7650405B2 (en) * 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
JP2007219608A (ja) * 2006-02-14 2007-08-30 Fujitsu Ltd 負荷分散処理プログラム及び負荷分散装置
JP4126707B2 (ja) * 2006-07-28 2008-07-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報システムの状態を解析する技術
JP4478700B2 (ja) * 2007-05-28 2010-06-09 シャープ株式会社 ネットワークベースipモビリティプロトコルを利用した通信システム、制御装置、ルータ及びその通信方法
JP4905388B2 (ja) * 2008-02-29 2012-03-28 富士通株式会社 データ中継装置、データ中継方法およびデータ中継処理プログラム
JP5003556B2 (ja) * 2008-03-28 2012-08-15 富士通株式会社 通信検知装置、通信検知方法、及び通信検知プログラム

Also Published As

Publication number Publication date
JP2011008484A (ja) 2011-01-13
US20100332592A1 (en) 2010-12-30
US8914436B2 (en) 2014-12-16

Similar Documents

Publication Publication Date Title
JP5316259B2 (ja) データ処理装置、データ処理プログラムおよびデータ処理方法
KR102072203B1 (ko) 컨텐츠 중심 네트워크에 계층적 이름의 변화에 강인한 단축 이름을 생성하는 방법 및 노드
US9712463B1 (en) Workload optimization in a wide area network utilizing virtual switches
US8069224B2 (en) Method, equipment and system for resource acquisition
JP4792505B2 (ja) データの同期処理方法、クライアント、サーバ、及びクライアントとサーバとのデータ同期システム
US9722950B2 (en) Processing resource access request in network
US20080313318A1 (en) Providing enhanced data retrieval from remote locations
US20070050491A1 (en) Cache system
JP2009181546A (ja) コーディネータサーバ、データ割当方法及びプログラム
EP3149921B1 (en) Providing router information according to a programmatic interface
CN111314450B (zh) 数据的传输方法、装置、电子设备和计算机存储介质
US8428931B2 (en) Mainframe data stream proxy and method for caching communication between emulators and mainframes
JP2013015991A (ja) 情報処理装置、サーバ選択方法、及びプログラム
US7508826B2 (en) Address translating program, address translating method, and address translating apparatus
US20210096926A1 (en) Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store
JP2018147301A (ja) 計算機システム及び処理の割当方法
US20160301625A1 (en) Intelligent High-Volume Cloud Application Programming Interface Request Caching
JP2005234690A (ja) サーバ装置、サービス方法、プログラム及び記録媒体
KR102226915B1 (ko) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
US8843635B2 (en) Apparatus and method for providing a service through sharing solution providing unit in cloud computing environment
KR20050084059A (ko) 비 멤버 장치로 컴퓨터 그리드에 액세스하는 방법 및시스템과 컴퓨터 프로그램 제품
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
JP7131357B2 (ja) 通信装置、通信方法、および通信プログラム
US7159019B2 (en) Information collection apparatus and method
JP5071990B2 (ja) データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130624

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees