(57)【特許請求の範囲】
【請求項１】
イベントを受信して複数の処理サーバにイベントを分散する振分サーバと、振分サーバへ情報を設定する登録サーバを含む処理システムであって、
イベントは、イベント種類と、複数の前記処理サーバが処理に使用されるデータ項目を含み、
前記登録サーバは、
イベント種類とデータ項目の情報とを対応付けて記憶し、
前記処理サーバの処理とデータ項目の情報とを関連付けて登録し、
前記処理サーバの処理をデータ項目に基づいてグループ化し、
グループに対してメッセージを定義し、
イベント種類とメッセージとの関係として、イベント種類と、メッセージと、メッセージに対応したデータ項目と、グループ化された前記処理サーバの処理の配置先処理サーバとの関係を含む情報を、前記振分サーバへ配信し、
前記振分サーバは、
前記登録サーバから受信した前記イベント種類とメッセージとの関係に含まれる、イベント種類と、イベント種類に対応するメッセージと、データ項目と、前記配置先処理サーバの情報とを記憶し、
イベントを受信し、受信されたイベントに含まれるデータ項目と、前記振分サーバに記憶されたデータ項目とに基づき、受信されたイベントに対応するメッセージを特定し、グループ内の前記処理サーバの負荷に応じて、特定されたメッセージの転送先の前記処理サーバを選択し、選択された前記処理サーバへ特定されたメッセージを転送すること
を特徴とする処理システム。
【請求項２】
請求項１に記載の処理システムであって、
前記登録サーバは、
前記処理サーバの処理をデータ項目に基づいてグループ化する際、共通のデータ項目を使用する前記処理サーバの処理を同じグループにグループ化し、
前記振分サーバは、
前記登録サーバから受信したイベント種類とメッセージとデータ項目とグループ化された前記処理サーバの情報を記憶する際、グループごとにメッセージとデータ項目と前記処理サーバの情報とを対応付けて記憶すること
を特徴とする処理システム。
【請求項３】
請求項１に記載の処理システムであって、
前記振分サーバは、
特定されたメッセージが転送された前記処理サーバの情報と、特定されたメッセージとを対応付けて振分済みとして記憶すること
を特徴とする処理システム。
【請求項４】
請求項３に記載の処理システムであって、
イベントは、キー項目とキー項目の値であるキー値をさらに含み、
前記登録サーバは、
キー項目がさらに入力され、前記処理サーバの処理をデータ項目に基づいてグループ化する際、共通のキー項目を使用する前記処理サーバの処理を同じグループにグループ化し、キー項目を前記振分サーバへさらに送信し、
前記振分サーバは、
前記登録サーバから受信したイベント種類とメッセージとデータ項目とグループ化された前記処理サーバの情報を記憶する際、グループごとにメッセージとデータ項目とキー項目と前記処理サーバの情報とを対応付けて記憶し、
特定されたメッセージおよび受信されたイベントに含まれるキー値と、同一のメッセージおよびキー値が、振分済みとして記憶されているかを判定し、
記憶されていると判定した場合、同一のメッセージおよびキー値に対応付けられて振分済みとして記憶されている前記処理サーバの情報で特定される前記処理サーバへ特定されたメッセージを転送し、
記憶されていないと判定した場合、グループ内の前記処理サーバの負荷に応じて、特定されたメッセージの転送先の前記処理サーバを選択し、選択された前記処理サーバへ特定されたメッセージを転送すること
を特徴とする処理システム。
【請求項５】
請求項４に記載の処理システムであって、
前記振分サーバは、
特定されたメッセージおよび受信されたイベントに含まれるキー値と、同一のメッセージおよびキー値が、振分済みとして記憶されていないと判定した場合、イベントに含まれるキー値を振分済みとしてさらに記憶すること
を特徴とする処理システム。
【請求項６】
請求項５に記載の処理システムであって、
前記振分サーバは、
特定されたメッセージが転送された前記処理サーバから処理結果を受信し、処理結果を送信した前記処理サーバの情報を、振分済みとして記憶された情報から削除すること
を特徴とする処理システム。
【請求項７】
請求項４に記載の処理システムであって、
前記登録サーバは、
前記処理サーバの処理をデータ項目に基づいてグループ化する際、共通のキー項目を使用する前記処理サーバの処理を同じグループにグループ化し、
１つのグループに含まれる処理の数が、前記処理サーバのスレッド数より多いかを判定し、
多いと判定した場合、さらに共通のデータ項目を使用する前記処理サーバの処理を同じグループにグループ化し、
多くないと判定した場合、グループを統合すること
を特徴とする処理システム。
【請求項８】
請求項７に記載の処理システムであって、
前記登録サーバは、
前記処理サーバの処理の数が複数の前記処理サーバの間で均等になるように、前記処理サーバの処理を複数の前記処理サーバのいずれに配置するかメッセージ単位で決定すること
を特徴とする処理システム。
【請求項９】
請求項１に記載の処理システムであって、
前記処理システムは前記処理サーバをさらに含み、
前記処理サーバは、
前記振分サーバからメッセージを受信し、受信されたメッセージに対応する処理が複数あるかを判定し、
複数あると判定した場合、受信されたメッセージを共有する領域に記憶し、共有する領域を参照するサブメッセージを生成し、受信されたメッセージの代わりとすること
を特徴とする処理システム。
【請求項１０】
請求項９に記載の処理システムであって、
前記処理サーバは、
前記振分サーバからさらにキー値を受信し、受信されたメッセージとキー値と同一のメッセージとキー値が実行中であると登録されているかを判定し、
登録されていると判定した場合、受信されたメッセージとキー値が実行待機であると登録し、
登録されていない判定した場合、受信されたメッセージとキー値が実行中であると登録して、処理を実行し、処理が終了すると、終了した処理のメッセージとキー値の登録された情報を削除し、終了した処理のメッセージとキー値と同一で登録された実行待機を解除すること
を特徴とする処理システム。
【請求項１１】
イベントを受信して複数の処理サーバにイベントを分散する振分サーバと、振分サーバへ情報を設定する登録サーバを含むシステムにおける複数の処理サーバに処理を分散する処理方法であって、
イベントは、イベント種類と、複数の前記処理サーバが処理に使用されるデータ項目を含み、
前記登録サーバは、
イベント種類とデータ項目の情報とを対応付けて記憶し、
前記処理サーバの処理とデータ項目の情報とを関連付けて登録し、
前記処理サーバの処理をデータ項目に基づいてグループ化し、
グループに対してメッセージを定義し、
イベント種類とメッセージとの関係として、イベント種類と、メッセージと、メッセージに対応したデータ項目と、グループ化された前記処理サーバの処理の配置先処理サーバとの関係を含む情報を、前記振分サーバに配信し、
前記振分サーバは、
前記登録サーバから受信した前記イベント種類とメッセージとの関係に含まれる、イベント種類と、イベント種類に対応するメッセージと、データ項目と、前記配置先処理サーバとの情報を記憶し、
イベントを受信し、
受信されたイベントに含まれるデータ項目と、前記振分サーバに記憶されたデータ項目とに基づき、受信されたイベントに対応するメッセージを特定し、
グループ内の前記処理サーバの負荷に応じて、特定されたメッセージの転送先の前記処理サーバを選択し、選択された前記処理サーバへ特定されたメッセージを転送すること
を特徴とする処理方法。
【請求項１２】
請求項１１に記載の処理方法であって、
前記処理サーバの処理をデータ項目に基づいてグループ化する際、共通のデータ項目を使用する前記処理サーバの処理を同じグループにグループ化し、
イベント種類とメッセージとデータ項目とグループ化された前記処理サーバの情報を記憶する際、グループごとにメッセージとデータ項目と前記処理サーバの情報とを対応付けて記憶すること
を特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理システムおよび処理方法に関するものである。
【背景技術】
【０００２】
デバイスからのデータの分析処理において、分析の対象となるデバイスおよびそのデータの数は飛躍的に増加している。これらデバイスのデータを複数のアプリケーションがリアルタイムに利用する場合、アプリケーションが要求する分析処理にデータを振り分けながら、データ量に応じた負荷分散を行える高性能な分析処理のシステムが望まれている。【０００３】
このような分野の背景技術として、特許文献１には「処理サーバを複数配置し、処理サーバの前段にコンテキスト依存振り分け器を配置することで、それぞれの処理サーバが設定された処理ルールを実行するために必要なイベントが適切に分配させるようにコンテキスト依存振り分け器に振り分けルールを設定する負荷分散システム」が記載されている（段落０００７）。【０００４】
そして、特許文献１には「処理ルールの振り分けを行うことによって、負荷が一部の処理サーバに集中することがなくなると同時に、同一または一部共通するイベント条件を持った処理ルールを特定のサーバに集中させることができる」と記載され（段落００７６）、「イベントコピーを最小限にでき、システムのリソースを効率的に使用できる」と記載されている（段落００９９）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３０９７０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された負荷分散システムを用いれば、振り分けルールにしたがってイベントを振り分けることは可能である。しかしながら、複数の車両の走行データの分析では、車両それぞれの状態が動的に変化するため、あらかじめ静的に振り分けルールを決定する方式では特定サーバに負荷が偏ることがある。特許文献１にはこのような動的な変化に対する技術の開示は見当たらない。【０００７】
また、車両の走行データでは、１つのイベントに多数のデータ項目が含まれるが、分析に必要でないデータ項目も含まれており、不必要なデータ項目のために通信や記憶のリソースが無用に消費されてしまう。【０００８】
本発明は、上記課題に鑑みてなされたものであり、データ項目に関する少ない情報を用い、動的な変化に応じて処理を分散する処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明に係る代表的な処理システムは、イベントを受信して複数の処理サーバにイベントを分散する振分サーバと、振分サーバへ情報を設定する登録サーバを含む処理システムであって、イベントは、イベント種類と、複数の前記処理サーバが処理に使用されるデータ項目を含み、前記登録サーバは、イベント種類とデータ項目の情報、前記処理サーバの処理とデータ項目の情報が入力され、前記処理サーバの処理をデータ項目に基づいてグループ化し、グループに対してメッセージを割り当て、イベント種類とメッセージとデータ項目とグループ化された前記処理サーバの情報を前記振分サーバへ送信し、前記振分サーバは、前記登録サーバから受信されたイベント種類とメッセージとデータ項目とグループ化された前記処理サーバの情報を記憶し、イベントを受信し、受信されたイベントに含まれるデータ項目と、記憶されたデータ項目とに基づき、受信されたイベントに対応するメッセージを特定し、グループ内の前記処理サーバの負荷に応じて、特定されたメッセージの転送先の前記処理サーバを選択し、選択された前記処理サーバへ特定されたメッセージを転送することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、データ項目に関する少ない情報を用い、動的な変化に応じて処理を分散する処理システムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施例１におけるシステムの全体構成の例を示す図である。
【図２】振分処理サーバの構成の例を示す図である。
【図３】分析処理サーバの構成の例を示す図である。
【図４】イベント−メッセージ定義記憶部のテーブルの例を示す図である。
【図５】サーバ負荷管理記憶部のテーブルの例を示す図である。
【図６】メッセージ振分管理記憶部のテーブルの例を示す図である。
【図７】メッセージ−処理プログラム定義記憶部のテーブルの例を示す図である。
【図８】メッセージ実行管理記憶部のテーブルの例を示す図である。
【図９】メッセージ項目抽出部とサーバ選定部の動作フローの例を示す図である。
【図１０】サブメッセージ生成部の動作フローの例を示す図である。
【図１１】処理プログラム呼び出し部の動作フローの例を示す図である。
【図１２】全体の動作シーケンスの例を示す図である。
【図１３】メッセージ設定登録サーバの構成の例を示す図である。
【図１４】サブメッセージ設定登録画面の例を示す図である。
【図１５】イベントマスタ管理記憶部のテーブルの例を示す図である。
【図１６】処理プログラムマスタ管理記憶部のテーブルの例を示す図である。
【図１７】メッセージ管理記憶部のテーブルの例を示す図である。
【図１８】処理プログラム配置管理記憶部のテーブルの例を示す図である。
【図１９】メッセージ生成処理部の動作フローの例を示す図である。
【図２０】処理プログラム−メッセージ項目対応表の例を示す図である。
【図２１】実施例２におけるシステムの全体構成の例を示す図である。
【図２２】振分処理サーバと振分管理サーバの構成の例を示す図である。
【図２３】振分処理サーバと振分管理サーバの動作シーケンスの例を示す図である。
【発明を実施するための形態】
【００１２】
以下、実施例１と実施例２における実施形態について図面を参照して説明する。なお、本実施例に用いる図において、同一の符号を付した部分は同一物を表し、それらの構造および動作は同じである。
【実施例１】
【００１３】
図１は、実施例１におけるシステムの全体構成の例である。このシステムは、複数の通信デバイス１０１（通信デバイス１０１ａ〜１０１ｄを特に区別することなく、それらの１つを通信デバイス１０１と代表的に表し、以下、他の符号も同じ表記とする）と、通信デバイス１０１とネットワーク１０５などを介して接続される振分処理サーバ１０３、振分処理サーバ１０３と接続される分析処理サーバ１０４、および振分処理サーバ１０３と分析処理サーバ１０４へ情報を配信するメッセージ設定登録サーバ１０６から構成される。なお、振分処理サーバ１０３と分析処理サーバ１０４のそれぞれは単に振分サーバと処理サーバと称してもよい。【００１４】
通信デバイス１０１は、通信デバイス１０１ｃ、１０１ｄのようにネットワーク１０５へ直接に接続されず、集約サーバ１０２を介して接続されてもよい。通信デバイス１０１は、センサデバイスやタブレット端末、近年ではスマートメータや車などの通信機能を有する装置である。本実施例では通信デバイス１０１が車の場合を具体例として、データ項目などを以下で例示する。【００１５】
ネットワーク１０５は、通信キャリアなどによって提供される無線ネットワークまたは有線ネットワークである。振分処理サーバ１０３、分析処理サーバ１０４の構成については図２、図３を用いて詳細に説明する。なお、これらのサーバは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、メモリ１２、ハードディスク１３、ネットワークインタフェース１４など、一般的なコンピュータの備える部品がバス接続されて構成される。【００１６】
サーバのこれらの部品はそれぞれ複数であってもよく、ハードディスク１３は半導体ドライブであってもよいし、ディスクレスとしてハードディスク１３はなくてもよい。また、各サーバの処理は、別々の物理マシンの処理であってもよいし、別々の仮想マシンの処理であってもよい。【００１７】
図２は、振分処理サーバ１０３の構成の例である。振分処理サーバ１０３は、通信デバイス１０１が送信するイベントを受け取るイベント受信部２０１、イベントを一時格納するキュー管理部２０２、キューからイベントを取り出し、イベントに対応するメッセージ情報を抽出してメッセージを特定するメッセージ情報抽出部２０３、特定されたメッセージの転送先となる分析処理サーバ１０４を選定するサーバ選定部２０４、選定した分析処理サーバ１０４にメッセージを転送するメッセージ転送部２０５、分析処理サーバ１０４からメッセージに対する処理完了通知を受信するメッセージ処理結果受信部２０６、処理が完了したメッセージの情報を削除する振分けテーブル更新部２０７から構成される。【００１８】
これらの各部は、各部に対応したプログラムが主にメモリ上に展開されて、ＣＰＵで実行されることにより実現される。これらプログラムの中で、メッセージ情報抽出部２０３とサーバ選定部２０４の動作フローの例を図９の説明にて詳細に後述する。なお、各部の一部またはすべては専用の回路で構成されてもよいし、別々のＣＰＵで実行されてもよい。【００１９】
また、振分処理サーバ１０３は、各部が動作するための情報として、イベントに対して特定されるメッセージとそれらメッセージの転送先となる分析処理サーバ１０４を管理するイベント-メッセージ定義記憶部２１１、分析処理サーバ１０４の負荷情報を管理するサーバ負荷管理記憶部２１２、転送したメッセージのキー値と転送先の分析処理サーバ１０４の関係を管理するメッセージ振分管理記憶部２１３を保持する。【００２０】
これらの情報はデータベースなどとして管理され、主にハードディスクや高速に処理する必要のある場合はメモリ上で管理される。各記憶部の詳細なテーブル情報は、車の情報を例に図４〜６の説明で後述する。【００２１】
図３は、分析処理サーバ１０４の構成の例である。分析処理サーバ１０４は、振分処理サーバ１０３から転送されたメッセージを受信するメッセージ受信部３０１、メッセージに対応する分析処理プログラムが複数ある場合にメッセージからサブメッセージを生成するサブメッセージ生成部３０２、メッセージもしくはサブメッセージを一時格納するキュー管理部３０３、キューからメッセージもしくはサブメッセージを取り出し、メッセージもしくはサブメッセージに対応した分析処理プログラム３０６を呼び出すプログラム呼出し部３０４、プログラムが終了すると振分処理サーバ１０３に処理の終了を通知するメッセージ処理返信部３０５から構成される。【００２２】
これらの各部は、各部に対応したプログラムが主にメモリ上に展開されて、ＣＰＵで実行されることにより実現される。これらプログラムの中で、サブメッセージ生成部３０２とプログラム呼出し部３０４の動作フローの例を図１０、図１１の説明にて詳細に後述する。なお、各部の一部またはすべては専用の回路で構成されてもよいし、別々のＣＰＵで実行されてもよい。【００２３】
分析処理プログラム３０６は、プログラムとして複数存在してもよく、複数のプログラムはプログラムの内容としてそれぞれが異なってもよいため、このように表現したが、分析処理部であってもよい。【００２４】
また、分析処理サーバ１０４は、各部が動作するための情報として、受信したメッセージに対して呼び出すべき分析処理プログラム３０６と生成すべきサブメッセージを定義したメッセージ-処理プログラム定義記憶部３１１、実行中の分析処理プログラム３０６を管理するメッセージ実行管理記憶部３１２を保持する。【００２５】
これらの情報はデータベースなどとして管理され、主にハードディスクや高速に処理する必要のある場合はメモリ上で管理される。各記憶部の詳細なテーブル情報は、車の情報を例に図７〜８の説明で後述する。【００２６】
図４は、振分処理サーバ１０３内に保持されるイベント−メッセージ定義記憶部２１１をテーブルで構成した例である。イベント−メッセージ定義記憶部２１１は、受信したイベントに対して特定されるメッセージの情報とメッセージごとに転送可能な分析処理サーバ１０４の情報を記憶する。【００２７】
この例では、イベント種類４０１、イベントの種類に対応するメッセージ４０２、メッセージが持つデータ項目４０３、データの項目のうち分析処理サーバ１０４へのメッセージ振り分けのキーとなる項目であるキー項目４０４、メッセージを受信して分析処理プログラム３０６を実行できる分析処理サーバ１０４の情報である処理サーバ４０５、を含む情報が互いに対応付けられて設定される。【００２８】
イベント-メッセージ定義記憶部２１１が記憶する情報は、システムを実行させる前に、事前に設定される情報であり、これら情報の設定の動作については図１３〜２０の説明にて後述する。【００２９】
なお、通信デバイス１０１からイベント受信部２０１が受け取るイベントの情報は、イベント種類４０１、メッセージ４０２、データ項目４０３、キー項目４０４のそれぞれに相当する情報の一部またはすべてを含んでもよい。また、イベントの情報は、キー項目の値であるキー値を含んでもよく、データ項目の値を含んでもよい。【００３０】
イベント受信部２０１が受け取るイベントの情報は、イベント−メッセージ定義記憶部２１１のテーブルの構成ではなく、ＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）あるいはＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されてもよく、イベント受信部２０１によりＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ(登録商標)  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）に変換されてもよい。【００３１】
図５は、振分処理サーバ１０３内に保持されるサーバ負荷管理記憶部２１２をテーブルで構成した例である。サーバ負荷管理記憶部２１２は、分析処理プログラム３０６が配置されている分析処理サーバ１０４の参照された時点の負荷とみなされる情報を記憶する。この例では、分析処理サーバ１０４の負荷の指針をキュー滞留量として、分析処理サーバ１０４を識別するための処理サーバ５１１とキュー滞留量である負荷情報５１２を含む情報が互いに対応付けられて設定される。【００３２】
負荷情報５１２はキュー滞留量以外に、ＣＰＵ負荷やキューに滞留しているメッセージに重み係数をかけた処理負荷量などを指針にしてもよい。これら負荷情報は、図１に示したシステムとは別に運用管理サーバなどが各分析処理サーバ１０４を監視して負荷情報を収集して、定期的に更新してもよいし、振分処理サーバ１０３と分析処理サーバ１０４とのデータやり取りの中で付加情報として情報が受け渡しされてもよい。【００３３】
図６は、振分処理サーバ１０３内に保持されるメッセージ振分管理記憶部２１３をテーブルで構成した例である。メッセージ振分管理記憶部２１３は、振分処理サーバ１０３が転送したメッセージのキー値と分析処理サーバ１０４とを対応付けて記憶する。この例では、メッセージ６０１とキー項目６０２ごとに、転送したメッセージのキーの項目の値であるキー値６０３、転送先の分析処理サーバ１０４の情報である処理サーバ６０４が互いに対応付けられて設定される。【００３４】
図７は、分析処理サーバ１０４内に保持されるメッセージ−処理プログラム定義記憶部３１１をテーブルで構成した例である。この例では、図１８に示す処理プログラム配置管理記憶部１３２４へ設定されたサーバＣを例に説明する。サーバＣは、メッセージＡとメッセージＣの２つのメッセージを受信でき、その中のメッセージＡは２つの分析処理Ａと分析処理Ｂに対応している。【００３５】
そして、メッセージＡは２つの分析処理Ａと分析処理Ｂに対応するので、これら２つを区別するためにサブメッセージaとサブメッセージｂが定義される。なお、処理プログラム配置管理記憶部１３２４については、図１３〜２０を用いて説明するイベントに対するメッセージの定義情報の設定にて後述する。【００３６】
メッセージ−処理プログラム定義記憶部３１１は、振分処理サーバ１０３から受信したメッセージに対応する分析処理プログラム３０６を記憶し、メッセージに対して複数の分析処理プログラム３０６が対応している場合は、さらにメッセージから分析処理プログラム３０６ごとのデータの項目を抽出したサブメッセージの定義情報を記憶する。【００３７】
この例では、メッセージ７０１、以上で説明したサブメッセージであるサブメッセージ７０２、メッセージもしくはサブメッセージのデータの項目であるデータ項目７０３、メッセージもしくはサブメッセージのキーの項目であるキー項目７０４、メッセージもしくはサブメッセージに対応した分析処理プログラム３０６である処理プログラム７０５が互いに対応付けられて設定される。【００３８】
なお、メッセージ−処理プログラム定義記憶部３１１が記憶する情報は、イベント−メッセージ定義記憶部２１１と同様に、システムを実行させる前に、事前に設定される情報であり、これら情報の設定の動作については図１３〜２０の説明にて後述する。【００３９】
図８は、分析処理サーバ１０４内に保持されるメッセージ実行管理記憶部３１２をテーブルで構成した例である。この例では、図７と同様にサーバＣを例に説明する。メッセージ実行管理記憶部３１２は、分析処理サーバ１０４が受信したメッセージもしくはサブメッセージについて同一キー値のものが登録されているか、分析処理プログラム３０６が実行中か、同時実行しないように実行待機中かのステータスを記憶する。【００４０】
この例では、メッセージもしくはサブメッセージの情報であるメッセージ８０１、メッセージもしくはサブメッセージに対応するキーに関するキー項目８０２とそのキー値８０３、サブメッセージが同一メッセージからの派生であることを表す元メッセージ８０４、各キー値に対する分析処理プログラム３０６が実行中か待機中かを表すステータス８０５の情報が互いに対応付けられて設定される。【００４１】
ここでの元メッセージ８０４は、メッセージを一意に特定できるようにメッセージのオブジェクトをハッシュ化した値を元メッセージの識別子としているが、サブメッセージが同一のメッセージからの派生であることが識別できればどのような値が格納されてもよい。【００４２】
図９は、振分処理サーバ１０３のメッセージ情報抽出部２０３からサーバ選定部２０４にかけての動作をプログラムで実現した場合の動作フローの例である。プログラムは振分処理サーバ１０３のＣＰＵが実行するため、メッセージ情報抽出部２０３あるいはサーバ選定部２０４が主体となる説明は、ＣＰＵが主体であってもよい。【００４３】
まず、振分処理サーバ１０３の中で、キュー管理部２０２がイベント受信部２０１からイベントを取得する。そして、メッセージ情報抽出部２０３は、キュー管理部２０２からイベントを取得すると、メッセージに対応した分析処理サーバ１０４の情報も含めてイベント−メッセージ定義記憶部２１１からイベントに対応したメッセージに関する情報を抽出する（ステップ９０１）。【００４４】
この抽出のために、メッセージ情報抽出部２０３は、取得したイベントに含まれるイベントの種別とデータの項目を用いて、イベント−メッセージ定義記憶部２１１のテーブルのイベント種類４０１とデータ項目４０３を検索し、これらの一致する行のメッセージ４０２とキー項目４０４と処理サーバ４０５の情報を取得してもよい。【００４５】
メッセージ情報抽出部２０３は、抽出した情報からメッセージを特定する（ステップ９０２）。ここで、特定されたメッセージは、ステップ９０１で取得されたメッセージそのものであってもよいし、ステップ９０１で取得されたメッセージから、振分処理サーバ１０３の内部表現に変換されたメッセージとして生成されたものであってもよい。【００４６】
サーバ選定部２０４は、メッセージ情報抽出部２０３にて特定されたメッセージごとに、転送先となる分析処理サーバ１０４を選定する。この選定においてサーバ選定部２０４は、まずメッセージ振分管理記憶部２１３のテーブルからメッセージのキー項目のキー値が同一のものがあるかを検索する（ステップ９０３）。【００４７】
そして、同じキー値が存在していれば、同一キー値の分析処理プログラム３０６を他の分析処理サーバ１０４が同時並行で処理して不整合が発生するのを抑制するため、サーバ選定部２０４は、転送先をメッセージ振分管理記憶部２１３の処理サーバ６０４に格納されている分析処理サーバ１０４に設定する（ステップ９０５）。【００４８】
また、同じキー値が存在しなければ、サーバ選定部２０４は、ステップ９０１で処理サーバ４０５から取得したメッセージに対応した分析処理サーバ１０４の情報を用いて、サーバ負荷管理記憶部２１２のテーブルの負荷情報５１２の値を取得し（ステップ９０６）、もっとも負荷の少ない分析処理サーバ１０４を転送先として設定して（ステップ９０７）、設定した転送先の分析処理サーバ１０４の情報とメッセージのキー値をメッセージ振分管理記憶部２１３のテーブルの処理サーバ６０４とキー値６０３へそれぞれ格納する（ステップ９０８）。【００４９】
これにより、振分処理サーバ１０３は、受信したイベントに対して、分析処理プログラム３０６が必要とするデータ項目を抽出するとともに、抽出したデータ項目で構成されるメッセージを分析処理サーバ１０４の負荷状況に合わせて動的に負荷分散しつつも、メッセージ内のキー値が同一なものは同一の分析処理サーバ１０４に振り分けることで、分析処理サーバ１０４間の排他制御などの処理負荷を抑えた効率の良い負荷分散が行える。【００５０】
なお、メッセージ転送部２０５は、メッセージ振分管理記憶部２１３のテーブルに設定された処理サーバ６０４を転送先として、メッセージ６０１とキー項目６０２とキー値６０３それぞれのメッセージとキー項目とキー値の情報を分析処理サーバ１０４へ転送してもよい。さらに、振分処理サーバ１０３が受信したイベントに含まれる他の情報を転送してもよい。【００５１】
図１０は、分析処理サーバ１０４のサブメッセージ生成部３０２の動作をプログラムで実現した場合の動作フローの例である。プログラムは分析処理サーバ１０４のＣＰＵが実行するため、サブメッセージ生成部３０２が主体となる説明は、ＣＰＵが主体であってもよい。【００５２】
まず、分析処理サーバ１０４のメッセージ受信部３０１が振分処理サーバ１０３からメッセージを受信する。そして、サブメッセージ生成部３０２は、メッセージ受信部３０１からメッセージを取得すると、メッセージ−処理プログラム定義記憶部３１１からメッセージに対応する分析処理プログラム３０６の情報を取得する（ステップ１００１）。【００５３】
この取得のために、サブメッセージ生成部３０２は、取得したメッセージを用いて、メッセージ−処理プログラム定義記憶部３１１のテーブルのメッセージ７０１を検索し、これの一致する行の処理プログラム７０５の情報を複数取得してもよい。【００５４】
そして、メッセージが複数の分析処理プログラム３０６に対応している場合、すなわちステップ１００１で処理プログラム７０５から複数の情報が取得された場合、サブメッセージ生成部３０２は、メッセージを共有メモリ上に格納して（ステップ１００３）、共有メモリに格納されたメッセージを参照するサブメッセージを、取得して分析処理プログラム３０６の数だけ生成し（ステップ１００４）、生成したサブメッセージをキュー管理部３０３のキューに格納する（ステップ１００５）。【００５５】
また、メッセージに対応する分析処理プログラム３０６が１つである場合、サブメッセージ生成部３０２は、メッセージからサブメッセージを生成する必要がないため、メッセージをそのままキュー管理部３０３のキューに格納する（ステップ１００６）。【００５６】
なお、分析処理サーバ１０４は、振分処理サーバ１０３からメッセージとともに受信したキー値などの情報を、メッセージとともに共有メモリ上に格納してもよく、メッセージという記載に含めてメッセージと同じように扱ってもよい。また、共有メモリは１つの分析処理サーバ１０４の中の複数の処理で共有されるメモリであってもよい。【００５７】
図１１は、分析処理サーバ１０４の処理プログラム呼出し部３０４の動作をプログラムで実現した場合の動作フローの例である。プログラムは分析処理サーバ１０４のＣＰＵが実行するため、処理プログラム呼出し部３０４が主体となる説明は、ＣＰＵが主体であってもよい。【００５８】
まず、処理プログラム呼出し部３０４は、キュー管理部３０３からメッセージもしくはサブメッセージを取り出し（ステップ１１０１）、取り出したメッセージもしくはサブメッセージのキー値と同一のキー値で実行中のものをメッセージ実行管理記憶部３１２で検索する（ステップ１１０２）。【００５９】
この検索のために、キュー管理部３０３から取得したメッセージもしくはサブメッセージそのものと、その取得したメッセージもしくはサブメッセージに対応するキーの項目と値を用いて、メッセージ実行管理記憶部３１２のテーブルのメッセージ８０１とキー項目８０２とキー値８０３を検索し、これらの一致する行のステータス８０５の情報を取得し、取得した情報と実行中を示す情報とを比較してもよい。【００６０】
そして、同一のキー値のメッセージもしくはサブメッセージで分析処理プログラム３０６がすでに実行中であれば、処理プログラム呼出し部３０４は、メッセージ実行管理記憶部３１２のテーブルのステータス８０５を待機中として、ステップ１１０１で取り出したメッセージもしくはサブメッセージに基づき、メッセージ８０１からステータス８０５までの新たな情報を登録し（ステップ１１０４）、実行待機の解除を待つ（ステップ１１０５）。【００６１】
また、実行中の同一キー値がなければ、処理プログラム呼出し部３０４は、メッセージ実行管理記憶部３１２のテーブルのステータス８０５を実行中として、ステップ１１０１で取り出したメッセージもしくはサブメッセージに基づき、これらに対応するキー値を含めて、メッセージ８０１からステータス８０５までの新たな情報を登録して（ステップ１１０６）、対応する分析処理プログラム３０６を呼び出し、分析処理プログラムを３０６実行させる（ステップ１１０７）。【００６２】
処理プログラム呼出し部３０４は、ステップ１１０７で呼び出された分析処理プログラム３０６が終了すれば、終了した分析処理プログラム３０６のメッセージもしくはサブメッセージの情報をメッセージ実行管理記憶部３１２から削除して（ステップ１１０８）、メッセージ実行管理記憶部３１２内にキー値８０３が同一の値でステータス８０５が待機中のものがあれば、待機解除を行う（ステップ１１０９）。【００６３】
ステップ１１０５で待機解除されたと判定されると、ステップ１１０６へ遷移して、処理プログラム呼出し部３０４は、メッセージ実行管理記憶部３１２のテーブルの待機中のステータス８０５を実行中に変更して、分析処理プログラム３０６を呼出して実行させる。【００６４】
一方、ステップ１１０９で待機解除を行った処理プログラム呼出し部３０４は、メッセージ実行管理記憶部３１２のテーブルを参照し、同一メッセージから派生した他のサブメッセージのステータスが実行中かどうかを判定する（ステップ１１１０）。この判定では、メッセージ実行管理記憶部３１２のテーブルの元メッセージ８０４のハッシュ値が同一である情報のステータス８０５の実行中が判定の対象となる。【００６５】
また、メッセージの対象となる分析処理プログラム３０６が１つだけであり、サブメッセージが生成されていない場合は、他のサブメッセージはもともと存在しないため、他のサブメッセージの分析処理プログラム３０６はすでに終了していると、ステップ１１１０で判定される。【００６６】
ステップ１１１０にて実行中であると判定された場合、処理プログラム呼出し部３０４は処理をそのまま終了する。すでに他のサブメッセージの分析処理プログラム３０６が実行中ではない、すなわち終了していると判定された場合、処理プログラム呼出し部３０４は、共有メモリに格納している元のメッセージの情報を削除する（ステップ１１１１）。【００６７】
サブメッセージが生成されていない場合は、共有メモリには元のメッセージの情報が格納されていないため、ステップ１１１１で処理プログラム呼出し部３０４は何もしない。そして、処理プログラム呼出し部３０４は、振分処理サーバ１０３にメッセージ終了応答を返信するように、メッセージ処理返信部３０５を呼び出す（ステップ１１１２）。【００６８】
以上で説明したように、分析処理サーバ１０４は、振分処理サーバ１０３が生成したメッセージを、複数の分析処理プログラム３０６に対応できるようにメッセージからさらにサブメッセージを生成する。そして、異なる分析処理プログラム３０６でも元のメッセージ内のデータ項目がほぼ同じ場合に元のメッセージを共通化し、分析処理サーバ１０４はサブメッセージ単位で分析処理プログラム３０６を呼び出すことにより、振分処理サーバ１０３におけるメッセージ生成数を削減して処理を効率化できる。【００６９】
また、分析処理サーバ１０４でもサブメッセージを生成する際に、元のメッセージ内の情報を共有メモリに格納し、サブメッセージはほぼ分析処理プログラム３０６を起動するトリガとしての役割にすることにより、不要なメモリコピーを抑制して、少ないメモリで複数の分析処理プログラム３０６を実行することができる。【００７０】
図１２は、図９〜図１１を用いて説明した動作フローを組み合わせた全体の動作シーケンスの例である。まず、通信デバイス１０１がイベントを送信し（ステップ１２０１）、そのイベントを振分処理サーバ１０３が受信すると、キューに格納して（ステップ１２０２）、受信確認としてＯＫを返信する（ステップ１２０３）。【００７１】
振分処理サーバ１０３は、受信したイベントをキューから取得すると（ステップ１２０４）、イベントからデータ項目を抽出し、対応するメッセージの情報を抽出してメッセージを特定する（ステップ１２０５）。ここで、イベントに対応するメッセージが複数存在すれば、複数のメッセージを特定する。メッセージごとに転送先となる分析処理サーバ１０４ａ、１０４ｂを選定して（ステップ１２０６）、選定した分析処理サーバ１０４ａ、１０４ｂに対して、メッセージを送信する（ステップ１２０７、１２０８）。【００７２】
分析処理サーバ１０４ａ、１０４ｂのそれぞれはメッセージを受信すると、メッセージに対応する分析処理プログラム３０６が複数存在すると判定すれば、メッセージからサブメッセージを生成する（ステップ１２０９、１２１３）。サブメッセージを生成した場合は、受信した元メッセージの情報を共有メモリに格納し（ステップ１２１０、１２１４）、サブメッセージをキューに格納して（ステップ１２１１、１２１５）、振分処理サーバ１０３に受信確認のＯＫを返信する（ステップ１２１２、１２１６）。【００７３】
振分処理サーバ１０３は、分析処理サーバ１０４からの返信を受信すると、メッセージ振分管理記憶部２１３にメッセージとメッセージのキー値と転送先の分析処理サーバ１０４との関係を記憶する（ステップ１２１７）。【００７４】
分析処理サーバ１０４ａ、１０４ｂは、キューに格納されたサブメッセージを取り出すと、サブメッセージに対応した分析処理プログラム３０６を呼び出して実行し（ステップ１２１８、１２１９、１２２２、１２２３、１２２４）、分析処理プログラム３０６が終了し、メッセージを参照する分析処理プログラム３０６が無くなると共有メモリからメッセージを削除して（ステップ１２２０、１２２５）、振分処理サーバ１０３に処理完了の通知を行う（ステップ１２２１、１２２６）。【００７５】
振分処理サーバ１０３は、所定数の完了通知を受信すると、メッセージ振分管理記憶部２１３に管理しているメッセージとメッセージのキー値と転送先の分析処理サーバ１０４との関係をメッセージ振分管理記憶部２１３から削除する（ステップ１２２７）。ただし、実行が完了したメッセージでも引き続き同一のキー値は同一の分析処理サーバ１０４で実行する場合は、必ずしもメッセージ振分管理記憶部２１３から削除しなくてもよい。【００７６】
メッセージ振分管理記憶部２１３からメッセージとキー値と転送先の処理サーバの関係を削除するタイミングは、分析処理プログラム３０６が同一キー値におけるメッセージをどれだけ連続して処理するかに依存するため、削除のタイミングは分析処理プログラム３０６から通知されてもよい。【００７７】
図１〜１２を用いた説明では、イベントを受信してから分析処理するまでの動作について説明した。次に、これらの動作をさせるための事前定義であるイベントとメッセージの関係定義、およびメッセージと分析処理サーバ１０４の関係定義の設定の動作について図１３〜図２０を用いて説明する。【００７８】
図１３は、イベントとメッセージの関係定義、およびメッセージと分析処理サーバ１０４の関係定義を設定するためのメッセージ設定登録サーバ１０６の構成の例である。メッセージ設定登録サーバ１０６は、イベントの種類とデータ項目を登録するイベント登録部１３１１と、登録されたイベントから分析処理プログラム３０６が使用するサブメッセージを設定して登録するサブメッセージ設定登録部１３１２を含む。なお、イベント登録部１３１１は、メッセージ設定登録サーバ１０６の外部から入力されたイベントの種類とデータ項目を登録してもよい。【００７９】
さらにメッセージ設定登録サーバ１０６は、設定されたサブメッセージから他の分析処理プログラム３０６で設定されているサブメッセージに基づいて、振分処理サーバ１０３が振り分ける実際のメッセージを生成するためのメッセージ生成処理部１３１３、生成されたメッセージとイベントの関係と、メッセージに対応した分析処理プログラム３０６の関係の定義を、振分処理サーバ１０３と各分析処理サーバ１０４に配信する設定配信部１３１４を含む。【００８０】
これらの各部は、各部に対応したプログラムが主にメモリ上に展開されて、ＣＰＵで実行されることにより実現される。これらプログラムの中で、サブメッセージ設定登録部１３１２の設定画面の例を図１４に示し、メッセージ生成処理部１３１３の動作フローの例を図１９の説明にて詳細に後述する。【００８１】
またメッセージ設定登録サーバ１０６は、各部が動作するための情報として、イベント情報を管理するイベントマスタ管理記憶部１３２１、設定したサブメッセージと分析処理プログラム３０６の関係を管理する処理プログラムマスタ管理記憶部１３２２、メッセージ生成処理部１３１３で生成したメッセージと処理プログラムの関係を管理するメッセージ管理記憶部１３２３、分析処理プログラム３０６の配置された分析処理サーバ１０４を管理する処理プログラム配置管理記憶部１３２４を保持する。なお、メッセージ設定登録サーバ１０６は単に登録サーバと称してもよい。【００８２】
これらの情報はデータベースなどとして管理され、主にハードディスクや高速に処理する必要のある場合はメモリ上で管理される。各記憶部の詳細なテーブル情報は、車の情報を例に図１５〜１８の説明で後述する。【００８３】
図１４は、サブメッセージ設定登録部１３１２により表示されるサブメッセージ設定登録画面１４０１の例である。サブメッセージ設定登録画面１４０１は、分析処理プログラム３０６を読み込むためのプログラム読込みボタン１４０４、分析処理プログラム３０６に対応する処理プログラム名称を登録する処理プログラム名称登録欄１４０２、分析処理プログラム３０６が使用するイベント種類のデータ項目とキー項目が設定される使用データ項目設定欄１４０３、設定されたデータ項目と分析処理プログラム３０６を関連付けて登録するための登録ボタン１４０５から構成される。【００８４】
ここで、使用データ項目設定欄１４０３の設定は、設定者が読み込ませた分析処理プログラム３０６の使用するイベント種類とデータ項目が手動で設定されてもよいし、分析処理プログラム３０６が解析されて自動で設定されてもよい。また、イベント種類とデータ項目が表示され、イベント種類に対してデータ項目のどれが使用項目とキー項目であるかを手動で設定されてもよく、設定されたことを示すためにチェックマークが表示されてもよい。【００８５】
図１５は、イベントマスタ管理記憶部１３２１をテーブルで構成した例である。イベントマスタ管理記憶部１３２１は、イベント登録部１３１１で登録するイベント種類とそれに対応するデータ項目を記憶する。この例では、イベント種類１５０１とデータ項目１５０２が互いに対応付けられて設定される。【００８６】
図１６は、処理プログラムマスタ管理記憶部１３２２をテーブルで構成した例である。処理プログラムマスタ管理記憶部１３２２は、サブメッセージ設定登録部１３１２の設定画面から登録された分析処理プログラム３０６とイベント種類とデータ項目とキー項目からなるサブメッセージを記憶する。この例では、処理プログラム１６０１、イベント種類１６０２、データ項目１６０３、キー項目１６０４、サブメッセージ１６０５が互いに対応付けられて設定される。【００８７】
なお、サブメッセージ１６０５は、サブメッセージ設定登録画面１４０１からの設定項目にはなく、画面中の登録ボタン１４０５がクリックされたときに、サブメッセージ設定登録部１３１２が、いわゆる自動採番により、自動で一意に識別されるサブメッセージを割当ててもよいし、サブメッセージ設定登録画面１４０１の設定項目に追加されて、設定者により手動で設定されてもよい。【００８８】
図１７は、メッセージ管理記憶部１３２３をテーブルで構成した例である。メッセージ管理記憶部１３２３は、メッセージ生成処理部１３１３で生成したメッセージと分析処理プログラム３０６の関係を記憶する。この例では、メッセージ１７０１、イベント種類１７０２、データ項目１７０３、キー項目１７０４、処理プログラム１７０５が互いに対応付けられて設定される。なお、メッセージ１７０１も自動採番により、自動で一意に識別されるメッセージが割り当てられてもよい。【００８９】
図１８は、処理プログラム配置管理記憶部１３２４をテーブルで構成した例である。処理プログラム配置管理記憶部１３２４は、分析処理サーバ１０４に配置されている分析処理プログラム３０６と、転送するメッセージの関係を記憶する。この例では、サーバ１８０１、ＩＰアドレス１８０２、スレッド数１８０３、メッセージ１８０４、処理プログラム１８０５が互いに対応付けられて設定される。【００９０】
処理プログラム配置管理記憶部１３２４のテーブルでは、メッセージ処理システムとして動作する分析処理サーバ１０４の情報が、サーバ１８０１、ＩＰアドレス１８０２、スレッド数１８０３へそれぞれ事前に設定され、メッセージ１８０４、処理プログラム１８０５へは、メッセージ生成処理部１３１３が生成したメッセージとメッセージに対応した分析処理プログラム３０６の関係が設定される。【００９１】
なお、設定された分析処理サーバ１０４と分析処理プログラム３０６の関係に基づき、分析処理プログラム３０６を分析処理サーバ１０４へ配置するには、メッセージ設定登録サーバ１０６の設定配信部１３１４が分析処理プログラム３０６を自動で配信してもよく、設定情報を見て設計者が手動で配置してもよい。【００９２】
図１９は、メッセージ生成処理部１３１３の動作をプログラムで実現した場合の動作フローの例である。プログラムはメッセージ設定登録サーバ１０６のＣＰＵが実行するため、メッセージ生成処理部１３１３が主体となる説明は、ＣＰＵが主体であってもよい。以下の説明では、メッセージ生成処理部１３１３で一時的に使用する情報であって、図２０に示す処理プログラム−データ項目対応表も参照しながら説明する。【００９３】
メッセージ生成処理部１３１３は、サブメッセージ設定登録画面１４０１の登録ボタン１４０５がクリックされた後に実行され、登録された分析処理プログラム３０６とサブメッセージの情報（イベント種類、データ項目、キー項目）を受け取ると、まず受け取ったサブメッセージと同じイベント種類の分析処理プログラム３０６、データ項目、およびキー項目を、処理プログラムマスタ管理記憶部１３２２から取得する（ステップ１９０１）。【００９４】
メッセージ生成処理部１３１３は、ステップ１９０１で取得した情報に基づき、図２０で示すような処理プログラム−データ項目対応表を作成する（ステップ１９０２）。そして、作成された処理プログラム−データ項目対応表をもとに、まず同一のキー項目の分析処理プログラム３０６をグルーピングして（ステップ１９０３）、グルーピングされた１つのグループ内の分析処理プログラム３０６の数が、１つのサーバで同時並列実行できるスレッド数より多いかを判定する（ステップ１９０４）。【００９５】
ステップ１９０４で多いと判定された場合、メッセージ生成処理部１３１３は、スレッド数以下になるように分析処理プログラム３０６のグループをさらに分割する。この分割において、共通のデータ項目の多い分析処理プログラム３０６を同じグループにする（ステップ１９０５）。【００９６】
ステップ１９０４で多くないと判定された場合、メッセージ生成処理部１３１３は、複数のグループを統合する。この統合においても、共通のデータ項目の多い分析処理プログラム３０６を同じグループにする（ステップ１９０６）。図２０に示した例では、まずキー項目でグルーピングすると、分析処理ＡがグループＡ、分析処理ＢがグループＢ、分析処理Ｃと分析処理Ｄが同じキー項目のため同一グループとなりグループＣ、分析処理ＥがグループＤとなる。【００９７】
この例では、キー項目が設定されていない分析処理プログラム３０６がそれぞれ別グループであるとしているため、分析処理Ｂと分析処理ＥがグループＢとグループＤになっている。１つのグループ内の分析処理プログラム３０６の数は、１つのサーバのスレッド数より小さいと判定されるため、グループが統合される。すなわち、共通のデータ項目が多いグループＡとグループＢが同一グループに統合され、共通のデータ項目が多いグループＣとグループＤが同一グループに統合される。【００９８】
メッセージ生成処理部１３１３は、このようにしてグルーピングされた各グループ内で共通して使用されるデータ項目をまとめたものをメッセージとして定義し（ステップ１９０７）、定義されたメッセージをメッセージ管理記憶部１３２３に登録し（ステップ１９０８）、メッセージ単位に分析処理プログラム３０６が均等になるように分析処理サーバ１０４への配置先を決定し（ステップ１９１０）、処理プログラム配置管理記憶部１３２４に設定する。【００９９】
このため、図２０に示した例では、グループＡとグループＢが統合された１つのグループにメッセージＸが定義され、グループＣとグループＤが統合された１つのグループにメッセージＹが定義される。また、グループに対して定義されるメッセージは、異なるグループに対して異なる値の情報が定義されてもよく、グループそれぞれに対していわゆる自動採番されて、生成あるいは割り当てられてもよい。【０１００】
なお、サブメッセージのグループは、共通するキー項目とデータ項目に基づいてグルーピングすると説明したが、その他に追加で設定されたサブメッセージをどのグループに属するかを判定してもよい。【０１０１】
以上で説明したように、受信したイベントに対して、分析処理プログラム３０６が使用するデータ項目を抽出し、少ない情報量のメッセージを生成するとともに、共通のデータ項目を多く使用する分析処理プログラム３０６へ同一のメッセージを割当て、分析処理プログラム３０６を実行する分析処理サーバ１０４側で、共有メモリのメッセージを参照するサブメッセージを分析処理プログラム３０６毎に生成することで、メッセージの転送回数を削減して、システム全体のリソースが効率的に活用される。【０１０２】
また、分析処理サーバ１０４側でメッセージからサブメッセージを生成する際に、メッセージを共有メモリに格納して、サブメッセージは共有メモリを参照することで、複数のサブメッセージを生成したとしても、不必要にデータをコピーすることなくサブメッセージを生成することができ、メモリを効率的に活用できる。【０１０３】
また、振分処理サーバ１０３は、キー値が同じメッセージは同一の分析処理サーバ１０４を転送先として決定し、キー値が異なる場合は負荷状況に応じた分析処理サーバ１０４を転送先として決定するというメッセージの振り分けにより、適切な動的負荷分散を行うとともに、例えば同一車ＩＤの行動を監視するなど、特定の１つのデータ値の情報を時系列で処理を行う場合でも、同一の分析処理サーバ１０４に転送されるため、他の分析処理サーバ１０４との排他制御などの処理負荷がなくなり、分析処理を短時間で実行することができる。【０１０４】
また、メッセージを分析処理プログラム３０６ごとのイベントとデータ項目とキー項目からなるサブメッセージを定義するだけで、分析処理プログラム３０６間の共通なデータ項目を判定して、サブメッセージをまとめたメッセージを生成し、これらの情報を振分処理サーバ１０３と分析処理サーバ１０４に配信することにより、システムの動作に必要な定義情報を容易に設定することができる。
【実施例２】
【０１０５】
実施例２では、通信デバイス１０１の数や通信デバイス１０１が送信するデータ量が多い場合に、処理のボトルネックとなる振分処理サーバ１０３を複数配置する例について説明する。【０１０６】
図２１は、実施例２におけるシステムの全体構成の例である。実施例１の図１を用いて説明したシステムの全体構成の例と比べて、ネットワーク１０５と振分処理サーバ１０３の間にロードバランサ１０７が配置されるとともに、複数の振分処理サーバ１０３ａ、１０３ｂ、１０３ｃでデータを共有するための振分管理サーバ２１０１が配置される。【０１０７】
振分管理サーバ２１０１は、振分処理サーバ１０３が複数あり、前段のロードバランサ１０７によりイベントが振分処理サーバ１０３に振り分けられるので、複数の振分処理サーバ１０３ａ、１０３ｂ、１０３ｃ間のデータ共有のため、振分処理サーバ１０３の構造の一部を有する。【０１０８】
具体的には図２２に示すように、図１を用いて説明した振分処理サーバ１０３に含まれるサーバ選定部２０４、振分けテーブル更新部２０７、サーバ負荷管理記憶部２１２、メッセージ振分管理記憶部２１３を、振分管理サーバ２１０１は含む。この場合、振分処理サーバ１０３は、図１を用いて説明したイベント受信部２０１、キュー管理部２０２、メッセージ情報抽出部２０３、メッセージ転送部２０５、メッセージ処理結果受信部２０６、イベント−メッセージ定義記憶部２１１を含む。【０１０９】
振分処理サーバ１０３は、振分管理サーバ２１０１の各部を有しなくてもよく、この各部に対応するプログラムが格納されなくてもよい。また、振分処理サーバ１０３は、振分管理サーバ２１０１の各部を有してもよく、この各部に対応するプログラムが格納されてもよいが、この各部あるいはプログラムが実行されなくてもよい。【０１１０】
各部の動作の順序は実施例１で説明したとおりであり、メッセージ情報抽出部２０３の後にサーバ選定部２０４が呼び出され、その後にメッセージ転送部２０５が呼び出され、メッセージ処理結果受信部２０６が分析処理サーバ１０４から結果を受信すると、振分けテーブル更新部２０７が呼び出される。【０１１１】
振分処理サーバ１０３と振分管理サーバ２１０１とで動作が跨ぐ場合は、振分処理サーバ１０３と振分管理サーバ２１０１との間で通信が発生し、振分管理サーバ２１０１は、複数の振分処理サーバ１０３ａ、１０３ｂ、１０３ｃから同時にサーバ選定要求や振分けテーブル更新要求が発生した場合、要求の排他制御や順序制御を行う。【０１１２】
図２３は、振分処理サーバ１０３と振分管理サーバ２１０１の動作シーケンスの例を示す。まず振分処理サーバ１０３は、イベントからデータ項目を抽出し、対応するメッセージの情報を抽出してメッセージを特定し（ステップ２３０１）、特定したメッセージを振分管理サーバ２１０１に送信する（ステップ２３０２）。【０１１３】
振分管理サーバ２１０１は、各メッセージの転送先となる分析処理サーバ１０４を選択して（ステップ２３０３）、選択した分析処理サーバ１０４の情報を振分処理サーバ１０３に返信する（ステップ２３０４）。振分処理サーバ１０３は、振分管理サーバ２１０１が選択した分析処理サーバ１０４に対してそれぞれメッセージを送信する（ステップ２３０５、２３０６）。【０１１４】
分析処理サーバ１０４は、メッセージに対応した分析処理を実行し（ステップ２３０７）、振分処理サーバ１０３に返信する（ステップ２３０８、２３０９）。振分処理サーバ１０３は、分析処理サーバ１０４からの返信を受け取ると、振分管理サーバ２１０１にメッセージごとの完了通知を送信する（ステップ２３１０）。振分管理サーバ２１０１はメッセージ振分管理記憶部２１３のテーブルを更新して、更新完了を振分処理サーバ１０３に通知して、一連の動作が終了となる。【０１１５】
以上で説明したように、振分処理サーバ１０３が複数台設置されても、振分処理サーバ１０３間で共有すべき分析処理サーバ１０４への転送情報は、振分管理サーバ２１０１に独立して一元管理されることで、実施例１で説明した分析処理サーバ１０４の負荷状況による転送や、同一キー値のメッセージを同一分析処理サーバ１０４に転送するというような動作をそのまま利用することができる。
【符号の説明】
【０１１６】
１０１：通信デバイス、１０２：集約サーバ、１０３：振分処理サーバ、１０４：分析処理サーバ、１０５：ネットワーク、１０６：メッセージ設定登録サーバ、２１０１：振分管理サーバ
【図１】
0006668456.tif 000002
【図２】
0006668456.tif 000003
【図３】
0006668456.tif 000004
【図４】
0006668456.tif 000005
【図５】
0006668456.tif 000006
【図６】
0006668456.tif 000007
【図７】
0006668456.tif 000008
【図８】
0006668456.tif 000009
【図９】
0006668456.tif 000010
【図１０】
0006668456.tif 000011
【図１１】
0006668456.tif 000012
【図１２】
0006668456.tif 000013
【図１３】
0006668456.tif 000014
【図１４】
0006668456.tif 000015
【図１５】
0006668456.tif 000016
【図１６】
0006668456.tif 000017
【図１７】
0006668456.tif 000018
【図１８】
0006668456.tif 000019
【図１９】
0006668456.tif 000020
【図２０】
0006668456.tif 000021
【図２１】
0006668456.tif 000022
【図２２】
0006668456.tif 000023
【図２３】
0006668456.tif 000024