(57)【要約】  複数のアプリケーションが要求するイベント処理を行う処理装置２０−１〜２０−ｎと、各処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置３０とを含むイベント処理システムにおいて、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを各処理装置に設定するルール分配装置１０であって、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する処理ルール振り分け部１１を含む。
2013190770.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、前記複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置とを含むイベント処理システムにおいて、前記アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを前記複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、前記イベント振り分け装置にイベント振り分けルールを設定するルール分配装置であって、
新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部を含み、
処理ルール振り分け部は、前記複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、前記アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する
ことを特徴とするルール分配装置。
【請求項２】
処理ルール振り分け部は、処理装置に設定されているイベント処理ルールのイベント条件に指定されたイベントの該処理装置における受信回数をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、該イベント処理ルールにもとづくイベント処理の重みを算出する
請求項１に記載のルール分配装置。
【請求項３】
処理ルール振り分け部は、各処理装置に設定されているイベント処理ルールごとに、該イベント処理ルールのイベント条件に指定されたイベントのイベントレートの和を算出し、算出したイベントレートの和を該イベント処理ルールにもとづくイベント処理の重みとする
請求項２に記載のルール分配装置。
【請求項４】
処理装置の各々に設定されているイベント処理ルールのイベント条件に指定されたイベントのイベントレートの平均を算出するイベントレート平均算出部を備え、
処理ルール振り分け部は、イベント処理ルールのイベント条件に指定されたイベントのイベントレートが計測できない場合、該イベント以外のイベントについてのイベントレートの平均を該イベントのイベントレートとする
請求項２または請求項３に記載のルール分配装置。
【請求項５】
処理ルール振り分け部は、アプリケーションから新たにイベント処理ルールを受信すると、処理装置ごとに、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和を求め、該重みの和の最小値を検索し、該重みの和と該最小値との差が予め定められている閾値よりも大きい処理装置を除外し、残った処理装置のうちのいずれかひとつに前記新たなイベント処理ルールを設定する
請求項１から請求項４のうちのいずれか１項に記載のルール分配装置。
【請求項６】
処理ルール振り分け部は、残った処理装置が複数ある場合、前記残った処理装置ごとに、新たなイベント処理ルールとイベント条件が共通である既に設定されているイベント処理ルールを検索し、共通のイベント条件に指定されたイベントのイベントレートの合計を重みとして、該重みの最小の処理装置のいずれかひとつに新たなイベント処理ルールを設定する
請求項１から請求項５のうちのいずれか１項に記載のルール分配装置。
【請求項７】
処理ルール振り分け部は、定期的または間欠的に、各処理装置に設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和が最小である処理サーバと最大である処理サーバとを検索し、検索した処理サーバにおける該重みの和の差が、予め定められた閾値以上である場合には、処理ルールの再配置を行う
請求項１から請求項６のうちのいずれか１項に記載のルール分配装置。
【請求項８】
処理ルール振り分け部は、各処理装置に設定されているイベント処理ルールごとに、単位時間あたりのイベント処理ルールの処理時間を算出し、算出した処理時間を該イベント処理ルールにもとづくイベント処理の重みとして使用する
請求項１から請求項７のうちのいずれか１項に記載のルール分配装置。
【請求項９】
処理ルール振り分け部は、各処理装置の処理能力を示すベンチマーク値をもとに、イベント処理ルールにもとづくイベント処理の重みを補正する
請求項１から請求項８のうちのいずれか１項に記載のイベント処理システム。
【請求項１０】
処理ルール振り分け部は、各処理装置に設定されているイベント処理ルールのメモリ使用量を、該イベント処理ルールにもとづくイベント処理の重みとして使用する
請求項１から請求項９のうちのいずれか１項に記載のルール分配装置。
【請求項１１】
処理ルール振り分け部は、各処理装置の実装メモリ量をもとに、各処理装置に設定されているイベント処理ルールのメモリ使用量を補正し、補正後のメモリ使用量を該イベント処理ルールにもとづくイベント処理の重みとして使用する
請求項１０に記載のルール分配装置。
【請求項１２】
複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、
前記複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、
前記アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを前記複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、前記イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムであって、
前記ルール分配装置は、新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部を含み、
前記処理ルール振り分け部は、前記複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、新たなイベント処理ルールを設定する処理装置を決定する
ことを特徴とするイベント処理システム。
【請求項１３】
処理装置は、該処理装置に設定されているイベント処理ルールに指定されたイベントの受信回数を計測するイベントカウンタを含み、
処理ルール振り分け部は、各処理装置のイベントカウンタの計測結果をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、新たなイベント処理ルールを設定する処理装置を決定する
請求項１２に記載のイベント処理システム。
【請求項１４】
複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、前記複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、前記アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを前記複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、前記イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムにおけるイベント処理方法であって、
ルール分配装置が、前記複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、前記アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する
ことを特徴とするイベント処理方法。
【請求項１５】
処理装置が、処理装置に設定されているイベント処理ルールに指定されたイベントの受信回数を計測し、
ルール分配装置が、各処理装置のイベントカウンタの計測結果をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、新たなイベント処理ルールを設定する処理装置を決定する
請求項１４に記載のイベント処理方法。
【請求項１６】
複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、前記複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、前記アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを前記複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、前記イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムにおけるイベント処理プログラムであって、
コンピュータに、
前記複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する処理を実行させる
ためのイベント処理プログラム。
【請求項１７】
コンピュータに、
各処理装置に設定されているイベント処理ルールに指定されたイベントの各処理装置における受信回数をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、新たなイベント処理ルールを設定する処理装置を決定する処理を実行させる
請求項１６に記載のイベント処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルール分配装置、イベント処理システム、イベント処理方法およびイベント処理プログラムに関する。
【背景技術】
【０００２】
近年、電力消費量や交通情報など、様々な情報を収集するセンサや、ネットワークカメラやスマート家電などのようにネットワーク越しに遠隔操作を行えるデバイス（アクチュエータ）がネットワークに繋がれるようになってきている。それに伴い、デバイスからのイベントを基に状況を自動的に判断し、人手を介することなくデバイスを制御する、Ｍ２Ｍ（Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）の技術が注目を集めている。このように、センサから発せられるイベントを基に状況を推定したり、アクションを実行したりする処理はイベント処理と呼ばれている。【０００３】
特に複数のイベントのパターンを検出し、それらイベントの情報に基づいて処理を行う技術を複合イベント処理（ＣＥＰ：  Ｃｏｍｐｌｅｘ  Ｅｖｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ）と呼ぶ。【０００４】
ＣＥＰでは、検出するイベントのパターンと処理内容をＣＥＰルールとして記述する。例えば、ＣＥＰルールは以下のようになる。【０００５】
「ＩＦ  ｅｖｅｎｔ（ＤｅｖＩＤ＝１１）  ａｎｄ  ｅｖｅｎｔ（ＤｅｖＩＤ＝２１）  ＴＨＥＮ  温度値の平均を算出」【０００６】
上記の場合、ＤｅｖＩＤ（デバイスＩＤ）＝１１のイベントとＤｅｖＩＤ＝２１のイベントを検出したら、それらのイベントに含まれる温度値の平均が算出される。【０００７】
今後、このようなネットワークに接続されるデバイスは急増し、そこから発生するイベントの量は膨大になり、Ｍ２Ｍサービスは大規模化していくことが予想される。これに対処するため、サービスの大規模化に対応できるシステムが必要になると考えられる。このように、デバイスなどから大量に発生するイベントを処理するシステムとしては特許文献１に開示されている発明がある。図２２は、特許文献１に記載されたシステムの構成を示すブロック図である。【０００８】
図２２に示すように、特許文献１に記載されたシステムは、ルール分配サーバ１１０１と、イベント振り分け器１１０３と、複数の処理サーバ１１０４ａ〜ｆとを含む。イベント処理を要求するアプリケーション１０６ａ〜ｈは、イベント処理ルールをルール分配サーバ１１０１に通知する。イベント処理ルールを受信したルール分配サーバ１１０１は、処理サーバ１１０４ａ〜ｆの負荷が均等になるように、かつ、同じイベントに関するイベント処理は同じサーバで行われるように、イベント処理ルールを最適なイベント処理サーバに設定する。同時に、ルール分配サーバ１１０１は、処理されるイベントがそのイベントに関する処理ルールを設定されたイベント処理サーバに送られるように、イベント振り分け器１１０３にイベント振り分けルール１１０７を設定する。これにより、デバイス等のイベント発生源１０５ａ〜ｈから発生したイベントは、イベント振り分け器１１０３によりそのイベントに関する処理ルールが設定された処理サーバ１１０４ａ〜ｆに転送される。処理サーバ１１０４ａ〜ｆは、イベント処理ルールに基づき処理を行い、処理結果をアプリケーション１０６ａ〜ｈに通知する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第４１６１９９８号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１には、イベント処理サーバにＣＥＰルールを分配する方法が示されている。特許文献１に記載されている方法は、既に処理サーバに設定されているルール数に基づいて、新しく受信したＣＥＰルールの分配先を決定する。図２３は、特許文献１におけるＣＥＰルールの分配先を決定する処理を示すフローチャートである。【００１１】
図２３に示すように、ルール分配サーバ１１０１は、新規ＣＥＰルールが来ると、１）既存設定ルール数が少なく、２）新規ＣＥＰルールと既存設定ルールとで共通のイベント条件をより多くもつ、処理サーバを分配先として決定する。ステップＳ１０２，Ｓ１０３における選択条件が１）に示す条件に相当する。ステップＳ１０５における選択条件が２）に示す条件に相当する。【００１２】
この方式は、イベントの発生量が一様なときは処理サーバの負荷を均等にすることができ有効である。しかし、イベント発生量に偏りがあるときは処理サーバの負荷を均等にすることができないという課題がある。【００１３】
例えば、処理サーバが２台あり、「ｅｖｅｎｔ＿Ａ  ａｎｄ  ｅｖｅｎｔ＿Ｂ」、「ｅｖｅｎｔ＿Ｂ  ａｎｄ  ｅｖｅｎｔ＿Ｃ」、「ｅｖｅｎｔ＿Ｄ  ａｎｄ  ｅｖｅｎｔ＿Ｅ」というルールがあったとする。この場合、ｅｖｅｎｔ＿Ｂが共通のため「ｅｖｅｎｔ＿Ａ  ａｎｄ  ｅｖｅｎｔ＿Ｂ」と「ｅｖｅｎｔ＿Ｂ  ａｎｄ  ｅｖｅｎｔ＿Ｃ」が、あるひとつの処理サーバ＃１に分配され、「ｅｖｅｎｔ＿Ｄ  ａｎｄ  ｅｖｅｎｔ＿Ｅ」が、別の処理サーバ＃２に分配される。ここで、ｅｖｅｎｔ＿Ｂが他のイベントに比べ多量に送信される場合、処理サーバ＃１の処理だけが重くなってしまう。【００１４】
そこで、本発明は、イベントを処理するシステムにおいて、イベントの発生量に偏りがある場合でも、イベント処理の負荷を均等に分散できるルール分配装置、イベント処理システム、イベント処理方法およびイベント処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明によるルール分配装置は、複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置とを含むイベント処理システムにおいて、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、イベント振り分け装置にイベント振り分けルールを設定するルール分配装置であって、新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部を含み、処理ルール振り分け部は、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定することを特徴とする。【００１６】
本発明によるイベント処理システムは、複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムであって、ルール分配装置は、新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部を含み、処理ルール振り分け部は、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、新たなイベント処理ルールを設定する処理装置を決定することを特徴とする。【００１７】
本発明によるイベント処理方法は、複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムにおけるイベント処理方法であって、ルール分配装置が、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定することを特徴とする。【００１８】
本発明によるイベント処理プログラムは、複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムにおけるイベント処理プログラムであって、コンピュータに、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する処理を実行させることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、イベントを処理するシステムにおいて、イベントの発生量に偏りがある場合でも、イベント処理の負荷を均等に分散できる。
【図面の簡単な説明】
【００２０】
【図１】本発明によるイベント処理システムの第１の実施形態の構成を示すブロック図である。
【図２】処理ルール振り分け記録部が保持する情報のフォーマットの一例を示す説明図である。
【図３】イベントレート管理部が保持する情報のフォーマットの一例を示す説明図である。
【図４】処理ルール振り分け部における処理サーバの決定処理を示すフローチャートである。
【図５】新規処理ルール設定直後のイベント管理テーブルの一例を示す説明図である。
【図６】新規処理ルール設定直後のルール管理テーブルの一例を示す説明図である。
【図７】第２の実施形態におけるイベント処理システムの動作を示すフローチャートである。
【図８】各イベントのイベントレート変化後のイベント管理テーブルの一例を示す説明図である。
【図９】各処理ルールの重みの再計算後のルール管理テーブルの一例を示す説明図である。
【図１０】処理ルール振り分け部のルールの再配置処理を示すフローチャートである。
【図１１】再配置後のルール管理テーブルの一例を示す説明図である。
【図１２】本発明によるイベント処理システムの第３の実施形態の構成を示すブロック図である。
【図１３】第３の実施形態におけるルール管理テーブルの一例を示す説明図である。
【図１４】処理サーバ能力テーブルの一例を示す説明図である。
【図１５】第４の実施形態におけるルール管理テーブルの一例を示す説明図である。
【図１６】本発明によるイベント処理システムの第５の実施形態の構成を示すブロック図である。
【図１７】第５の実施形態におけるルール管理テーブルの一例を示す説明図である。
【図１８】実装メモリ量管理テーブルの一例を示す説明図である。
【図１９】第６の実施形態におけるルール管理テーブルの一例を示す説明図である。
【図２０】本発明によるルール分配装置の最小構成を示すブロック図である。
【図２１】本発明によるルール分配装置の他の最小構成を示すブロック図である。
【図２２】特許文献１に記載されたシステムの構成を示すブロック図である。
【図２３】特許文献１におけるＣＥＰルールの分配先を決定する処理を示すフローチャートである。
【発明を実施するための形態】
【００２１】
実施形態１．
以下、本発明の第１の実施形態を図面を参照して説明する。
【００２２】
図１は、本発明によるイベント処理システムの第１の実施形態の構成を示すブロック図である。図１に示すように、本発明によるイベント処理システムは、ルール分配サーバ１０１と、イベント振り分け器１０３と、処理サーバ１０４ａ〜ｂとを含む。ルール分配サーバ１０１は、処理サーバ１０４ａ〜ｂおよびイベント振り分け器１０３と通信可能に接続されている。また、イベント振り分け器１０３は、処理サーバ１０４ａ〜ｂと通信可能に接続されている。なお、図１には、２つの処理サーバ１０４ａ〜ｂが例示されているが、処理サーバはいくつあってもよい。また、図１には、１つのイベント振り分け器１０３が例示されているが、イベント振り分け器はいくつあってもよい。
【００２３】
処理サーバ１０４ａ〜ｂは、複数のアプリケーション（以下、アプリ群という）１０６が要求するイベント処理を行い、アプリ群１０６のうちの要求元のアプリケーションへイベント処理結果を通知する。
【００２４】
イベント振り分け器１０３は、複数の処理サーバ１０４ａ〜ｂへイベント発生源１０５で発生したイベントを振り分ける。イベント発生源１０５は、例えば、イベントを発生するデバイスなどである。
【００２５】
ルール分配サーバ１０１は、複数の処理サーバ１０４ａ〜ｂに個別にアプリ群１０６の各アプリケーションが要求するイベント処理ルール（以下、単に処理ルールともいう。）１０８ａ〜ｂを設定する。処理ルールは、各アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定した情報である。ルール分配サーバ１０１は、イベント振り分け器１０３がイベント処理ルール１０８ａ〜ｂを実行するために必要なイベントが、イベント処理ルール１０８ａ〜ｂを設定された処理サーバ１０４ａ〜ｂに分配されるように、イベント振り分けルール１０７を設定する。
【００２６】
処理サーバ１０４ａ〜ｂは、イベントカウンタ１１５ａ〜ｂを含む。
【００２７】
イベントカウンタ１１５ａ〜ｂは、イベント処理ルール１０８ａ〜ｂのイベント条件毎に到着イベント数、つまり、イベントの受信回数をカウントし、カウント結果を含むイベントカウント情報を定期的にルール分配サーバ１０１に通知する。
【００２８】
ルール分配サーバ１０１は、処理ルール受信部２００と、処理ルール振り分け部２０１と、処理ルール送信部２０２と、処理ルール振り分け記録部２０５と、振り分けルール決定部２０３と、振り分けルール送信部２０４と、イベントレート管理部２０６と、イベントレート平均算出部２０７とを含む。
【００２９】
処理ルール受信部２００は、アプリ群１０６の各アプリケーションからイベント処理ルールを受信する。
【００３０】
処理ルール振り分け部２０１は、イベント処理ルールをどの処理サーバ１０４ａ〜ｂに設定するかを決定する。
【００３１】
処理ルール送信部２０２は、処理ルール振り分け部２０１の決定に基づき、イベント処理ルールを処理サーバ１０４ａ〜ｂに設定する。
【００３２】
処理ルール振り分け記録部２０５は、設定したイベント処理ルール１０８ａ〜ｂに含まれる情報のうち、少なくとも処理するイベントのイベント条件と設定先の処理サーバとを記録する。
【００３３】
振り分けルール決定部２０３は、処理ルール振り分け部２０１の振り分け結果に基づきイベント振り分け器１０３に設定するイベント振り分けルール１０７を計算する。
【００３４】
振り分けルール送信部２０４は、計算したイベント振り分けルール１０７をイベント振り分け器１０３に設定する。
【００３５】
イベントレート管理部２０６は、イベントカウンタ１１５ａ〜ｂによって集計されたイベント数からイベントレートを算出し、管理する。
【００３６】
イベントレート平均算出部２０７は、イベントレート管理部２０６に保持されている情報から全てのイベントの平均レートを算出する。
【００３７】
図２は、処理ルール振り分け記録部２０５が保持する情報（以下、ルール管理テーブルという。）３００のフォーマットの一例を示す説明図である。図２に示すように、処理ルール振り分け記録部２０５は、既に登録されている処理ルールごとに、ルールＩＤ３０１、ルール３０２、振り分け先処理サーバ３０３および重み３０４を記録する。重みに関しては後述する。
【００３８】
図３は、イベントレート管理部２０６が保持する情報（以下、イベント管理テーブルという。）４００のフォーマットの一例を示す説明図である。図３に示すように、イベントレート管理部２０６は、既にイベント管理テーブル４００に登録されている処理ルールに指定されているイベント条件ごとに、イベントＩＤ４０１、イベント条件４０２およびイベントレート４０３を管理する。
【００３９】
イベントレート４０３は、処理サーバ１０４ａ〜ｂのイベントカウンタ１１５ａ〜ｂから定期的に報告されるイベントカウント情報から算出される。本実施形態では、イベントレートの単位は、イベント／秒である。なお、イベントレートの単位は、イベント／秒以外であってもよい。
【００４０】
先述した処理ルール振り分け記録部２０５が管理する重み３０４は、処理ルールにもとづくイベント処理の重みであって、イベントレート管理部２０６が管理するイベントレート４０３を基に算出される。具体的には、処理ルール振り分け記録部２０５は、ルール３０２で指定されているイベント条件に相当するイベントのレートの合計を、重みとして算出する。
【００４１】
なお、処理ルール受信部２００、処理ルール振り分け部２０１、処理ルール送信部２０２、振り分けルール決定部２０３、振り分けルール送信部２０４、処理ルール振り分け記録部２０５、イベントレート管理部２０６およびイベントレート平均算出部２０７は、ルール分配サーバ１０１が備えるＣＰＵなどによって実現される。また、ルール管理テーブル３００およびイベント管理テーブル４００は、具体的には、ルール分配サーバ１０１が備えるメモリ等の記憶装置によって実現される。
【００４２】
次に、本実施形態の動作を説明する。
【００４３】
処理サーバ１０４ａ〜ｂには既に図２に示すような処理ルールが設定されているとする。すなわち、処理サーバ１０４ａ（以下、処理サーバ＃１と表す。）には、「ｅｖｅｎｔ＿Ａ（ｄｅｖ＿ＩＤ＝１１）  ａｎｄ  ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）」という処理ルール（以下、処理ルール（ＩＤ＝１）と表す。）が設定されている。処理サーバ１０４ｂ（以下、処理サーバ＃２と表す。）には、「ｅｖｅｎｔ＿Ｄ（ｄｅｖ＿ＩＤ＝４１）  ａｎｄ  ｅｖｅｎｔ＿Ｅ（ｄｅｖ＿ＩＤ＝５１）」という処理ルール（以下、処理ルール（ＩＤ＝２）と表す。）が設定されている。
【００４４】
処理サーバ１０４ａ〜ｂに処理ルールが設定されると、各処理サーバ１０４ａ〜ｂのイベントカウンタ１１５ａ〜ｂは、設定された処理ルールに指定されているイベント条件のイベントの受信レートを計測する。具体的には、処理サーバ＃１のイベントカウンタ１１５ａは、ｅｖｅｎｔ＿Ａ（ｄｅｖ＿ＩＤ＝１１）とｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）のイベントのレートを計測する。処理サーバ＃２のイベントカウンタ１１５ｂは、ｅｖｅｎｔ＿Ｄ（ｄｅｖ＿ＩＤ＝４１）とｅｖｅｎｔ＿Ｅ（ｄｅｖ＿ＩＤ＝５１）のイベントのレートを計測する。
【００４５】
その結果、ｅｖｅｎｔ＿Ａ（ｄｅｖ＿ＩＤ＝１１）は１イベント／秒、ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）は１００イベント／秒、ｅｖｅｎｔ＿Ｄ（ｄｅｖ＿ＩＤ＝４１）は１イベント／秒、ｅｖｅｎｔ＿Ｅ（ｄｅｖ＿ＩＤ＝５１）は１イベント／秒であったとする。イベントカウンタ１１５ａ〜ｂは、計測した情報をルール分配サーバ１０１のイベントレート管理部２０６に送信する。その結果、イベント管理テーブル４００は、図３に示すようになる。
【００４６】
イベント管理テーブル４００が更新されると、処理ルール振り分け記録部２０５は、イベント管理テーブル４００に格納されたイベント毎のイベントレートを基に、各処理ルールの重みを算出し、ルール管理テーブル３００に格納する。具体的には、処理ルール振り分け記録部２０５は、各処理ルールに指定されているイベント条件のイベントに対応するイベントレートを合計して重みを算出する。
【００４７】
例えば、図２に示す処理ルール（ＩＤ＝１）の重みは、１＋１００＝１０１となる。処理ルール（ＩＤ＝２）の重みは、１＋１＝２となる。
【００４８】
ここで、アプリ群１０６の各アプリケーションは、新しい処理ルール（以下、新規処理ルールという。）をルール分配サーバ１０１に送信する。本実施形態では、送信された新規処理ルールのイベント条件を「ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）  ａｎｄ  ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）」とする。新規処理ルールは、処理ルール受信部２００によって受信され、処理ルール振り分け部２０１に転送される。
【００４９】
処理ルール振り分け部２０１は、受信した新規処理ルールの分配先の処理サーバを決定する。図４は、処理ルール振り分け部２０１における処理サーバの決定処理を示すフローチャートである。
【００５０】
処理ルール振り分け部２０１は、処理サーバの決定を、「重み付け処理ルール数」を基に行う。重み付け処理ルール数は、単純にルール数を数えるのではなく、重みを掛け合わせた上で数えたルール数である。
【００５１】
例えば、図２に示す処理ルール（ＩＤ＝１）の重み付け処理ルール数は１ではなく、１×１０１＝１０１となる。処理ルール（ＩＤ＝２）の重み付け処理ルール数は、１×２＝２となる。
【００５２】
まず、処理ルール振り分け部２０１は、各処理サーバ１０４ａ〜ｂに設定されている処理ルールの重み付け処理ルール数の最小値を求める（ステップＳ００１）。
【００５３】
次に、処理ルール振り分け部２０１は、重み付け処理ルール数がステップＳ００１において算出した最小値に対して一定数以下の差である処理サーバを選択する（ステップＳ００２）。
【００５４】
次に、処理ルール振り分け部２０１は、ステップＳ００２において選択された処理サーバの個数を確認する（ステップＳ００３）。もし、ステップＳ００２において選択された処理サーバが１個の場合、処理ルール振り分け部２０１は、その処理サーバを振り分け先として決定して、処理を終了する。
【００５５】
もし、ステップＳ００２において選択された処理サーバが２個以上ある場合、処理ルール振り分け部２０１は、新規処理ルールのイベント条件と、選択された処理サーバに設定済みのイベント条件とを比較し、一致する処理サーバを選択する（ステップＳ００４）。
【００５６】
次に、処理ルール振り分け部２０１は、ステップＳ００４において選択された処理サーバの個数を確認する（ステップＳ００５）。もし、ステップＳ００４において選択された処理サーバが１個の場合、処理ルール振り分け部２０１は、その処理サーバを振り分け先として決定して、処理を終了する。
【００５７】
もし、ステップＳ００４において選択された処理サーバが２個以上ある場合、処理ルール振り分け部２０１は、選択された各処理サーバの中で、設定されている処理ルールの重み付け処理ルール数が最小である処理サーバを選択する（ステップＳ００６）。例えば、処理ルール振り分け部２０１は、ステップＳ００４において選択された処理サーバごとに、新規イベント処理ルールとイベント条件が共通である既に設定されている処理ルールを検索する。そして、処理ルール振り分け部２０１は、共通のイベント条件のイベントのイベントレートの合計が最小である処理サーバを選択する。
【００５８】
処理ルール振り分け部２０１は、ステップＳ００６において選択された処理サーバの個数を確認する（ステップＳ００８）。もし、ステップＳ００６において選択された処理サーバが１個の場合、処理ルール振り分け部２０１は、その処理サーバを振り分け先として決定して、処理を終了する。
【００５９】
もし、ステップＳ００４において条件に合致する処理サーバが１つもない場合、処理ルール振り分け部２０１は、ステップＳ００２において選択された各処理サーバの中で、設定されている処理ルールの重み付け処理ルール数が最小である処理サーバを選択する（ステップＳ００７）。
【００６０】
処理ルール振り分け部２０１は、ステップＳ００７において選択された処理サーバの個数を確認する（ステップＳ００９）。もし、ステップＳ００７において選択された処理サーバが１個の場合、処理ルール振り分け部２０１は、その処理サーバを振り分け先として決定して、処理を終了する。
【００６１】
もし、ステップＳ００６、Ｓ００７において選択された処理サーバが２個以上ある場合は、処理ルール振り分け部２０１は、定められた規則に基づいて処理サーバをひとつ選択し、その処理サーバを振り分け先として決定して（ステップＳ０１０）、処理を終了する。定められた規則としては、ラウンドロビンで選択するなどがある。また、乱数などを使用してランダムに処理サーバを選択するようにしてもよい。
【００６２】
本実施形態の場合、ステップＳ００１において算出される重み付け処理ルール数の最小値は、処理サーバ＃２の２となる。例えば、ステップＳ００２における一定数が１０であるとする。すると、処理サーバ＃１の重み付け処理ルール数は１０１であり、最小値２との差が一定数１０よりも大きい。そのため、ステップＳ００２において処理サーバ＃１は選択されず、処理サーバ＃２のみが選択される。よって、ステップＳ００３において処理サーバ＃２が振り分け先として決定される。
【００６３】
振り分け先処理サーバとして処理サーバ＃２が決定された後、処理ルール送信部２０２は、新規処理ルールを処理サーバ＃２に設定する。
【００６４】
また、振り分けルール決定部２０３は、新規処理ルールに指定されているイベント条件のイベントが、新規処理ルールを設定された処理サーバ＃２に転送されるように振り分けルールを生成する。そして、振り分けルール送信部２０４が、生成された振り分けルールをイベント振り分け器１０３に設定する。ここでは、新規処理ルールは「ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）  ａｎｄ  ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）」なので、振り分けルール決定部２０３は、ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）とｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）とが処理サーバ＃２に転送されるように、振り分けルールを生成する。
【００６５】
その後、イベント発生源１０５からｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）とｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のイベントが送信されてくると、イベント振り分け器１０３は、それらのイベントを処理サーバ＃２に転送する。処理サーバ＃２は、該イベントを処理し処理結果をアプリ群１０６のうちの対象となるアプリケーションに通知する。
【００６６】
図５は、新規処理ルール設定直後のイベント管理テーブル４００の一例を示す説明図である。図５に示すように、ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）に関するレコードが追加されている。しかし、新規処理ルール設定直後なのでｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のレートはまだ計測されていない。そのため、ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のレートの値は格納されていない。
【００６７】
図６は、新規処理ルール設定直後のルール管理テーブル３００の一例を示す説明図である。図６に示すように、新規処理ルール「ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）  ａｎｄ  ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）」のレコードが追加されている。
【００６８】
処理ルール振り分け記録部２０５は、ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のレートが集計されていないため、重みを計算できない。そこで、イベントレート平均算出部２０７が他の既設定イベントのレートの平均を算出する。そして、処理ルール振り分け部２０１は、イベントレート平均算出部２０７が算出した値を新規イベントｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のレートと見なす。図５に示す例では、既設定のイベントのレートの平均は２５．７５（＝（１＋１００＋１＋１）／４）となる。従って、処理ルール振り分け部２０１は、ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のレートを仮に２５．７５とみなす。
【００６９】
それにより、新規処理ルールの重みは、ｅｖｅｎｔ＿Ｂ（ｄｅｖ＿ＩＤ＝２１）の１００とｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）の２５．７５とを足して、１２５．７５となる。よって、処理サーバ＃２の重み付け処理ルール数は、仮に２＋１２５．７５＝１２７．７５となる。この状態でさらに新規処理ルールを受信した場合は、処理ルール振り分け部２０１は、この値に基づいてルール振り分けを行う。
【００７０】
その後、ｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）が処理サーバ＃２に転送されると、処理サーバ＃２はｅｖｅｎｔ＿Ｃ（ｄｅｖ＿ＩＤ＝３１）のカウント処理を開始する。そして、イベントレート管理部２０６においてイベントレートの計測が行われ、イベント管理テーブル４００のレート情報とルール管理テーブル３００の重みとが正しい値に更新される。
【００７１】
以上に説明したように、本実施形態によれば、各処理サーバ１０４ａ〜ｂが単位時間に処理するイベントの数を均一にすることができる。つまり、デバイスから発生するイベントの発生量に偏りがあるときでも、処理サーバ間の負荷を均等にするようにＣＥＰルールを分配することができる。なぜなら、図４に示すステップＳ００１、Ｓ００２、Ｓ００７における処理によって、重み付け処理ルール数が大きい、すなわち受信イベント数が多い処理サーバを新規処理ルールの設定先候補から外し、受信イベント数が少ない処理サーバにイベント処理ルールを設定するからである。また、ステップＳ００４における選択処理の結果、複数の処理サーバが新規処理ルールの設定先候補に残った場合にも、受信イベント数が少ない処理サーバを設定先に選択することができる。これら動作によって次第に各サーバ間の受信イベント数の差が小さくなる。
【００７２】
よって、１イベントあたりの処理負荷が一定である場合には、各処理サーバの処理負荷を均一にすることができる。
【００７３】
実施形態２．
以下、本発明の第２の実施形態を図面を参照して説明する。
【００７４】
第１の実施形態では、イベント処理システムがアプリケーションから新規処理ルールを受信したときに、各処理サーバの処理負荷が均一になるように、新規処理ルールの設定先を決定する方法について説明した。
【００７５】
第１の実施形態におけるイベント処理システムは、時間が経過してもイベントの発生量の偏りが不変である場合は、各処理サーバの処理負荷を均一に保つことができる。しかし、イベントの発生量の偏りが時間とともに変化する場合は、時間が経過すると各処理サーバの処理負荷に偏りが発生し、処理負荷を均一に保つことができない。そこで、本実施形態におけるイベント処理システムは、定期的または処理負荷の偏りが一定値以上になったときに、イベント処理ルールの再配置を行う。
【００７６】
本実施形態のイベント処理システムの構成は、第１の実施形態と同様であるため、説明を省略する。
【００７７】
次に、本実施形態の動作を説明する。
【００７８】
図７は、第２の実施形態におけるイベント処理システムの動作を示すフローチャートである。図８は、各イベントのイベントレート変化後のイベント管理テーブル４００の一例を示す説明図である。
【００７９】
図７に示すように、イベントレート管理部２０６は、定期的または間欠的に、処理サーバ１０４ａ〜ｂのイベントカウンタ１１５ａ〜ｂの情報を基に各イベント条件のレート情報を更新する（ステップＳ２０１）。本実施形態では、図８に示すようにｅｖｅｎｔ＿Ｂが１イベント／秒に、ｅｖｅｎｔ＿Ｅとｅｖｅｎｔ＿Ｃが５０イベント／秒になった場合を例にする。
【００８０】
処理ルール振り分け記録部２０５は、更新されたレートの情報を基に、設定済みの各処理ルールの重みの情報を更新する（ステップＳ２０２）。図９は、各処理ルールの重みの再計算後のルール管理テーブル３００の一例を示す説明図である。本実施形態では、各処理ルールの重みの再計算の結果、各処理ルールの重みは、図９に示すようになる。
【００８１】
処理ルール振り分け部２０１は、各処理サーバ１０４ａ〜ｂに設定されているイベント処理ルールの重みの合計を計算する（ステップＳ２０３）。本実施形態では、各処理ルールが図９に示すように重み付けされたため、処理サーバ＃１の重み付け処理ルール数は２、処理サーバ＃２の重み付け処理ルール数は１０２となる。
【００８２】
続いて、処理ルール振り分け部２０１は、重み付け処理ルール数が最小である処理サーバと最大である処理サーバを検索する（ステップＳ２０４）。処理ルール振り分け部２０１は、検索した処理サーバの重み付け処理ルール数の差が閾値以上である場合（ステップＳ２０５のｙｅｓ）、ルール再配置を行う（ステップＳ２０６）。本実施形態において閾値を５０とすると、処理サーバ＃２と処理サーバ＃１との重み付け処理ルール数の差は１００であるので、ルール再配置が行われる。
【００８３】
次に、処理ルールの再配置の手順を説明する。
【００８４】
図１０は、処理ルール振り分け部２０１の処理ルールの再配置処理を示すフローチャートである。
【００８５】
処理ルール振り分け部２０１は、処理ルール振り分け記録部２０５が保持する情報、つまり、ルール管理テーブル３００の情報をクリアする（ステップＳ３０１）。具体的には、処理ルール振り分け部２０１は、ルール管理テーブル３００の処理ルールの情報をクリアする。処理ルール振り分け部２０１は、ルールの分配先を計算するために、イベントレート管理部２０６が保持する情報、つまり、イベント管理テーブル４００の情報をクリアせずに保持しておく。
【００８６】
次に、処理ルール振り分け部２０１は、全てのイベント処理ルールに対して（ステップＳ３０２）、図４に示す手順で処理ルールの分配先を再計算する（ステップＳ３０３）。処理ルール振り分け部２０１は、計算結果に基づき各処理サーバに対して処理ルールを再配置し（ステップＳ３０４）、処理ルール振り分け記録部２０５の情報を更新する（ステップＳ３０５）。
【００８７】
図１１は、再配置後のルール管理テーブル３００の一例を示す説明図である。本実施形態では、再配置の結果、処理ルール（ＩＤ＝１）が処理サーバ＃１へ、処理ルール（ＩＤ＝２）が処理サーバ＃２へ再配置される。また、処理ルール（ＩＤ＝３）は既に設定されている重み付け処理ルール数が小さい処理サーバ、つまり、処理サーバ＃１へ再配置される。その結果、処理ルールは図１１に示すように再配置され、各処理サーバの負荷が均一化される。
【００８８】
以上に説明したように、本実施形態によれば、イベントの発生量の偏りが時間とともに変化し、各処理サーバの処理負荷に偏りが発生した場合であっても、処理負荷を均一に保つことができる。
【００８９】
実施形態３．
以下、本発明の第３の実施形態を図面を参照して説明する。
【００９０】
第１および第２の実施形態では、イベントの処理負荷がイベントごとに均一であるという前提で負荷分散を実現する。しかし、実際には処理ルールによっては処理負荷が異なる場合がある。本実施形態では、このような場合に対処するために、イベントのカウントではなく、実際にイベント処理ルールを処理したときの負荷の指標であるＣＰＵ使用時間をルール分配計算時のルール数の重みとして採用する。
【００９１】
図１２は、本発明によるイベント処理システムの第３の実施形態の構成を示すブロック図である。
【００９２】
処理サーバ１０４ａ〜ｂは、イベントカウンタ１１５ａ〜ｂの代わりに、ＣＰＵ時間カウンタ１１７ａ〜ｂを備える。
【００９３】
ルール分配サーバ１０１は、イベントレート管理部２０６の代わりに、ＣＰＵ時間管理部２０８を備える。また、ルール分配サーバ１０１は、イベントレート平均算出部２０７の代わりに、ＣＰＵ時間平均算出部２０９を備える。
【００９４】
ＣＰＵ時間カウンタ１１７ａ〜ｂは、各処理サーバ１０４ａ〜ｂに設定されている処理ルールごとに、その処理ルールを処理するのにかかったＣＰＵ時間をカウントし、ＣＰＵ時間管理部２０８に通知する。
【００９５】
ＣＰＵ時間管理部２０８は、通知された処理ルールごとのＣＰＵ時間を基に、各処理ルールの単位時間あたりのＣＰＵ時間を計算する。ＣＰＵ時間管理部２０８は、ルール管理テーブル３００に、計算したＣＰＵ時間を処理ルールの重みとして格納する。
【００９６】
ＣＰＵ時間平均算出部２０９は、ＣＰＵ時間管理部２０８に通知された処理ルールごとのＣＰＵ時間を基に、全ての処理ルールのＣＰＵ時間の平均を算出する。
【００９７】
なお、ＣＰＵ時間管理部２０８およびＣＰＵ時間平均算出部２０９は、ルール分配サーバ１０１が備えるＣＰＵなどによって実現される。
【００９８】
図１３は、第３の実施形態におけるルール管理テーブル３００の一例を示す説明図である。図１３に示すように、ルール管理テーブル３００は、重み３０４の代わりに、ＣＰＵ時間３０５を含む。本実施形態では、ＣＰＵ時間３０５は、１秒あたりのＣＰＵ使用時間をミリ秒で表したものである。
【００９９】
処理ルール振り分け部２０１は、ＣＰＵ時間３０５を第１および第２の実施形態における重み３０４と同様に用いて、処理ルールの分配を行う。
【０１００】
なお、処理ルール振り分け部２０１は、新規処理ルールのＣＰＵ時間が取得できない場合には、ＣＰＵ時間平均算出部２０９が算出した他の既設定処理ルールのＣＰＵ時間の平均を、新規処理ルールのＣＰＵ時間とみなして、処理ルールの振り分けを行う。
【０１０１】
第３の実施形態におけるイベント処理システムのその他の構成および動作は、第１および第２の実施形態と同様であるため、説明を省略する。
【０１０２】
以上に説明したように、本実施形態によれば、処理サーバ１０４ａ〜ｂ間でＣＰＵ負荷が均一になるように処理ルールを分配することができる。
【０１０３】
実施形態４．
以下、本発明の第４の実施形態を図面を参照して説明する。
【０１０４】
本実施形態では、各処理サーバの処理能力に違いがある場合を例に説明する。
【０１０５】
ルール分配サーバ１０１は、各処理サーバ１０４ａ〜ｂの処理能力を管理する処理サーバ能力テーブル５００を備える。処理サーバ能力テーブル５００は、具体的には、ルール分配サーバ１０１が備えるメモリ等の記憶装置によって実現される。
【０１０６】
図１４は、処理サーバ能力テーブル５００の一例を示す説明図である。図１４に示すように、処理サーバ能力テーブル５００は、処理サーバ１０４ａ〜ｂごとに処理能力のベンチマーク値を保持する。本実施形態では、ベンチマーク値が大きいほど処理能力が高いと定義する。ベンチマーク値を、例えば、ユーザが事前に手動で処理サーバ能力テーブル５００に設定してもよい。また、処理サーバ１０４ａ〜ｂ上でベンチマーク値を計測するベンチマークソフトが、計測結果を収集して自動でベンチマーク値を処理サーバ能力テーブル５００に設定するようにしてもよい。
【０１０７】
本実施形態では、上記の各実施形態における処理ルールの重みをベンチマーク値によって補正した値が、処理ルール分配計算に用いられる。
【０１０８】
図１５は、第４の実施形態におけるルール管理テーブル３００の一例を示す説明図である。本実施形態におけるルール管理テーブル３００は、第１および第２の実施形態の要素に加え、補正後の重み３０６を含む。補正後の重みは、重みの値を、その処理ルールが分配された処理サーバに対応するベンチマーク値で割ることにより算出される。処理ルール振り分け部２０１は、処理ルールの分配を、この補正後の重みに基づいて行う。
【０１０９】
第４の実施形態におけるイベント処理システムのその他の構成および動作は、第１および第２の実施形態と同様であるため、説明を省略する。
【０１１０】
以上に説明したように、本実施形態によれば、処理サーバ１０４ａ〜ｂ間に処理能力の差があるときに、処理能力に応じて処理ルールを分配することができる。
【０１１１】
実施形態５．
以下、本発明の第５の実施形態を図面を参照して説明する。
【０１１２】
ＣＥＰでは過去のイベントを「保持」して現在受信したイベントとの組み合わせを見て処理を行うため、メモリを使用する。例えば、処理サーバ１０４ａ〜ｂは、メモリ等の記憶部（図示せず）を備え、過去に受信したイベントの種類や到着時刻を示す情報を記憶部に格納する。本実施形態では、処理サーバ１０４ａ〜ｂにおける処理ルールごとのメモリ使用量をルール分配の際の重みとして使用する。
【０１１３】
図１６は、本発明によるイベント処理システムの第５の実施形態の構成を示すブロック図である。
【０１１４】
処理サーバ１０４ａ〜ｂは、メモリ監視部１１８ａ〜ｂを備える。
【０１１５】
メモリ監視部１１８ａ〜ｂは、設定された処理ルールごとに、メモリ使用量を測る。メモリ監視部１１８ａ〜ｂは、計測結果を含む情報をルール分配サーバ１０１に通知する。
【０１１６】
ルール分配サーバ１０１は、第１の実施形態におけるイベントレート管理部２０６の代わりに、メモリ使用量管理部２１０を備える。また、ルール分配サーバ１０１は、第１の実施形態におけるイベントレート平均算出部２０７の代わりに、メモリ使用量平均算出部２１１を備える。
【０１１７】
本実施形態では、処理ルール振り分け記録部２０５は、処理ルールごとに重みの代わりに、その処理ルールが使用しているメモリ使用量を管理する。図１７は、第５の実施形態におけるルール管理テーブル３００の一例を示す説明図である。本実施形態におけるルール管理テーブル３００は、重み３０４の代わりに、メモリ使用量３０７を含む。
【０１１８】
メモリ使用量管理部２１０は、メモリ監視部１１８ａ〜ｂの情報を基に、ルール管理テーブル３００の各処理ルールのメモリ使用量３０７を更新する。
【０１１９】
メモリ使用量平均算出部２１１は、メモリ使用量管理部２１０に通知された処理ルールごとのメモリ使用量を基に、全ての処理ルールのメモリ使用量の平均を算出する。
【０１２０】
なお、メモリ使用量管理部２１０およびメモリ使用量平均算出部２１１は、ルール分配サーバ１０１が備えるＣＰＵなどによって実現される。
【０１２１】
処理ルール振り分け部２０１は、メモリ使用量３０７を第１および第２の実施形態における重み３０４と同様に用いて、処理ルールの分配を行う。
【０１２２】
なお、処理ルール振り分け部２０１は、新規処理ルールのメモリ使用量が取得できない場合には、メモリ使用量平均算出部２１１が算出した他の既設定処理ルールのメモリ使用量の平均を、新規処理ルールのメモリ使用量とみなして、処理ルールの振り分けを行う。
【０１２３】
第５の実施形態におけるイベント処理システムのその他の構成および動作は、第１および第２の実施形態と同様であるため、説明を省略する。
【０１２４】
以上に説明したように、本実施形態によれば、処理サーバ１０４ａ〜ｂのメモリ使用量が均一になるように、処理サーバ１０４ａ〜ｂに処理ルールを分配することができる。
【０１２５】
実施形態６．
以下、本発明の第６の実施形態を図面を参照して説明する。
【０１２６】
本実施形態では、第５の実施形態と同様に、処理サーバ１０４ａ〜ｂのメモリ使用量が均一になるように、処理サーバ１０４ａ〜ｂに処理ルールを分配する。しかし、本実施形態では、処理サーバ１０４ａ〜ｂごとに実装メモリ量が異なる場合を例にする。
【０１２７】
ルール分配サーバ１０１は、図１８に示す実装メモリ量管理テーブル６００を備える。実装メモリ量管理テーブル６００は、具体的には、ルール分配サーバ１０１が備えるメモリ等の記憶装置によって実現される。
【０１２８】
図１８は、実装メモリ量管理テーブル６００の一例を示す説明図である。図１８に示すように、実装メモリ量管理テーブル６００は、処理サーバ１０４ａ〜ｂごとに実装メモリ量を保持する。本実施形態では、実装メモリ量の単位は、ＧＢ（ギガバイト）である。
【０１２９】
ルール分配サーバ１０１は、実装メモリ量管理テーブル６００を、第４の実施形態の処理サーバ能力テーブル５００と同様に扱う。
【０１３０】
図１９は、第６の実施形態におけるルール管理テーブル３００の一例を示す説明図である。図１９に示すように、本実施形態におけるルール管理テーブル３００は、第５の実施形態の要素に加えて、補正後のメモリ使用量３０８を含む。
【０１３１】
補正後のメモリ使用量３０８は、メモリ使用量３０７を、振り分け先処理サーバ３０３に対応する実装メモリ量管理テーブル６００の実装メモリ量６０２で割ったものである。
【０１３２】
処理ルール振り分け部２０１は、補正後のメモリ使用量３０８を第１および第２の実施形態における重み３０４と同様に用いて、処理ルールの分配を行う。
【０１３３】
第６の実施形態におけるイベント処理システムのその他の構成および動作は、第１および第２の実施形態と同様であるため、説明を省略する。
【０１３４】
以上に説明したように、本実施形態によれば、処理サーバ１０４ａ〜ｂごとに実装メモリ量が異なる場合であっても、処理サーバ１０４ａ〜ｂのメモリ使用率が均一になるように、処理サーバ１０４ａ〜ｂに処理ルールを分配することができる。
【０１３５】
なお、本発明によるイベント処理システムは、第１の実施形態から第６の実施形態のうちの複数の実施形態を組み合わせて実現することも可能である。
【０１３６】
図２０は、本発明によるルール分配装置の最小構成を示すブロック図である。図２１は、本発明によるルール分配装置の他の最小構成を示すブロック図である。
【０１３７】
図２０に示すように、ルール分配装置１０（図１に示すルール分配サーバ１０１に相当。）は、複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置２０−１〜２０−ｎ（図１に示す処理サーバ１０４ａ〜１０４ｂに相当。）と、複数の処理装置２０−１〜２０−ｎへイベント発生源で発生したイベントを振り分けるイベント振り分け装置３０（図１に示すイベント振り分け器１０３に相当。）とを含むイベント処理システムにおいて、アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを複数の処理装置２０−１〜２０−ｎに個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、イベント振り分け装置３０にイベント振り分けルールを設定するルール分配装置１０であって、新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部１１（図１に示す処理サーバ１０４ａ〜１０４ｂにおける処理ルール振り分け部２０１に相当。）を含み、処理ルール振り分け部１１は、複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、アプリケーションが要求する新たなイベント処理ルールを設定する処理装置を決定する。
【０１３８】
上記の実施形態には、以下のようなルール分配装置も開示されている。
【０１３９】
（１）処理ルール振り分け部１１が、各処理装置２０−１〜２０−ｎに設定されているイベント処理ルールのイベント条件に指定されたイベントの各処理装置２０−１〜２０−ｎにおける受信回数をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、該イベント処理ルールにもとづくイベント処理の重みを算出するルール分配装置。
【０１４０】
そのような構成によれば、イベント処理ルールにもとづくイベント処理の負荷をより正確に算出することができる。
【０１４１】
（２）処理ルール振り分け部１１が、各処理装置２０−１〜２０−ｎに設定されているイベント処理ルールごとに、該イベント処理ルールの重みとして、該イベント処理ルールのイベント条件に指定されたイベントのイベントレートの和を算出し、算出したイベントレートの和を該イベント処理ルールにもとづくイベント処理の重みとするルール分配装置。
【０１４２】
そのような構成によれば、処理装置に設定されているイベント処理ルールの数だけでなく、イベント処理ルールの重みを考慮して、各処理装置におけるイベント処理の負荷を判定することができる。
【０１４３】
（３）図２１に示すように、処理装置の各々に設定されているイベント処理ルールのイベント条件に指定されたイベントのイベントレートの平均を算出するイベントレート平均算出部１２（図１に示す処理サーバ１０４ａ〜１０４ｂにおけるイベントレート平均算出部２０７に相当。）を備え、処理ルール振り分け部１１が、イベント処理ルールのイベント条件に指定されたイベントのイベントレートが計測できない場合、該イベント以外のイベントについてのイベントレートの平均を、該イベントのイベントレートとするルール分配装置。
【０１４４】
そのような構成によれば、新規処理ルール設定直後において、新規処理ルールのイベント条件に指定されているイベントのイベントレートが計測されていない場合でも、処理ルールをより正確に分配することができる。また、既設定イベントのレートの平均をイベントレートとして用いることにより、イベントレートの単位が変わった場合にも、処理ルールをより正確に分配することができる。例えば、定数などを用いる場合は、イベントレートの単位によって、定数が示すイベントレートの大きさが変わってしまう。それに対して、既設定イベントのレートの平均を用いる方法は、イベントレートの単位に影響されることがないので、処理ルールをより正確に分配することができる。
【０１４５】
（４）処理ルール振り分け部１１が、アプリケーションから新たにイベント処理ルールを受信すると、処理装置ごとに、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和を求め、該重みの和の最小値を検索し、該重みの和と該最小値との差が予め定められている閾値よりも大きい処理装置を除外し、残った処理装置のうちのいずれかひとつに新たなイベント処理ルールを設定するルール分配装置。
【０１４６】
そのような構成によれば、各処理装置が単位時間に処理するイベントの数を均一にすることができる。
【０１４７】
（５）処理ルール振り分け部１１が、残った処理装置が複数ある場合、残った処理装置ごとに、新たなイベント処理ルールとイベント条件が共通である既に設定されているイベント処理ルールを検索し、共通のイベント条件に指定されたイベントのイベントレートの合計を重みとして、該重みの最小の処理装置のいずれかひとつに新たなイベント処理ルールを設定するルール分配装置。
【０１４８】
そのような構成によれば、複数の処理装置が新規処理ルールの設定先候補に残った場合にも、受信イベント数が少ない処理装置を設定先に選択することができる。
【０１４９】
（６）処理ルール振り分け部１１が、定期的または間欠的に、各処理装置２０−１〜２０−ｎに設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和が最小である処理サーバと最大である処理サーバとを検索し、検索した処理サーバにおける該重みの和の差が、予め定められた閾値以上である場合には、処理ルールの再配置を行うルール分配装置。
【０１５０】
そのような構成によれば、イベントの発生量の偏りが時間とともに変化し、各処理装置の処理負荷に偏りが発生した場合であっても、処理負荷を均一に保つことができる。
【０１５１】
（７）処理ルール振り分け部１１が、各処理装置２０−１〜２０−ｎに設定されているイベント処理ルールごとに、単位時間あたりのイベント処理ルールの処理時間を算出し、算出した処理時間を該イベント処理ルールにもとづくイベント処理の重みとして使用するルール分配装置。
【０１５２】
そのような構成によれば、各処理装置のＣＰＵ負荷が均一になるように処理ルールを分配することができる。
【０１５３】
（８）処理ルール振り分け部１１が、各処理装置２０−１〜２０−ｎの処理能力を示すベンチマーク値をもとに、イベント処理ルールにもとづくイベント処理の重みを補正するルール分配装置。
【０１５４】
そのような構成によれば、各処理装置間に処理能力の差があるときに、処理能力に応じて処理ルールを分配することができる。
【０１５５】
（９）処理ルール振り分け部１１が、各処理装置２０−１〜２０−ｎに設定されているイベント処理ルールごとのメモリ使用量を、該イベント処理ルールにもとづくイベント処理の重みとして使用するルール分配装置。
【０１５６】
そのような構成によれば、各処理装置のメモリ使用量が均一になるように処理ルールを分配することができる。
【０１５７】
（１０）処理ルール振り分け部が、各処理装置の実装メモリ量をもとに、各処理装置に設定されているイベント処理ルールのメモリ使用量を補正し、補正後のメモリ使用量を該イベント処理ルールにもとづくイベント処理の重みとして使用するルール分配装置。
【０１５８】
そのような構成によれば、処理装置ごとに実装メモリ量が異なる場合であっても、処理装置のメモリ使用率が均一になるように、処理装置に処理ルールを分配することができる。
【０１５９】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下
に限られない。
【０１６０】
（付記１）複数のアプリケーションが要求するイベント処理を行い、該アプリケーションへイベント処理結果を通知する複数の処理装置と、前記複数の処理装置へイベント発生源で発生したイベントを振り分けるイベント振り分け装置と、前記アプリケーションが要求するイベント処理と該イベント処理を実行するためのイベント条件とを規定したイベント処理ルールを前記複数の処理装置に個別に設定し、該イベント条件で指定されたイベントが各処理装置に分配されるように、前記イベント振り分け装置にイベント振り分けルールを設定するルール分配装置とを含むイベント処理システムであって、前記ルール分配装置は、新たなイベント処理ルールをどの処理装置に設定するかを決定する処理ルール振り分け部を含み、前記処理ルール振り分け部は、前記複数の処理装置の各々について、設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、算出した重みに応じて、新たなイベント処理ルールを設定する処理装置を決定することを特徴とするイベント処理システム。
【０１６１】
（付記２）処理装置は、処理装置に設定されているイベント処理ルールのイベント条件に指定されたイベントの受信回数を計測するイベントカウンタを含み、処理ルール振り分け部は、各処理装置のイベントカウンタの計測結果をもとに各イベントのイベントレートを算出し、算出したイベントレートにもとづいて、該イベント処理ルールにもとづくイベント処理の重みを算出する付記１に記載のイベント処理システム。
【０１６２】
そのような構成によれば、イベント処理ルールにもとづくイベント処理の負荷をより正確に算出することができる。
【０１６３】
（付記３）処理ルール振り分け部は、各処理装置に設定されているイベント処理ルールごとに、該イベント処理ルールの重みとして、該イベント処理ルールのイベント条件に指定されたイベントのイベントレートの和を算出し、算出したイベントレートの和を該イベント処理ルールにもとづくイベント処理の重みとする付記２に記載のイベント処理システム。
【０１６４】
そのような構成によれば、処理装置に設定されているイベント処理ルールの数だけでなく、イベント処理ルールの重みを考慮して、各処理装置におけるイベント処理の負荷を判定することができる。
【０１６５】
（付記４）ルール分配装置は、処理装置の各々に設定されているイベント処理ルールのイベント条件に指定されたイベントのイベントレートの平均を算出するイベントレート平均算出部を備え、処理ルール振り分け部は、イベント処理ルールのイベント条件に指定されたイベントのイベントレートが計測できない場合、該イベント以外のイベントについてのイベントレートの平均を、該イベントのイベントレートとする
付記２または付記３に記載のイベント処理システム。
【０１６６】
そのような構成によれば、新規処理ルール設定直後において、新規処理ルールのイベント条件に指定されているイベントのイベントレートが計測されていない場合でも、処理ルールをより正確に分配することができる。また、既設定イベントのレートの平均をイベントレートとして用いることにより、イベントレートの単位が変わった場合にも、処理ルールをより正確に分配することができる。例えば、定数などを用いる場合は、イベントレートの単位によって、定数が示すイベントレートの大きさが変わってしまう。それに対して、既設定イベントのレートの平均を用いる方法は、イベントレートの単位に影響されることがないので、処理ルールをより正確に分配することができる。
【０１６７】
（付記５）処理ルール振り分け部は、アプリケーションから新たにイベント処理ルールを受信すると、処理装置ごとに、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和を求め、該重みの和の最小値を検索し、該重みの和と該最小値との差が予め定められている閾値よりも大きい処理装置を除外し、残った処理装置のうちのいずれかひとつに新たなイベント処理ルールを設定する付記１から付記４のうちのいずれか１つに記載のイベント処理システム。
【０１６８】
そのような構成によれば、各処理装置が単位時間に処理するイベントの数を均一にすることができる。
【０１６９】
（付記６）処理ルール振り分け部は、残った処理装置が複数ある場合、残った処理装置ごとに、新たなイベント処理ルールとイベント条件が共通である既に設定されているイベント処理ルールを検索し、共通のイベント条件に指定されたイベントのイベントレートの合計を重みとして、該重みの最小の処理装置のいずれかひとつに新たなイベント処理ルールを設定する付記１から付記５のうちのいずれか１つに記載のイベント処理システム。
【０１７０】
そのような構成によれば、複数の処理サーバが新規処理ルールの設定先候補に残った場合にも、受信イベント数が少ない処理サーバを設定先に選択することができる。
【０１７１】
（付記７）処理ルール振り分け部は、定期的または間欠的に、各処理装置に設定されているイベント処理ルールにもとづくイベント処理の重みを算出し、既に設定されているイベント処理ルールにもとづくイベント処理の重みの和が最小である処理サーバと最大である処理サーバとを検索し、検索した処理サーバにおける該重みの和の差が、予め定められた閾値以上である場合には、処理ルールの再配置を行う付記１から付記６のうちのいずれか１つに記載のイベント処理システム。
【０１７２】
そのような構成によれば、イベントの発生量の偏りが時間とともに変化し、各処理サーバの処理負荷に偏りが発生した場合であっても、処理負荷を均一に保つことができる。
【０１７３】
（付記８）処理装置は、該処理装置に設定されているイベント処理ルールの処理に要する処理時間を計測するＣＰＵ時間カウンタを含み、処理ルール振り分け部は、各処理装置のＣＰＵ時間カウンタの計測結果をもとに、各処理装置に設定されているイベント処理ルールごとに、単位時間あたりのイベント処理ルールの処理時間を算出し、算出した処理時間を該イベント処理ルールにもとづくイベント処理の重みとして使用する処理装置を決定する付記１から付記７のうちのいずれか１つに記載のイベント処理システム。
【０１７４】
そのような構成によれば、各処理装置のＣＰＵ負荷が均一になるように処理ルールを分配することができる。
【０１７５】
（付記９）処理ルール振り分け部は、各処理装置の処理能力を示すベンチマーク値をもとに、イベント処理ルールにもとづくイベント処理の重みを補正する付記１から付記８のうちのいずれか１つに記載のイベント処理システム。
【０１７６】
そのような構成によれば、各処理装置間に処理能力の差があるときに、処理能力に応じて処理ルールを分配することができる。
【０１７７】
（付記１０）処理装置は、該処理装置に設定されているイベント処理ルールの処理に要するメモリ使用量を計測するメモリ監視部を含み、処理ルール振り分け部は、各処理装置のメモリ監視部の計測結果をもとに算出した各処理装置のメモリ使用量を、該イベント処理ルールにもとづくイベント処理の重みとして使用する付記１から付記９のうちのいずれか１つに記載のイベント処理システム。
【０１７８】
（付記１１）処理ルール振り分け部は、各処理装置の実装メモリ量をもとに、各処理装置に設定されているイベント処理ルールのメモリ使用量を補正し、補正後のメモリ使用量を該イベント処理ルールにもとづくイベント処理の重みとして使用する付記１０に記載のイベント処理システム。
【０１７９】
そのような構成によれば、処理装置ごとに実装メモリ量が異なる場合であっても、処理装置のメモリ使用率が均一になるように、処理装置に処理ルールを分配することができる。
【０１８０】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１８１】
この出願は、２０１２年６月１９日に出願された日本特許出願２０１２−１３８０３２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１８２】
１０  ルール分配装置
１１、２０１  処理ルール振り分け部
１２、２０７  イベントレート平均算出部
２０−１〜２０−ｎ  処理装置
３０  イベント振り分け装置
１０１、１１０１  ルール分配サーバ
１０３、１１０３  イベント振り分け器
１０４ａ〜ｂ、１１０４ａ〜ｆ  処理サーバ
１０５、１０５ａ〜ｈ  イベント発生原
１０６  アプリ群
１０６ａ〜ｈ  アプリケーション
１０７、１１０７  イベント振り分けルール
１０８ａ〜ｂ、１１０８ａ〜ｆ  イベント処理ルール
１１５ａ〜ｂ  イベントカウンタ
１１７ａ〜ｂ  ＣＰＵ時間カウンタ
１１８ａ〜ｂ  メモリ監視部
２００  処理ルール受信部
２０２  処理ルール送信部
２０５処理ルール振り分け記録部
２０３  振り分けルール決定部
２０４  振り分けルール送信部
２０６  イベントレート管理部
２０８  ＣＰＵ時間管理部
２０９  ＣＰＵ時間平均算出部
２１０  メモリ使用量管理部
２１１  メモリ使用量平均算出部
３００  ルール管理テーブル
４００  イベント管理テーブル
５００  処理サーバ能力テーブル
６００  実装メモリ量監理テーブル
【図１】
2013190770.tif 000003
【図２】
2013190770.tif 000004
【図３】
2013190770.tif 000005
【図４】
2013190770.tif 000006
【図５】
2013190770.tif 000007
【図６】
2013190770.tif 000008
【図７】
2013190770.tif 000009
【図８】
2013190770.tif 000010
【図９】
2013190770.tif 000011
【図１０】
2013190770.tif 000012
【図１１】
2013190770.tif 000013
【図１２】
2013190770.tif 000014
【図１３】
2013190770.tif 000015
【図１４】
2013190770.tif 000016
【図１５】
2013190770.tif 000017
【図１６】
2013190770.tif 000018
【図１７】
2013190770.tif 000019
【図１８】
2013190770.tif 000020
【図１９】
2013190770.tif 000021
【図２０】
2013190770.tif 000022
【図２１】
2013190770.tif 000023
【図２２】
2013190770.tif 000024
【図２３】
2013190770.tif 000025
【国際調査報告】
2013190770.tif 000026
2013190770.tif 000027