(57)【特許請求の範囲】
【請求項１】
複合イベントを分散型の検出処理により検出する分散イベント検出システムであって、
複合イベントを受信するサブスクライブノードと、
複合イベントをルーティングする複数のブローカーノードと、
複合イベントを検出するための複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードとを備え、
前記サブスクライブノードは、前記複合イベント検出式を生成する複合イベント検出式生成手段を含み、
前記ルートノードは、
前記サブスクライブノードが生成した前記複合イベント検出式を複数の子複合イベント検出式に分解する検出式分解手段と、
前記検出式分解手段が分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとしてブローカーノードをそれぞれ割り当てる子ルートノード割当手段と、
前記子ルートノード割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する複合イベント検出手段とを含む
ことを特徴とする分散イベント検出システム。
【請求項２】
子ルートノードは、
ルートノード又は他の子ルートノードが分解した子複合イベント検出式をさらに複数の子複合イベント検出式に再帰的に分解する検出式再帰分解手段と、
前記検出式再帰分解手段が分解した各子複合イベント検出式に対して、さらに子ルートノードとして他のブローカーノードをそれぞれ再帰的に割り当てる子ルートノード再帰割当手段と、
前記子ルートノード再帰割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出する子複合イベント検出手段とを含む
請求項１記載の分散イベント検出システム。
【請求項３】
ブローカーノード及びルートノードは、オーバーレイネットワーク上に構築されている請求項１又は請求項２記載の分散イベント検出システム。
【請求項４】
さらに複合イベントを検出するためのノード群を含み、
複合イベント検出を主目的とした専用オーバーレイネットワークと、これ以上分割できないイベントであるアトミックイベントルーティングを主目的とした専用オーバーレイネットワークと、複合イベントをルーティングすることを主目的とした専用オーバーレイネットワークとを含むマルチオーバーレイネットワーク型に構築されている
請求項３記載の分散イベント検出システム。
【請求項５】
複合イベントを分散型の検出処理により検出する分散イベント検出システムが備えるブローカーノードであって、
複合イベントを検出するための複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードとして動作する機能を有し、
複合イベントを受信するサブスクライブノードが生成した前記複合イベント検出式を複数の子複合イベント検出式に分解する検出式分解手段と、
前記検出式分解手段が分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして他のブローカーノードをそれぞれ割り当てる子ルートノード割当手段と、
前記子ルートノード割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する複合イベント検出手段とを含む
ことを特徴とするブローカーノード。
【請求項６】
子ルートノードとして動作する機能を有し、
ルートノード又は他の子ルートノードが分解した子複合イベント検出式をさらに複数の子複合イベント検出式に再帰的に分解する検出式再帰分解手段と、
前記検出式再帰分解手段が分解した各子複合イベント検出式に対して、さらに子ルートノードとして他のブローカーノードをそれぞれ再帰的に割り当てる子ルートノード再帰割当手段と、
前記子ルートノード再帰割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出する子複合イベント検出手段とを含む
請求項５記載のブローカーノード。
【請求項７】
複合イベントを分散型の検出処理により検出する分散イベント検出方法であって、
複合イベントを受信するサブスクライブノードが、複合イベントを検出するための複合イベント検出式を生成するステップと、
前記複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードが、前記サブスクライブノードが生成した前記複合イベント検出式を複数の子複合イベント検出式に分解するステップと、
前記ルートノードが、分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして、イベントをルーティングする複数のブローカーノードのいずれかを割り当てるステップと、
前記ルートノードが、割り当てた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出するステップとを含む
ことを特徴とする分散イベント検出方法。
【請求項８】
子ルートノードが、ルートノード又は他の子ルートノードが分解した子複合イベント検出式をさらに複数の子複合イベント検出式に再帰的に分解するステップと、
前記子ルートノードが、分解した各子複合イベント検出式に対して、さらに子ルートノードとして他のブローカーノードをそれぞれ再帰的に割り当てるステップと、
前記子ルートノードが、割り当てた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出するステップとを含む
請求項７記載の分散イベント検出方法。
【請求項９】
複合イベントを分散型の検出処理により検出するための分散イベント検出用プログラムであって、
コンピュータに、
複合イベントを受信するサブスクライブノードが生成した、複合イベントを検出するための複合イベント検出式を複数の子複合イベント検出式に分解する処理と、
分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして他のブローカーノードをそれぞれ割り当てる処理と、
割り当てた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する処理とを
実行させるための分散イベント検出用プログラム。
【請求項１０】
コンピュータに、
ルートノード又は他の子ルートノードが分解した子複合イベント検出式をさらに複数の子複合イベント検出式に再帰的に分解する処理と、
分解した各子複合イベント検出式に対して、さらに子ルートノードとして他のブローカーノードをそれぞれ再帰的に割り当てる処理と、
割り当てた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出する処理とを実行させる
請求項９記載の分散イベント検出用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合イベントを分散型の検出処理により検出する分散イベント検出システム、分散イベント検出方法、及び分散イベント検出用プログラムに関する。また、本発明は、分散イベント検出システムが備えるブローカーノードに関する。
【背景技術】
【０００２】
イベント処理システムの一例が、特許文献１に記載されている。特許文献１に記載された第１の実施形態では、デバイス１０５ａ〜１０５ｆが個々のイベントを検出し、それらは、コンテキスト依存振り分け器１０３を介して、１つの処理サーバ１０４ａに集約される。この処理サーバ１０４ａは、イベント処理分散制御部１０１によって振り分けルール１０７が予め設定されている。そのため、デバイス１０５ａ〜１０５ｆが検出した個々のイベントは、処理サーバ１０４ａに集約される。
【０００３】
また、処理サーバ１０４ａは、処理ルール１０８ａが予め設定されている。例えば、処理サーバ１０４ａは、「全ての部材のＲＦＩＤタグからの検出信号を全て検出したら、アプリケーションに通知」というルールに従って処理を実行する。従って、このルールに示されている条件が満足された時に、処理サーバ１０４ａは、アプリケーション１０６ａに対してイベント通知を行う。
【０００４】
また、例えば、特許文献２には、関連技術として、複合イベント通知システムが記載されている。特許文献２に記載された複合イベント通知システムは、サブスクライバ・アプリケーションからサブスクライブ情報を受け取り、複合イベントであればサブスクライブ情報をサブイベントに分解する。そして、特許文献２には、サブスクライブ情報が要求しているパブリッシュ情報が全て揃ったと判断した場合には、集約したパブリッシュ情報を指定された通知先に通知することが記載されている。
【０００５】
【特許文献１】特開２００６−３０９７０１号公報（第１９頁、図１−２）
【特許文献２】特開２００４−３４８６８０号公報（段落００４２−００４７、図１−２）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１や特許文献２に記載されたシステムを用いたとしても、サーバ側のリンクの無駄な消費を生じるという問題点がある。特許文献１や特許文献２に記載されたシステムは、その記載にもあるようにサーバ・クライアント方式を前提としたイベント処理方式を用いたものであり、１つの処理ルールを１つの処理サーバで処理する点に特徴がある。そのため、方式的にサーバにトラヒックが集中する。
【０００７】
例えば、特許文献１に記載されたシステムでは、その記載にあるように、デバイス１０５ａ〜１０５ｆが検出した個々のイベントが、処理サーバ１０４ａに集約され、サーバに接続されるリンクにトラヒックが集中する。
【０００８】
例えば、デバイスとして、部材Ｄ＝｛部材Ａ、部材Ｂ、部材Ｃ｝（括弧内は要素）を用いる場合を考えてみる。個々の部材が生成するイベントの発生のタイミングは、同期していないことも考えられる。例えば、部材Ａは毎秒１個イベントを生成し、部材Ｂは１分に１個イベントを生成し、部材Ｃは１時間に１個イベントを生成するというようなイベントトラヒック特性が考えられる。このような場合、部材Ｄに関するイベントの発生頻度は１時間に１回程度となるが、その間、部材Ａに関するイベントは３６００個生成され、部材Ｂに関するイベントは６０個生成されている。
【０００９】
上記の場合、部材Ｄのイベントを検出するためには、最初の部材Ａ及び部材Ｂのイベントの検出のみが通知されればよく、残りのイベントトラヒックは、無駄にサーバ周辺のリンクを消費していることになる。また、処理サーバ１０４ａが受けもつ処理ルールの数が増加すれば、その増加に伴い、無駄なリンク消費が増加する。
【００１０】
そこで、本発明は、複合イベント検出においてルートノード（サーバ）側の無駄なリンク消費を軽減できるとともに、複合イベント処理のための負荷を軽減できる分散イベント検出システム、ブローカーノード、分散イベント検出方法、及び分散イベント検出用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明による分散イベント検出システムは、複合イベントを分散型の検出処理により検出する分散イベント検出システムであって、複合イベントを受信するサブスクライブノードと、複合イベントをルーティングする複数のブローカーノードと、複合イベントを検出するための複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードとを備え、サブスクライブノードは、複合イベント検出式を生成する複合イベント検出式生成手段を含み、ルートノードは、サブスクライブノードが生成した複合イベント検出式を複数の子複合イベント検出式に分解する検出式分解手段と、検出式分解手段が分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとしてブローカーノードをそれぞれ割り当てる子ルートノード割当手段と、子ルートノード割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する複合イベント検出手段とを含むことを特徴とする。
【００１２】
本発明によるブローカーノードは、複合イベントを分散型の検出処理により検出する分散イベント検出システムが備えるブローカーノードであって複合イベントを検出するための複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードとして動作する機能を有し、複合イベントを受信するサブスクライブノードが生成した複合イベント検出式を複数の子複合イベント検出式に分解する検出式分解手段と、検出式分解手段が分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして他のブローカーノードをそれぞれ割り当てる子ルートノード割当手段と、子ルートノード割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する複合イベント検出手段とを含むことを特徴とする。
【００１３】
本発明による分散イベント検出方法は、複合イベントを分散型の検出処理により検出する分散イベント検出方法であって、複合イベントを受信するサブスクライブノードが、複合イベントを検出するための複合イベント検出式を生成するステップと、複合イベント検出式を分解した子複合イベント検出式の配信処理を行うルートノードが、サブスクライブノードが生成した複合イベント検出式を複数の子複合イベント検出式に分解するステップと、ルートノードが、分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして、イベントをルーティングする複数のブローカーノードのいずれかを割り当てるステップと、ルートノードが、割り当てた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出するステップとを含むことを特徴とする。
【００１４】
本発明による分散イベント検出用プログラムは、複合イベントを分散型の検出処理により検出するための分散イベント検出用プログラムであって、コンピュータに、複合イベントを受信するサブスクライブノードが生成した、複合イベントを検出するための複合イベント検出式を複数の子複合イベント検出式に分解する処理と、分解した各子複合イベント検出式をブローカーノードに配信することにより、新たに子ルートノードとして他のブローカーノードをそれぞれ割り当てる処理と、割り当てた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する処理とを実行させるためのものである。
【発明の効果】
【００１５】
本発明によれば、複合イベント検出においてルートノード側の無駄なリンク消費を軽減できるとともに、複合イベント処理のための負荷を軽減することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態を図面を参照して説明する。まず、本発明による分散イベント検出システムの概要を説明する。本発明は、複数のイベント（状態変化）を検出し、その検出したイベントを予め定義されたルールに従って処理し、その処理結果を通知する分散イベント検出システムに関する。
【００１７】
本発明において、分散イベント検出システムは、パブリッシュ・サブスクライブ方式による通信手段を備える。本パブリッシュ・サブスクライブ方式を用いた分散イベント検出システムにおいて、パブリッシュノードは、状態変化を検出し、その検出した状態変化をイベント情報としてサブスクライブノードに配信する。特許文献１に記載された関連技術では、デバイス１０５ａ〜１０５ｆがパブリッシュノードに相当する。またサブスクライブノードは、特許文献１に記載された関連技術では、例えばアプリケーション１０６ａ等に該当する。
【００１８】
パブリッシュノードとサブスクライブノードとの間には、１つ又は複数のブローカーノードが配備され、それらのブローカーノードはネットワークを構築している。ブローカーノードは、各イベントの中身（コンテキスト）を走査して、次の転送先を決定するアプリケーションルータである。
【００１９】
また、例えば、いずれかのブローカーノードは、複合イベント検出ノードとして割り当てられる。複合イベント検出ノードは、複数の分割できないアトミックイベントで表現された複合イベントを検出する。そして、複合イベント検出ノードは、その複合イベントの発生条件を満足した時に、上位の複合イベント検出ノードに複合イベントを通知する。
【００２０】
本発明では、複雑な複合イベント式（つまり、構成要素の多い１つの複合イベント式）を、より単純な複数の複合イベント式に分割していき、子レベルや孫レベル等の階層的な複合イベント検出コンフィギュレーションモデルを作成する。また、単純な複合イベント検出ノードを分散して配置していき、さらに、それらの複合イベント検出ノードをパブリッシュ・サブスクライブ方式で連結することで、分散型の複合イベント検出機能を備えた分散イベント検出システムを実現する。
【００２１】
本実施形態に示す分散イベント検出システムは、例えば、ある装置を構成する部品の調達状況を可視化するイベント検出システムの用途に適用できる。また、分散イベント検出システムは、別な用途として、１つの物理ネットワーク上に、階層的に複数のオーバーレイネットワークを構築するようなＭＶＮＯサービスの用途に適用できる。この場合、具体的には、物理ノードレベルから各レイヤのアプリケーションノードに関して、障害イベントの連鎖状況を複合イベント式で表現することにより、物理層からアプリケーション層への垂直方向に障害状況の伝播状況を表現し、稼動／障害状態を可視化することが可能となり、ネットワークモニタリングサービスの用途として適用可能である。
【００２２】
また、分散イベント検出システムは、分散イベント検出システムを構成する手段がインターネットや企業網、携帯電話網上に構築され、各種端末によって生成されるデータからアトミックイベントを生成し、それらを組み合わせた複合イベントを検出、生成及び通知することによって、実空間やネットワーク空間における様々なイベントを可視化する複合イベント検出サービスの提供の用途に用いられる。
【００２３】
次に、分散イベント検出システムが行う複合イベント式の分割方法について、図面を参照して説明する。図１は、複合イベント式の分割事例を示す説明図である。なお、図１では、一例として、複合イベント式Ｆ＝（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）  ＡＮＤ  （Ｄ  ＯＲ  Ｅ）を分割する事例を示している。また、図１に示す複合イベント式の分割処理は、後述するように、具体的には、ルートノードや複合イベント検出ノードによって実行される。
【００２４】
分散イベント検出システムは、最初に、この複合イベント式Fを、（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）と、ＡＮＤと、（Ｄ  ＯＲ  Ｅ）という３つのパートに分割する（ステップＴ１）。次いで、分散イベント検出システムは、（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）を、さらに（Ｂ  ＡＮＤ  Ｃ）と、ＯＲと、Ａとに分割する（ステップＴ２）。次いで、分散イベント検出システムは、（Ｂ  ＡＮＤ  Ｃ）を、さらにＢと、ＡＮＤと、Ｃとに分割する（ステップＴ３）。また、分散イベント検出システムは、（Ｄ  ＯＲ  Ｅ）部分を、Ｄと、ＯＲと、Ｅとに分割する（ステップＴ４）。
【００２５】
以上の手順に従って処理を実行することによって、分散イベント検出システムは、図１に示すような複合イベント式のツリー構造を作成する。また、上記ツリー形式のデータ構造の複合イベント式を、図２に示すように、分散型の複合イベント検出システムにプロビジョニングしていく。
【００２６】
図２に示すように、分散イベント検出システムは、サブスクライブノード１０、ルートノード２０、複合イベント検出ノード３０〜３２、及びブローカーノード４０〜４４を含む。なお、分散イベント検出システムは、具体的には、複数のブローカーノードが接続されたブローカー型イベント配信網として構成される。従って、本実施形態では、各ノード間で行われる通信は、ノード間に存在する１つ又は複数のブローカーノードを介して行われる。ただし、隣り合うノードである場合には、ノード間で直接通信が行われる。
【００２７】
サブスクライブノード１０は、例えば、渋滞情報等の各種情報を各ユーザに配信するサービス事業者が運営するサーバである。サブスクライブノード１０は、例えば、受信したイベント（複合イベントを含む）に基づいて、渋滞情報等の各種情報を、携帯電話網やインターネット等の通信ネットワークを介して、ユーザの携帯電話機やパーソナルコンピュータ等の端末に配信する。
【００２８】
サブスクライブノード１０は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。なお、図２では、１つのサブスクライブノード１０が示されているが、分散イベント検出システムは、複数のサブスクライブノード１０を含んでもよい。
【００２９】
図３は、サブスクライブノード１０の構成の一例を示すブロック図である。図３に示すように、サブスクライブノード１０は、複合イベント式生成手段１００１、及び複合イベント配信登録要求手段１００２を含む。
【００３０】
複合イベント式生成手段１００１は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。複合イベント式生成手段１００１は、複合イベントを検出するための複合イベント式Ｆを生成する機能を備える。
【００３１】
複合イベント配信登録要求手段１００２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。複合イベント配信登録要求手段１００２は、配信を希望する複合イベントを登録するための複合イベント配信登録要求を、ルートノード２０に対して送信する機能を備える。この場合、複合イベント配信登録要求手段１００２は、複合イベント式生成手段１００１が生成した複合イベント式Ｆを含む複合イベント配信登録要求を、ルートノード２０に対して送信する。
【００３２】
ルートノード２０は、具体的には、ＩＰルータ等のネットワーク装置や、プログラムに従って動作しルータ機能を搭載したパーソナルコンピュータ等の情報処理装置によって実現される。なお、図２では、１つのルートノード２０が示されているが、分散イベント検出システムは、複数のルートノード２０を含んでもよい。
【００３３】
図４は、ルートノード２０の構成の一例を示すブロック図である。図４に示すように、ルートノード２０は、複合イベント配信登録手段２００１、複合イベント式分解手段２００２、複合イベント検出ノード割当手段２００３、子複合イベント受信手段２００４、複合イベント検出手段２００５、及び複合イベント配信手段２００６を含む。
【００３４】
複合イベント配信登録手段２００１は、サブスクライブノード１０から受信した複合イベント配信登録要求に基づいて、サブスクライブノード１０に対して配信する複合イベントを登録する機能を備える。具体的には、複合イベント配信登録手段２００１は、配信対象の複合イベントを特定可能な情報（例えば、イベントＩＤ）をルーティングテーブルに登録する。また、複合イベント配信登録手段２００１は、サブスクライブノード１０が生成した複合イベント式Ｆを、ルートノード２０が備えるメモリやハードディスク装置等の記憶装置に記憶させる。
【００３５】
複合イベント式分解手段２００２は、複合イベント配信登録手段２００１が登録した複合イベント式Ｆを複数の要素（子複合イベント式や、アトミックイベント、演算子）に分解する処理を行う機能を備える。例えば、図１に示す例では、複合イベント式分解手段２００２は、複合イベント式を２つの子複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）及び（Ｄ  ＯＲ  Ｅ）と、演算子（ＡＮＤ）とに分解する。
【００３６】
複合イベント検出ノード割当手段２００３は、複合イベント式分解手段２００２が分解した子複合イベント式に対して、所定のルールに従って新たに複合イベント検出ノード３０，３１をアサインする（割り当てる）機能を備える。例えば、複合イベント検出ノード割当手段２００３は、ネットワーク内に存在するブローカーノードのうち、分解した子複合イベントのイベントＩＤと数値的に近いノードＩＤをもつノードを、複合イベント検出ノードとして選択する。なお、複合イベント検出ノードの選択方法は、本実施形態で示した方法に限られず、例えば、現在の処理負荷が最も小さいブローカーノードを複合イベント検出ノードとして選択してもよい。
【００３７】
また、複合イベント検出ノード割当手段２００３は、アサインした複合イベント検出ノード３０，３１に対して、子複合イベントの配信登録要求を送信する機能を備える。この場合、複合イベント検出ノード割当手段２００３は、複合イベント式分解手段２００２が分解した子複合イベント式を含む配信登録要求を、複合イベント検出ノード３０，３１に対して送信する。
【００３８】
また、複合イベント検出ノード割当手段２００３は、複合イベント式Ｆを分解した要素がアトミックイベントである場合には、そのアトミックイベントを中継するブローカーノードに対して、アトミックイベントの配信登録要求を送信する機能を備える。
【００３９】
子複合イベント受信手段２００４は、複合イベント検出ノード３０，３１から子複合イベント（すなわち、複合イベント検出ノード３０，３１が検出した子複合イベント）を受信する機能を備える。また、子複合イベント受信手段２００４は、複合イベント式を分解した要素にアトミックイベントが含まれる場合には、そのアトミックイベントを中継するブローカーノードからアトミックイベントを受信する機能を備える。
【００４０】
複合イベント検出手段２００５は、子複合イベント受信手段２００４が受信した子複合イベントやアトミックイベントに基づいて、複合イベントを検出したか否かを判定する機能を備える。図１に示す例では、複合イベント検出手段２００５は、子複合イベント（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）と（Ｄ  ＯＲ  Ｅ）とを両方受信した場合に、複合イベント式Ｆに合致すると判定し、複合イベントを検出したと判定する。
【００４１】
複合イベント配信手段２００６は、複合イベント検出手段２００５が複合イベントを検出したと判定すると、検出した複合イベントをサブスクライブノード１０に配信する機能を備える。
【００４２】
複合イベント検出ノード３０〜３２は、具体的には、ＩＰルータ等のネットワーク装置や、プログラムに従って動作しルータ機能を搭載したパーソナルコンピュータ等の情報処理装置によって実現される。なお、図２では、３つの複合イベント検出ノード３０〜３２が示されているが、分散イベント検出システムは、３つに限らず、例えば、４以上の複合イベント検出ノードを含んでもよい。
【００４３】
図５は、複合イベント検出ノード３０の構成の一例を示すブロック図である。図５に示すように、複合イベント検出ノード３０は、子複合イベント配信登録手段３００１、子複合イベント式分解手段３００２、複合イベント検出ノード割当手段３００３、子複合イベント受信手段３００４、子複合イベント検出手段３００５、及び子複合イベント送信手段３００６を含む。なお、図５では、複合イベント検出ノード３０の場合が示されているが、複合イベント検出ノード３１，３２の構成も同様である。
【００４４】
子複合イベント配信登録手段３００１は、ルートノード２０や他の複合イベント検出ノード（上位の複合イベント検出ノード）から受信した子複合イベントの配信登録要求に基づいて、ルートノード２０や他の複合イベント検出ノードに対して配信する子複合イベントを登録する機能を備える。具体的には、子複合イベント配信登録手段３００１は、配信対象の子複合イベントを特定可能な情報（例えば、イベントＩＤ）をルーティングテーブルに登録する。また、子複合イベント配信登録手段３００１は、ルートノード２０や他の複合イベント検出ノードが分解した子複合イベント式を、複合イベント検出ノード３０が備えるメモリやハードディスク装置等の記憶装置に記憶させる。
【００４５】
子複合イベント式分解手段３００２は、子複合イベント配信登録手段３００１が登録した子複合イベント式を複数の要素（子複合イベント式や、アトミックイベント、演算子）に分解する処理を行う機能を備える。例えば、図１に示す例では、子複合イベント式分解手段３００２は、複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）を、子複合イベント式（Ｂ  ＡＮＤ  Ｃ）と、アトミックイベントＡと、演算子（ＯＲ）とに分解する。すなわち、子複合イベント式分解手段３００２は、ルートノード２０や上位の複合イベント検出ノードが分解した子複合イベント式をさらに再帰的に複数の要素（子複合イベント式や、アトミックイベント、演算子）に分解する。
【００４６】
複合イベント検出ノード割当手段３００３は、子複合イベント式分解手段３００２が分解した子複合イベント式に対して、所定のルールに従って新たに複合イベント検出ノード３２をアサインする（割り当てる）機能を備える。例えば、複合イベント検出ノード割当手段３００３は、ネットワーク内に存在するブローカーノードのうち、分解した子複合イベントのイベントＩＤと数値的に近いノードＩＤをもつノードを、複合イベント検出ノードとして選択する。すなわち、複合イベント検出ノード割当手段３００３は、子複合イベント式分解手段３００２が分解した子複合イベント式に対して、さらに子ルートノードとして他のブローカーノードをそれぞれ再帰的に割り当てる。なお、複合イベント検出ノードの選択方法は、本実施形態で示した方法に限られず、例えば、現在の処理負荷が最も小さいブローカーノードを複合イベント検出ノードとして選択してもよい。
【００４７】
また、複合イベント検出ノード割当手段３００３は、アサインした複合イベント検出ノード３２に対して、子複合イベントの配信登録要求を送信する機能を備える。この場合、複合イベント検出ノード割当手段３００３は、子複合イベント式分解手段３００２が分解した子複合イベント式を含む配信登録要求を、複合イベント検出ノード３２に対して送信する。
【００４８】
また、複合イベント検出ノード割当手段３００３は、子複合イベント式を分解した要素がアトミックイベントである場合には、そのアトミックイベントを中継するブローカーノードに対して、アトミックイベントの配信登録要求を送信する機能を備える。例えば、図１及び図２に示す例では、複合イベント検出ノード割当手段３００３は、ブローカーノード４０に対して、アトミックイベントＡの配信登録要求を送信する。
【００４９】
子複合イベント受信手段３００４は、複合イベント検出ノード３２から子複合イベント（すなわち、複合イベント検出ノード３２が検出した子複合イベント）を受信する機能を備える。また、子複合イベント受信手段３００４は、子複合イベント式を分解した要素にアトミックイベントが含まれる場合には、そのアトミックイベントを中継するブローカーノードからアトミックイベントを受信する機能を備える。
【００５０】
子複合イベント検出手段３００５は、子複合イベント受信手段３００４が受信した子複合イベントやアトミックイベントに基づいて、子複合イベントを検出したか否かを判定する。図１に示す例では、子複合イベント検出手段３００５は、子複合イベント（Ｂ  ＡＮＤ  Ｃ）とアトミックイベントＡとのいずれかを受信した場合に、子複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）に合致すると判定し、子複合イベントを検出したと判定する。すなわち、子複合イベント検出手段３００５は、複合イベント検出ノード割当手段３００３によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出する。
【００５１】
子複合イベント送信手段３００６は、子複合イベント検出手段３００５が子複合イベントを検出したと判定すると、検出した子複合イベントをルートノード２０や他の複合イベント検出ノードに送信する機能を備える。
【００５２】
ブローカーノード４０〜４４は、具体的には、ＩＰルータ等のネットワーク装置や、プログラムに従って動作しルータ機能を搭載したパーソナルコンピュータ等の情報処理装置によって実現される。なお、図２では、５つのブローカーノード４０〜４４が示されているが、分散イベント検出システムは、５つに限らず、例えば、６以上のブローカーノードを含んでもよい。
【００５３】
ブローカーノード４０〜４４は、ルートノード２０や複合イベント検出ノード３０〜３２から受信しアトミックイベントの配信登録要求に基づいて、ルートノード２０や複合イベント検出ノード３０〜３２に対して配信するアトミックイベントを登録する機能を備える。具体的には、ブローカーノード４０〜４４は、配信対象のアトミックイベントを特定可能な情報（例えば、イベントＩＤ）をルーティングテーブルに登録する。また、ブローカーノード４０〜４４は、アトミックイベントを検出すると、検出したアトミックイベントをルートノード２０や複合イベント検出ノード３０〜３２に送信する機能を備える。
【００５４】
なお、分散イベント検出システムを構成するネットワーク内に含まれる全てのブローカーノードは、ルートノードとして動作する機能を有していてもよい。例えば、ネットワーク内に含まれる全てのブローカーノードは、図４に示す各構成要素を備え、サブスクライブノード１０によってルートノードとしてアサインされたことに基づいて、ルートノードとしての機能を起動するようにしてもよい。
【００５５】
なお、分散イベント検出システムを構成するネットワーク内に含まれる全てのブローカーノードは、複合イベント検出ノードとして動作する機能を有していてもよい。例えば、ネットワーク内に含まれる全てのブローカーノードは、図５に示す各構成要素を備え、ルートノード２０又は他の複合イベント検出ノードによって複合イベント検出ノードとしてアサインされたことに基づいて、複合イベント検出ノードとしての機能を起動するようにしてもよい。
【００５６】
パブリッシャーノード（図２において図示せず）は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。なお、分散イベント検出システムは、１つに限らず、複数のパブリッシャーノードを含んでもよい。パブリッシャーノードは、例えば、各種センサ（例えば、速度センサ）やタグ（例えば、ＲＦＩＤタグ）からの検出信号を入力したことに基づいて、アトミックイベントを生成し、サブスクライブノードに対して送信する機能を備える。
【００５７】
なお、本実施形態において、ルートノードや複合イベント検出ノードとして動作する機能を有するブローカーノードを情報処理装置を用いて実現する場合、各ブローカーノードの記憶装置（図示せず）は、複合イベントを分散して検出するための各種プログラムを記憶している。例えば、各ブローカーノードの記憶装置は、コンピュータに、複合イベントを検出するための複合イベント検出式を複数の子複合イベント検出式に分解する処理と、分解した各子複合イベント検出式に対して、新たに子ルートノードとして他のブローカーノードをそれぞれ割り当てる処理と、割り当てた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する処理とを実行させるための分散イベント検出用プログラムを記憶している。
【００５８】
次に、動作について説明する。図６は、複合イベントを分散して検出するためのシステムのコンフィギュレーションを構築する処理の一例を示す流れ図である。まず、サブスクライブノード１０は、例えば、サービス事業者の操作に従って、複合イベント配信登録要求をルートノード２０に対して送信する。この場合、サブスクライブノード１０は、例えば、図１に示す複合イベント式Ｆを生成し、ルートノード２０に複合イベント配信登録要求とともに送信する（ステップＳ１１）。そして、ルートノード２０は、図１に示すステップＴ１の複合イベント式Ｆの分割処理を実行する（ステップＳ１２）。図１に示す例では、ルートノード２０は、複合イベント式Ｆを、子複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）及び（Ｄ  ＯＲ  Ｅ）と、演算子（ＡＮＤ）とに分解する。
【００５９】
次いで、ルートノード２０は、複合イベント（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）を検出するために、複合イベント検出ノード３０をアサインする（ステップＳ１３）。また、ルートノード２０は、アサインした複合イベント検出ノード３０に対して、子複合イベントの配信登録要求を行う（ステップＳ１４）。
【００６０】
次いで、複合イベント検出ノード３０は、ルートノード２０と同様に、図１に示すステップＴ２の子複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）の分割処理を行う（ステップＳ１５）。図１に示す例では、複合イベント検出ノード３０は、子複合イベント式を、子複合イベント式（Ｂ  ＡＮＤ  Ｃ）と、アトミックイベントＡと、演算子（ＯＲ）とに分解する。
【００６１】
ここで、ステップＳ４の分割処理において、分解した要素の中にイベントＡが現れる。このイベントＡは、これ以上分割できない最小単位のイベント（本実施形態では、アトミックイベント（英文表記：Atomic Event））として取り扱う。図１に示す複合イベント式Ｆでは、イベントＡ〜Ｅがアトミックイベントである。
【００６２】
ステップＳ４の分割過程において、アトミックイベントが出現した場合（ステップＳ１６のＹ）、複合イベント検出ノード３０は、アトミックイベントを配信しているブローカーノード４０に対して、配信登録要求を行う（ステップＳ１７）。その結果、ブローカーノード４０は、アトミックイベントＡを検出すると、複合イベント検出ノード３０に配信するように設定（例えば、ルーティングテーブルに登録）する。
【００６３】
一方、ステップＳ４の分割過程において、子複合イベントが出現した場合には（ステップＳ１６のＮ）、複合イベント検出ノード３０は、子複合イベント（Ｂ  ＡＮＤ  Ｃ）を検出するために、複合イベント検出ノード３２（自分より下位の複合イベント検出ノード）をアサインする（ステップＳ１８）。また、複合イベント検出ノード３０は、アサインした複合イベント検出ノード３２に対して、子複合イベントの配信登録要求を行う（ステップＳ１９）。
【００６４】
以下、同様にして、分解した要素に子複合イベントが含まれなくなるまで、ステップＳ５〜Ｓ９までの処理が繰り返し実行される。そのような処理が実行されることにより、図２に示すようなコンフィギュレーション処理が実行される。
【００６５】
図７は、アトミックイベントから複合イベントを検出し、複合イベント式Ｆに基づいて複合イベントを検出していくためのネットワーク構造を示している。図７に示すネットワーク構造は、複合イベント検出ノードのアサインと複合イベント及びアトミックイベントの配信登録とを行った処理過程を逆にたどることによって構築されている。具体的には、図６に示す処理が実行されることによって、図７に示すような複合イベント検出のためのネットワーク構造（システムのコンフィギュレーション）が構築される。
【００６６】
次に、複合イベントを分散して検出するためのシステムのコンフィギュレーションが構築された後に、複合イベントを検出する動作を説明する。図８は、分散イベント検出システムにおいて複合イベントを検出する処理の一例を示す流れ図である。まず、各ブローカーノード４０〜４４は、アトミックイベントを検出すると（ステップＳ２１）、検出したアトミックイベントを複合イベント検出ノード３０〜３２に送信する（ステップＳ２２）。なお、構築されたコンフィグレーションによって、ブローカーノードは、検出したアトミックイベントを、直接ルートノードに送信する場合もある。
【００６７】
また、各複合イベント検出ノード３０〜３２は、ブローカーノード４０〜４４から受信したアトミックイベントや、他の複合イベント検出ノード（下位の複合イベント検出ノード）から受信した子複合イベントに基づいて、子複合イベントを検出する（ステップＳ２３）。例えば、図２に示す例では、複合イベント検出ノード３０は、子複合イベント（Ｂ  ＡＮＤ  Ｃ）とアトミックイベントＡとのいずれかを受信した場合に、子複合イベント式（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）に合致すると判定し、子複合イベントを検出したと判定する。また、例えば、複合イベント検出ノード３２は、アトミックイベントＢ及びＣの両方を受信した場合に、子複合イベント式（Ｂ  ＡＮＤ  Ｃ）に合致すると判定し、子複合イベントを検出したと判定する。
【００６８】
そして、各複合イベント検出ノード３０〜３２は、検出した子複合イベントを、ルートノード２０や他の複合イベント検出ノード（上位の複合イベント検出ノード）に送信する（ステップＳ２４）。図２に示す例では、複合イベント検出ノード３０，３１は、検出した子複合イベントをルートノード２０に送信する。また、複合イベント検出ノード３２は、検出した複合イベントを複合イベント検出ノード３０に送信する。
【００６９】
また、ルートノード２０は、各複合イベント検出ノード３０，３１から受信した子複合イベントに基づいて、複合イベントを検出する（ステップＳ２５）。例えば、図２に示す例では、ルートノード２０は、子複合イベント（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ｃ）及び（Ｄ  ＯＲ  Ｅ）の両方を受信した場合に、複合イベント式Ｆに合致すると判定し、複合イベントを検出したと判定する。そして、ルートノード２０は、検出した複合イベントをサブスクライブノード１０に対して配信する（ステップＳ２６）。なお、構築されたコンフィグレーションによって、ルートノード２０は、各複合イベント検出ノード３０，３１から受信した子複合イベントに加えて、ブローカーノードから受遺したアトミックイベントに基づいて、複合イベントを検出する場合もある。
【００７０】
以上のように、本実施形態によれば、分散された複合イベント検出システム（分散イベント検出システム）の下位ノード（複合イベント検出ノード）において、アトミックイベントの組み合わせによる複合イベントを形成し、各複合イベントを段階的に組み合わせていく処理を行う。そのため、最上位のルートノード（特許文献１に記載された関連技術では、処理サーバに相当）には、最終段階のイベントの発生（具体的には、最終の複合イベントの１つ前の子複合イベントの発生）のみ通知されることになり、最上位のサーバ（ルートノード２０）へのトラヒック集中を回避することができる。従って、複合イベント検出においてサーバ側の無駄なリンク消費を軽減できるとともに、複合イベント処理のための負荷を軽減することができる。
【実施例】
【００７１】
次に、本発明による分散イベント検出システムの実施例について説明する。図９は、分散イベント検出システムをオーバーレイネットワーク上に構築した場合を示す説明図である。図９に示すように、分散イベント検出システムは、パブリッシュノード１００〜１０４、ブローカーノード３００〜３４ｎ，６００，６１０、ルートノード２００〜２４０，５００、複合イベント検出ノード４００〜４２０、及びサブスクライブノード７００とを含む。なお、特に、ブローカーノード３００〜３４ｎ、ルートノード２００〜２４０、複合イベント検出ノード４００〜４２０は、同一装置上に実現されていてもよい。
【００７２】
図９において、ルートノード５００、ブローカーノード６００，６１０、及び複合イベント検出ノード４００〜４２０を含むシステムは、複合イベントを検出する複合イベント検出システム８００である。また、図９において、ルートノード２００〜２４０、ブローカーノード３００〜３４ｎを含むシステムは、アトミックイベントを配信するアトミックイベント配信システム９００である。
【００７３】
図９において、特に、アトミックイベント配信システム９００と複合イベント検出システム８００とは、各々専用のオーバーレイネットワーク上に構築される。そして、アトミックイベント配信用のルートノード２００〜２４０、ブローカーノード３００〜３４ｎ、及び複合イベント検出ノード４００は、両オーバーレイネットワークに接続している。従って、本実施例では、ブローカーノード及びルートノードは、オーバーレイネットワーク上に構築されている。
【００７４】
なお、上記のオーバーレイネットワークは、例えばＤＨＴ（Distributed Hash Table：分散ハッシュテーブル）型のモデルやＰ２Ｐ型等のネットワークである。本実施例では、オーバーレイネットワークが、ＤＨＴ型を前提モデルとしたネットワークである場合を説明する。
【００７５】
また、オーバーレイネットワークを構築する場合、さらに用途と実装との関係を明確にするために、本実施例における複合イベント検出システム８００は、さらに複合イベント検出（複合イベント検出ノード４００〜４２０で構成）と複合イベント配信（ルートノード５００、及びブローカーノード６００，６１０で構成）の２つに分割することも可能である。そのように構成した場合には、分散イベント検出システムは、分散イベントを検出するためのノード群を含み、分散イベント検出を主目的とした専用オーバーレイネットワークと、アトミックイベントルーティングを主目的とした専用オーバーレイネットワークと、複合イベントをルーティングすることを主目的とした専用オーバーレイネットワークとを含むマルチオーバーレイネットワーク型に構築される。
【００７６】
さらに、上記の後者の複合イベント配信に関しては、複合イベント検出システム８００は、ユーザ毎のオーバーレイネットワーク空間を用意して、各ユーザ専用の複合イベント配信空間に分割することも可能である。
【００７７】
また、ブローカーノード３００〜３４ｎ，６００，６１０のうち、特にネットワークエッジに位置するブローカーノード３００，３１０，３２０，３３０，３４０，６１０は、例えばインターネットや携帯電話網、ＮＧＮ（Next Generation Network ：次世代ネットワーク）網等のキャリア網との接続ポイントを有する。そのため、パブリッシュノード１００〜１０４やサブスクライブノード７００は、例えばＴＣＰ／ＩＰやＨＴＴＰ等によってネットワークエッジのブローカーノードに接続する。
【００７８】
上記の場合、アクセスポイントは、例えば、インターネットであれば、ＴＣＰ／ＩＰによるポート／アドレス形式で表現されたり、ＨＴＴＰであればＵＲＬで表現されたりする。また、アクセスポイントは、３ＧＰＰにおける携帯電話システムであれば、例えばAccess Point Nameによって識別されたりしてもよい。その結果、端末上のクライアントソフトウェアが、サブスクライブノード７００に接続され、図９に示す複合イベント検出システム８００に透過的に接続される。同様にして、パブリッシュノード１００〜１０４もアトミックイベント配信システム９００に接続される。
【００７９】
パブリッシュノード１００〜１０４は、例えば１つ又は複数のセンサ等から数値としてのセンサデータを収集し、そのデータ集合が示す外部状態の変化をイベントとして検出する。パブリッシュノード１００〜１０４は、データ集合の要素が複数ある場合、例えば、その最大値、最小値、又は平均値、またデータのばらつき具合や差分等を、状態変化として検出する。また、パブリッシュノード１００〜１０４が用いるデータの生成ソースは、必ずしもセンサのようなハードウェア的な装置に限らず、あるソフトウェアの稼動状態をモニタリングするモニタ系ソフトウエアであってもよい。
【００８０】
本実施例では、図９に示すイベントＡ〜Ｅがアトミックイベントである。また、例えば、パブリッシュノード１００からブローカーノード３０ｎに至る経路が、アトミックイベントＡの配信経路である。以下、同様にして、図９には、アトミックイベントＢからアトミックイベントＥまでの配信経路が示されている。
【００８１】
各アトミックイベントＡ〜Ｅは、各アトミックイベント用のルートノード２００〜２０４に配信された後、マルチキャストツリー等を介して配信される。つまり、例えば、ルートノード２００は、アトミックイベントＡを配信するためのルートノードである。例えば、サブスクライブノード７００が、アトミックイベントＡの受信登録を行えば、そのマルチキャストツリーに加えられる（図９において図示せず）。
【００８２】
サブスクライブノード７００は、既に配信を受けているアトミックイベントＡ〜Ｅを用いて、複合イベント式Ｆを作成する。例えば、サブスクライブノード７００は、ある装置の製造過程をモニタする過程において、その装置を構成する５つの部品Ａ〜Ｅを想定し、各々の製造状況をＲＦＩＤタグを用いてモニタする場合の複合イベント用の複合イベント式を作成する。
【００８３】
次に、サブスクライブノード７００は、複合イベント配信用のルートノード５００を決定する。例えば、サブスクライブノード７００は、そのサブスクライブノード７００を使用するユーザの情報（名前、住所、生年月日、社員番号等）をキーデータとして、ハッシュ関数等により複合イベント検出ネットワークシステムにおいて、一意になるＩＤを生成する。そして、サブスクライブノード７００は、その生成したＩＤと一致するＤＨＴノードＩＤ又は、数値的に近いＤＨＴノードＩＤをもつノードをルートノードとして決定する。
【００８４】
次に、サブスクライブノードは、上記のルートノード５００に対して、複合イベント式Ｆを登録情報として送信する。この複合イベント式を受信したルートノード５００は、第１の実施形態で示した処理と同様の処理に従って、複合イベントの複合イベント式Ｆの分割処理を実行する。
【００８５】
このルートノード５００と複合イベント検出ノード４００〜４２０とを含む分散型複合イベントノード検出システムは、第１の実施形態で示した処理と同様の処理に従って、その複合イベントを検出するためのコンフィギュレーションモデル（抽象的に機能を分散した配置モデル）が確定される。
【００８６】
次に、上記のコンフィギュレーションを、実ネットワークへプロビジョニング（実際に、対象となる機能、つまりソフトウェアプロセスを起動）していく。最初に、複合イベント式Ｆに対するルートノード５００をアサインする。このルートノード５００は、上記のコンフィギュレーション作成処理を行う。図１に示す例では、ステップＴ１において、ＡＮＤ演算が発生しており、このＡＮＤ演算処理を、このルートノード５００が行う。
【００８７】
次に、複合イベントのルートノード５００は、図１におけるステップＴ１のＡＮＤ演算を行うための子ルートノード（つまり、複合イベント検出ノード４００と４２０）を特定するために、ハッシュ関数等を用いて新たにユニークなＩＤを２つ生成する。そして、それらのＩＤと一致するＤＨＴノードＩＤ又は数値的に近いＤＨＴノードＩＤをもつノードが、複合イベント検出ノード４００，４２０として動作する。また、ルートノード５００は、アサインした子ルートノード（複合イベント検出ノード４００，４２０）に対して、
（（Ｂ  ＡＮＤ  Ｃ）  ＯＲ  Ａ）と（Ｄ  ＯＲ  Ｅ）との登録処理を行う。
【００８８】
以下、図１に示すステップＴ２〜Ｔ４に関しても同様の処理が繰り返し実行され、複合イベントを検出するためのコンフィギュレーションモデルが構築される。
【００８９】
なお、図１に示すステップＴ２〜Ｔ４では、アトミックイベントが分解した要素として出現している。アトミックイベントが出現した場合、ルートノード５００や複合イベント検出ノード４００〜４２０は、アトミックイベント配信網（アトミックイベント配信システム９００）に対して受信登録を行う。その後、アトミックイベントが検出されると、ルートノード５００や複合イベント検出ノード４００〜４２０は、いずれかのブローカーノードから、該当するアトミックイベントを受信する。例えば、複合イベント検出ノード４２０は、ブローカーノード３１２，３２１からアトミックイベントＢ，Ｃの配信を受ける。
【００９０】
複合イベント検出ノード４００〜４２０は、子複合イベントを検出し、その子複合イベント発生を上位ノード（ルートノード５００や上位の複合イベント検出ノード）に通知する。特に、最下位にある複合イベント検出ノードは、ブローカーノードからアトミックイベントを受信する。例えば、複合イベント検出ノード４１０は、アトミックイベントＢとアトミックイベントＣとを受信し、これらの複合イベントを検出し、その検出結果を複合イベント検出ノード４００に通知する。
【００９１】
同様にして、各複合イベント検出ノード４００〜４２０から通知される複合イベントは、複合イベント用のルートノード５００に集約される。そして、ルートノード５００は、複合イベントを検出し、検出した複合イベントをサブスクライブノード７００に通知する。なお、図９において、ルートノード５００とサブスクライブノード７００との間に存在するブローカーノード６００，６１０は、ルートノード５００とサブスクライブノード１０との間にもブローカーネットワークが存在することを図示している。
【００９２】
以上の処理によって、分散複合イベント検出システム（分散イベント検出システム）が構築される。
【００９３】
以上のように、本実施例によれば、分散イベント検出システムの下位ノードにおいて、アトミックイベントの組み合わせによる複合イベントを形成し、各複合イベントを段階的に組み合わせていく処理を行う。そのため、最上位のルートノードには、最終段階のイベントの発生のみ通知されることになり、最上位のサーバ（ルートノード５００）へのトラヒック集中を回避することができる。従って、複合イベント検出においてサーバ側の無駄なリンク消費を軽減できるとともに、複合イベント処理のための負荷を軽減することができる。
【００９４】
次に、本発明による分散イベント検出システムの最小構成について説明する。図１０は、分散イベント検出システムの最小の構成例を示す構成図である。図１０に示すように、分散イベント検出システムは、最小の構成要素として、イベントをルーティングする複数のブローカーノード３０，３１（後述するように、複合イベント検出ノードとして割り当てられる）と、複合イベントの配信処理を行うルートノード２０とを備える。また、ルートノード２０は、最小の構成要素として、複合イベント式分解手段２００２、複合イベント検出ノード割当手段２００３、及び複合イベント検出手段２００５を含む。
【００９５】
図１０に示す最小構成の分散イベント検出システムにおいて、複合イベント式分解手段２００２は、複合イベントを検出するための複合イベント式を複数の子複合イベント式に分解する機能を備える。また、複合イベント検出ノード割当手段２００３は、複合イベント式分解手段２００２が分解した各子複合イベント式に対して、新たに複合イベント検出ノードとしてブローカーノード３０，３１をそれぞれ割り当てる機能を備える。また、複合イベント検出手段２００５は、複合イベント検出ノード割当手段２００３によって割り当てられた各複合イベント検出ノード３０，３１が検出した子複合イベントに基づいて、複合イベントを検出する機能を備える。
【００９６】
図１０に示す最小構成の分散イベント検出システムによれば、複合イベント検出においてルートノード側の無駄なリンク消費を軽減できるとともに、複合イベント処理のための負荷を軽減することができる。
【００９７】
なお、本実施形態では、以下の（１）〜（５）に示すような分散イベント検出システムの特徴的構成が示されている。
【００９８】
分散イベント検出システムは、複合イベントを分散型の検出処理により検出する分散イベント検出システムであって、イベントをルーティングする複数のブローカーノード（例えば、複合イベント検出ノードとして割り当てられるブローカーノード３０，３１）と、複合イベントの配信処理を行うルートノード（例えば、ルートノード２０）とを備え、ルートノードは、複合イベントを検出するための複合イベント検出式（例えば、複合イベント式Ｆ）を複数の子複合イベント検出式（例えば、子複合イベント式）に分解する検出式分解手段（例えば、複合イベント式分解手段２００２によって実現される）と、検出式分解手段が分解した各子複合イベント検出式に対して、新たに子ルートノードとしてブローカーノード（例えば、複合イベント検出ノード３０，３１）をそれぞれ割り当てる子ルートノード割当手段（例えば、複合イベント検出ノード割当手段２００３によって実現される）と、子ルートノード割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、複合イベントを検出する複合イベント検出手段（例えば、複合イベント検出手段２００５によって実現される）とを含むことを特徴とする。
【００９９】
分散イベント検出システムにおいて、子ルートノードは、ルートノード又は他の子ルートノードが分解した子複合イベント検出式をさらに複数の子複合イベント検出式に再帰的に分解する検出式再帰分解手段（例えば、子複合イベント式分解手段３００２によって実現される）と、検出式再帰分解手段が分解した各子複合イベント検出式に対して、さらに子ルートノードとして他のブローカーノード（例えば、複合イベント検出ノード３２）をそれぞれ再帰的に割り当てる子ルートノード再帰割当手段（例えば、複合イベント検出ノード割当手段３００３によって実現される）と、子ルートノード再帰割当手段によって割り当てられた各子ルートノードが検出した子複合イベントに基づいて、再帰的に子複合イベントを検出する子複合イベント検出手段（例えば、子複合イベント検出手段３００５によって実現される）とを含むように構成されていてもよい。
【０１００】
分散イベント検出システムにおいて、イベントを受信するサブスクライブノード（例えば、サブスクライブノード１０）を備え、サブスクライブノードは、複合イベント検出式を生成する複合イベント検出式生成手段（例えば、複合イベント式生成手段１００１によって実現される）を含み、検出式分解手段は、サブスクライブノードが生成した複合イベント検出式を複数の子複合イベント検出式に分解するように構成されていてもよい。
【０１０１】
分散イベント検出システムにおいて、ブローカーノード及びルートノードは、オーバーレイネットワーク上に構築されているように構成されていてもよい。
【０１０２】
分散イベント検出システムは、さらに分散イベントを検出するためのノード群（例えば、複合イベント検出ノード４００〜４２０）を含み、分散イベント検出を主目的とした専用オーバーレイネットワークと、アトミックイベントルーティングを主目的とした専用オーバーレイネットワークと、複合イベントをルーティングすることを主目的とした専用オーバーレイネットワークとを含むマルチオーバーレイネットワーク型に構築されているように構成されていてもよい。
【産業上の利用可能性】
【０１０３】
本発明は、ある装置を構成する部品の調達状況を可視化するイベント検出システムの用途に適用できる。また、別な用途として、１つの物理ネットワーク上に、階層的に複数のオーバーレイネットワークを構築するようなＭＶＮＯサービスの用途に適用できる。この場合、具体的には、物理ノードレベルから各レイヤのアプリケーションノードに関して、障害イベントの連鎖状況を複合イベント式で表現することにより、物理層からアプリケーション層への垂直方向に障害状況の伝播状況を表現し、稼動／障害状態を可視化することが可能となり、ネットワークモニタリングサービスの用途として適用可能である。
【図面の簡単な説明】
【０１０４】
【図１】複合イベント式の分割事例を示す説明図である。
【図２】複合イベント検出システムのプロビジョニングの動作を示す説明図である。
【図３】サブスクライブノードの構成の一例を示すブロック図である。
【図４】ルートノードの構成の一例を示すブロック図である。
【図５】複合イベント検出ノードの構成の一例を示すブロック図である。
【図６】複合イベントを分散して検出するためのシステムのコンフィギュレーションを構築する処理の一例を示す流れ図である。
【図７】複合イベント検出システムの複合イベントの集約動作を示す説明図である。
【図８】分散イベント検出システムにおいて複合イベントを検出する処理の一例を示す流れ図である。
【図９】分散イベント検出システムをオーバーレイネットワーク上に構築した場合を示す説明図である。
【図１０】分散イベント検出システムの最小の構成例を示す構成図である。
【符号の説明】
【０１０５】
１０  サブスクライブノード
２０  ルートノード
３０〜３２  複合イベント検出ノード
４０〜４４  ブローカーノード
１００〜１０４  パブリッシュノード
２００〜２４０  ルートノード
３００〜３４ｎ  ブローカーノード
４００〜４２０  複合イベント検出ノード
５００  ルートノード
６００，６１０  ブローカーノード
７００  サブスクライブノード
８００  複合イベント検出システム
９００  アトミックイベント配信システム
１００１  複合イベント式生成手段
１００２  複合イベント配信登録要求手段
２００１  複合イベント配信登録手段
２００２  複合イベント式分解手段
２００３  複合イベント検出ノード割当手段
２００４  子複合イベント受信手段
２００５  複合イベント検出手段
２００６  複合イベント配信手段
３００１  子複合イベント配信登録手段
３００２  子複合イベント式分解手段
３００３  複合イベント検出ノード割当手段
３００４  子複合イベント受信手段
３００５  子複合イベント検出手段
３００６  子複合イベント送信手段
【図１】
0005104489.tif 000002
【図２】
0005104489.tif 000003
【図３】
0005104489.tif 000004
【図４】
0005104489.tif 000005
【図５】
0005104489.tif 000006
【図６】
0005104489.tif 000007
【図７】
0005104489.tif 000008
【図８】
0005104489.tif 000009
【図９】
0005104489.tif 000010
【図１０】
0005104489.tif 000011