(57)【要約】イベント処理システムにおいて、適切な負荷分散を実現する。負荷分散装置は、イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、を含むシステムにおいて用いられ、前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または送信状況を取得する取得手段と、前記受信状況または送信状況に基づいて、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、を備える。
2014199607.tif 000002
【特許請求の範囲】
【請求項１】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられ、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、
を備える、負荷分散装置。
【請求項２】
前記取得手段は、前記振り分け装置が受信するイベントの送信元である前記一つまたは複数のイベント生成源のそれぞれから受信するイベントの受信状況、または、前記一つまたは複数のイベント生成源のそれぞれから受信して前記振り分け装置に送信するイベントの送信状況を、前記振り分け装置から取得する、
請求項１に記載の負荷分散装置。
【請求項３】
前記システムに含まれるイベント生成源は、前記イベントの送信先を記憶している送信先記憶手段と、前記送信先記憶手段が記憶している送信先に前記イベントを送信する送信手段と、を有し、
前記更新手段は、前記イベント生成源に備えられた前記送信先記憶手段に、前記他の振り分け装置のアドレスを書き込む
請求項１または２に記載の負荷分散装置。
【請求項４】
前記受信状況または前記送信状況に基づいて、前記イベント生成源と前記イベント生成源が生成するイベントの送信先である振り分け装置との対応関係を決定する決定手段を更に備える、
請求項１または２に記載の負荷分散装置。
【請求項５】
前記システムは更に、イベント生成源と前記イベント生成源が生成するイベントの送信先である振り分け装置との対応関係を記憶している送信先管理装置を含み、
前記更新手段は、決定された前記対応関係に基づいて、前記送信先管理装置が記憶している情報を更新し、
前記システムに含まれるイベント生成源は、イベントの送信先を前記送信先管理手段から取得する、請求項４に記載の負荷分散装置。
【請求項６】
前記負荷分散装置は更に、
前記受信状況または前記送信状況に基づいて、前記振り分け装置が前記特定のイベント生成源から受信したイベントを受信または送信する際に当該振り分け装置にかかる負荷を算出する算出手段を更に備え、
前記更新手段は、前記負荷に基づいて更新する
請求項１から５のいずれかに記載の負荷分散装置。
【請求項７】
前記システムに含まれる振り分け装置は、振り分けルールを参照し、前記受信したイベントと前記振り分けルールとに基づいて、前記受信したイベントを破棄するか、あるいは、前記受信したイベントを前記処理装置に送信し、
前記取得手段は、前記受信状況、および、前記送信状況を取得し、
前記算出手段は更に、前記受信状況および前記送信状況に基づいて、前記振り分け装置が前記特定のイベント生成源から受信したイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を算出する、
請求項６に記載の負荷分散装置。
【請求項８】
前記受信状況は、前記受信したイベントの数と、情報サイズに関する情報とを含み、
前記送信状況は前記送信したイベントの情報サイズに関する情報であり、
前記算出手段は、
前記受信したイベントの情報サイズに、情報を受信する際に前記振り分け装置にかかる単位情報サイズあたりの負荷を乗じた値と、
前記受信したイベントの数量に、前記イベントと前記振り分けルールとのマッチングの際に前記振り分け装置にかかるイベント１つ当たりの負荷を乗じた値と、
前記送信したイベントの情報サイズに、情報を送信する際に前記振り分け装置にかかる単位情報サイズあたりの負荷を乗じた値と、
の和に基づいて、前記振り分け装置がイベントを転送する際に前記振り分け装置にかかる負荷を算出する、
請求項７に記載の負荷分散装置。
【請求項９】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータが、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得し、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する、
負荷分散方法。
【請求項１０】
イベントを生成し、前記イベントを特定の振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータに、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する処理と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する処理と、
を実行させるプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項１１】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
前記振り分け装置からイベントを受信し、前記受信したイベントを処理する処理装置と、
を含み、
更に、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、を備える負荷分散装置を含む、
イベント処理システム。
【請求項１２】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられ、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得する取得手段と、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、
を備える、負荷分散装置。
【請求項１３】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータが、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得し、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する、
負荷分散方法。
【請求項１４】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータに、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得する処理と、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する処理と、
を実行させるプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント処理システムにおいて用いられる負荷分散装置、負荷分散方法および記憶媒体、ならびにイベント処理システム等に関する。
【背景技術】
【０００２】
近年では、大量のセンサーが、通信ネットワーク（以下、「ネットワーク」と記載）に接続されている。これらセンサーは、例えば電力消費量、交通情報、気温、株価の変動または位置情報など、様々な情報（イベント）を収集する。【０００３】
また、近年では、大量のアプリケーションが、ネットワークに接続されている。これらアプリケーションは、ネットワークを介して、オペレータから、または、外部装置からの操作を受け付ける。【０００４】
このような背景に基づいて、M2M (Machine to Machine)という技術が注目を集めている。M2Mの技術によれば、アプリケーションは、センサーが収集したイベントをネットワークを介して受信する。そして、アプリケーションは、受信したイベントに基づいて状況を判断したり、処理を実行したりする。このようにM2Mという技術によれば、アプリケーションは、センサーが収集したイベントに基づいて人手を介することなく自律的に制御される。【０００５】
通信ネットワークに接続されるセンサーの数量の増加に伴い、M2Mサービスは、今後更に大規模化することが予想される。そのため、サービスの大規模化に対応可能なイベント処理システムが求められる。【０００６】
特許文献１は、イベント処理システムの一例を開示する。図２８は、特許文献１が開示するイベント処理システムの概要を示す図である。【０００７】
図２８に示すように、特許文献１が開示するイベント処理システムは、アプリケーション（ＡＰ）５０００と、処理サーバ４０００と、コンテキスト依存振り分け器３０００と、デバイス２０００と、イベント処理分散制御装置６０００と、コンテキスト非依存振り分け器７０００と、を含む。【０００８】
処理サーバ４０００は、コンテキスト依存振り分け器３０００からイベントを受信し、受信したイベントを処理し、アプリケーション５０００にイベントの処理結果を通知する。コンテキスト依存振り分け器３０００は、デバイス２０００が生成したイベントを処理サーバ４０００に振り分ける。デバイス２０００は、イベントを生成する。【０００９】
イベント処理分散制御装置６０００は、アプリケーション５０００からの要求に基づき以下の処理を行う。すなわちイベント処理分散制御装置６０００は、イベントの内容（コンテキスト）に基づく処理を示す処理ルールを、処理サーバ４０００に設定する。イベント処理分散制御装置６０００は、更に、処理ルールを実行するために必要なイベントが、処理サーバ４０００に適切に分配されるように、振り分けルールをコンテキスト依存振り分け器３０００に設定する。【００１０】
コンテキスト依存振り分け器３０００には、イベント処理分散制御装置６０００により、振り分けルールがあらかじめ設定されている。コンテキスト依存振り分け器３０００は、イベントを受信する。そして、コンテキスト依存振り分け器３０００は、受信したイベントの内容（コンテキスト）と振り分けルールとに基づいて、受信したイベントを、複数の処理サーバ４０００のうちいずれの処理サーバ４０００に転送するかを決定する。【００１１】
処理サーバ４０００には、イベント処理分散制御装置６０００により、処理ルールがあらかじめ設定されている。処理サーバ４０００は、転送されたイベントを、処理ルールに基づいて処理し、イベント処理結果をアプリケーション５０００に送信する。【００１２】
特許文献１が開示するコンテキスト非依存振り分け器７０００は、複数のコンテキスト依存振り分け器３０００の間で負荷分散を実現するための構成である。コンテキスト非依存振り分け器７０００は、デバイス２０００からイベントを受信し、コンテキスト依存振り分け器３０００に受信したイベントをランダムに転送する。このように、デバイス２０００とコンテキスト依存振り分け器３０００との間にコンテキスト非依存振り分け器７０００が介在することにより、コンテキスト依存振り分け器３０００が受信するイベントの数量が平準化される。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第４１６１９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１が開示するコンテキスト非依存振り分け器７０００では、場合により、コンテキスト非依存振り分け器７０００自身にイベントが集中してしまうことが予想される。コンテキスト非依存振り分け器７０００にイベントが集中し、コンテキスト非依存振り分け器７０００の負荷が上昇すると、コンテキスト非依存振り分け器７０００の処理に遅延が生ずることが予想される。そうすると、デバイス２０００がイベントを生成してから、アプリケーション５０００がイベント処理結果を受信するまでの時間が遅延してしまう。【００１５】
このように、コンテキスト非依存振り分け器７０００は、イベント処理システムにおいて、適切な負荷分散を実現できない。【００１６】
本発明は、イベント処理システムにおいて、適切な負荷分散を実現可能な、負荷分散装置、負荷分散方法および記憶媒体等を提供することを主たる目的とする。【００１７】
また、本発明は、適切な負荷分散を実現可能なイベント処理システム等を提供することを主たる目的とする。
【課題を解決するための手段】
【００１８】
本発明の第１の側面は、イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、を含むシステムにおいて用いられ、前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、を備える、負荷分散装置である。【００１９】
本発明の第２の側面は、イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、を含むシステムにおいて用いられるコンピュータが、前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得し、前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する、負荷分散方法である。【００２０】
本発明の第３の側面は、イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、を含むシステムにおいて用いられるコンピュータに、前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する処理と、前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する処理と、を実行させるプログラムを記録したコンピュータ読み取り可能な記憶媒体である。【００２１】
本発明の第４の側面は、イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、前記振り分け装置からイベントを受信し、前記受信したイベントを処理する処理装置と、を含み、更に、前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、を備える負荷分散装置を含む、イベント処理システムである。【００２２】
また、本発明の目的は、上記のプログラムが格納されたコンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２３】
本発明によれば、イベント処理システムにおいて、適切な負荷分散を実現することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施形態にかかるイベント処理システム１０００の構成を示す図である。
【図２】本発明の第１の実施形態にかかるイベント生成源２００の構成を示す図である。
【図３】本発明の第１の実施形態にかかる振り分け装置３００の構成を示す図である。
【図４】本発明の第１の実施形態にかかる振り分けルールの一例を説明する図である。
【図５】本発明の第１の実施形態にかかる転送状況の一例を説明する図である。
【図６】本発明の第１の実施形態にかかる処理装置４００の構成を示す図である。
【図７】本発明の第１の実施形態にかかる負荷分散装置１００の構成を示す図である。
【図８】本発明の第１の実施形態にかかるフローテーブル記憶部１２０が記憶する情報の一例を示す図である。
【図９】本発明の第１の実施形態にかかる負荷情報の一例を説明する図である。
【図１０】本発明の第１の実施形態にかかる負荷調整後の負荷情報の一例を説明する図である。
【図１１】本発明の第１の実施形態にかかる負荷分散装置１００のＨＷ（Ｈａｒｄwａｒｅ）構成の一例を示す図である。
【図１２】本発明の第１の実施形態にかかる負荷分散装置１００の動作の一例を説明するフローチャートである。
【図１３】本発明の第１の実施形態にかかる算出部１３０の動作を説明するフローチャートである。
【図１４】本発明の第１の実施形態にかかる決定部１４０の動作を説明するフローチャートである。
【図１５】本発明の第２の実施形態にかかるイベント処理システム１００１の構成を示す図である。
【図１６】本発明の第２の実施形態にかかる負荷分散装置１０１の構成を示す図である。
【図１７】本発明の第２の実施形態にかかる送信先管理装置７００が記憶する情報の一例を説明する図である。
【図１８】本発明の第２の実施形態にかかるイベント生成源２０１の構成を示す図である。
【図１９】本発明の第３の実施形態にかかるイベント処理システム１００２の構成を示す図である。
【図２０】本発明の第３の実施形態にかかる振り分け装置３０２の構成を示す図である。
【図２１】本発明の第３の実施形態にかかる転送状況の一例を説明する図である。
【図２２】本発明の第３の実施形態にかかる負荷分散装置１０２の構成を示す図である。
【図２３】本発明の第４の実施形態にかかるイベント処理システム１００３の構成を示す図である。
【図２４】本発明の第４の実施形態にかかる振り分け装置３０３の構成を示す図である。
【図２５】本発明の第４の実施形態にかかる負荷分散装置１０３の構成を示す図である。
【図２６】本発明の第５の実施形態にかかるイベント処理システム１００４の構成を示す図である。
【図２７】本発明の他の実施形態にかかる振り分けルールの具体例を示す図である。
【図２８】特許文献１が開示するイベント処理システムの概要を示す図である。
【発明を実施するための形態】
【００２５】
＜第１の実施形態＞
第１の実施形態にかかる負荷分散装置１００について、図面を参照して詳細に説明する。
【００２６】
図１は、負荷分散装置１００を含むイベント処理システム１０００の構成を示すブロック図である。図１に示すように、イベント処理システム１０００は、複数のイベント生成源２００と、複数の振り分け装置３００と、複数の処理装置４００と、複数のアプリケーション（ＡＰ）５００と、ルール設定装置６００と、負荷分散装置１００と、を含む。
【００２７】
以下、複数のイベント生成源２００を互いに区別する必要がある場合は、イベント生成源２００Ａ、イベント生成源２００Ｂ・・・と記載する。同様に、複数の振り分け装置３００を互いに区別する必要がある場合は、振り分け装置３００Ａ、振り分け装置３００Ｂ・・・と記載する。そして、複数の処理装置４００を互いに区別する必要がある場合は、処理装置４００Ａ、処理装置４００Ｂ・・・と記載する。以下、複数のアプリケーション５００を互いに区別する必要がある場合は、アプリケーション５００Ａ、アプリケーション５００Ｂ…と記載する。
【００２８】
イベント生成源２００の数（すなわち数量）、振り分け装置３００の数、処理装置４００の数およびアプリケーション５００の数は、図１に示した数には限定されない。イベント生成源２００の数、振り分け装置３００の数、処理装置４００の数およびアプリケーション５００の数の大小関係は、図１に示した関係には限定されない。
【００２９】
イベント生成源２００は、イベントを生成する。イベントは、例えば、当該イベントを生成したイベント生成源２００の識別子（ＩＤ）と、測定値とを含む情報である。イベント生成源２００は、生成したイベントを、振り分け装置３００に送信する。イベント生成源２００がイベントを送信する送信先の振り分け装置３００は、負荷分散装置１００によりあらかじめ指定されている。図１に示す例では、イベント生成源２００Ａ、２００Ｂおよび２００Ｃは、振り分け装置３００Ａにイベントを送信することがあらかじめ指定されている。イベント生成源２００Ｄは、振り分け装置３００Ｂにイベントを送信することがあらかじめ指定されている。
【００３０】
振り分け装置３００は、１つまたは複数のイベント生成源２００からイベントを受信する。図１に示す例では、例えば振り分け装置３００Ａは、イベント生成源２００Ａ、２００Ｂおよび２００Ｃからそれぞれイベントを受信する。振り分け装置３００は、イベント生成源２００から受信したイベントを処理装置４００に送信する。以下、この処理を「イベントの転送」と記載する。
【００３１】
振り分け装置３００には、ルール設定装置６００により、あらかじめ振り分けルールが設定されている。振り分け装置３００は、イベントを受信すると、振り分けルールを参照する。振り分け装置３００は、イベントの内容と振り分けルールとに基づいて、イベントを処理装置４００に送信するか否かを設定する。また、振り分け装置３００は、複数の処理装置４００のうちいずれの処理装置４００にイベントを送信するかを決定する。また、振り分け装置３００は、負荷分散装置１００に、転送状況を送信する。転送状況の詳細は後述する。
【００３２】
処理装置４００は、振り分け装置３００からイベントを受信する。処理装置４００には、ルール設定装置６００により、あらかじめ処理ルールが設定されている。処理装置４００は、イベントを受信すると、処理ルールを参照してイベントを処理する。処理装置４００は、イベント処理結果をアプリケーション５００に送信する。
【００３３】
アプリケーション５００は、処理装置４００からイベント処理結果を受信する。アプリケーション５００は、受信したイベント処理結果に基づいて、アプリケーションの利用者にサービスを提供する。アプリケーション５００は、所望のイベント処理結果が生成されるような処理ルールを作成する。アプリケーション５００は、処理ルールを、ルール設定装置６００に送信する。
【００３４】
ルール設定装置６００は、アプリケーション５００から処理ルールを受信する。ルール設定装置６００は、複数の処理装置４００の間の負荷が均等あるいは略均等になるように、かつ、同じイベント生成源２００が生成したイベントが同じ処理装置４００で処理されるように、処理ルールを処理装置４００に設定する。ルール設定装置６００は、処理ルールを実行するために必要なイベントが、当該処理を実行する処理装置４００に適切に分配されるように、振り分けルールを振り分け装置３００に設定する。ルール設定装置６００は、例えば特許文献１が開示する方法によって、処理ルールを設定するとともに振り分けルールを設定する。
【００３５】
負荷分散装置１００は、振り分け装置３００から、転送状況を受信する。転送状況の詳細は後述する。負荷分散装置１００は、転送状況に基づいて、どのイベント生成源２００が、どの振り分け装置３００にイベントを送信すべきかを決定する。負荷分散装置１００は、当該決定に基づいて、イベント生成源２００についてあらかじめ指定された送信先を、振り分け装置３００のアドレスから、他の振り分け装置３００のアドレスに更新する。
【００３６】
図２は、図１に示すイベント生成源２００の構成を示すブロック図である。図２に示すように、イベント生成源２００は、センサー２１０と、送信先記憶部２２０と、送信部２３０とを有する。
【００３７】
センサー２１０は、イベントを生成する。センサー２１０が生成するイベントには、例えば、電力消費量の値、交通情報、気温の値、株価の変動または位置情報などが含まれる。
【００３８】
送信先記憶部２２０は、イベントの送信先アドレスを記憶している。送信先記憶部２２０には、負荷分散装置１００により、あらかじめイベントの送信先アドレスが書き込まれている。
【００３９】
送信部２３０は、送信先記憶部２２０が記憶しているアドレス宛に、センサー２１０が生成したイベントを送信する。
【００４０】
図３は、図１に示す振り分け装置３００の構成を示すブロック図である。図３に示すように、振り分け装置３００は、受信部３１０と、振り分けルール検索部３２０と、送信部３３０と、振り分けルール記憶部３４０と、フロー計測部３５０と、を有する。
【００４１】
受信部３１０は、イベント生成源２００からイベントを受信する。
【００４２】
振り分けルール検索部３２０は、受信部３１０が受信したイベントと、振り分けルール記憶部３４０が記憶している振り分けルールとのマッチング処理を行う。振り分けルール検索部３２０は、マッチングの結果に基づいて、受信したイベントを破棄するか、あるいは、受信したイベントを処理装置４００に送信するかを判断する。振り分けルール検索部３２０は更に、マッチングの結果に基づいて、複数の処理装置４００のうち、いずれの処理装置４００にイベントを送信するかを判断する。
【００４３】
送信部３３０は、振り分けルール検索部３２０の判断に基づいて、受信部３１０が受信したイベントを処理装置４００に送信する。
【００４４】
振り分けルール記憶部３４０は、振り分けルールを記憶する。振り分けルール記憶部３４０に振り分けルールが記憶されることを、以下、「振り分けルールが設定される」と記載する。振り分けルールは、ルール設定装置６００により設定される。
【００４５】
図４は、振り分けルール記憶部３４０が記憶している振り分けルールの一例を示す図である。図４に示す振り分けルールは、振り分け装置３００が受信したイベントに含まれる値（図４に示す例ではUser_IDの値）が１である場合、当該イベントを処理装置４００Ａに送信することを表す。同様に図４に示す振り分けルールは、振り分け装置３００が受信したイベントに含まれる値（User_IDの値）が例えば２、３、４である場合、当該イベントを処理装置４００Ｂ、４００Ｃ、４００Ｄに送信することを表す。
【００４６】
振り分けルール検索部３２０は、受信部３１０が受信したイベントにマッチングする振り分けルールを検索できなかった場合、当該イベントを破棄する。
【００４７】
例えば、受信部３１０が、イベントに含まれる値（User_IDの値）が５であるイベントを受信した場合を想定する。振り分けルール検索部３２０は、受信したイベントと、振り分けルール記憶部３４０が記憶している振り分けルールとのマッチング処理を行う。しかし、USer_IDの値が５であるイベントにマッチングする振り分けルールは、図４に示す振り分けルール記憶部３４０には記憶されていない。このような場合、振り分けルール検索部３２０は、当該イベントを破棄する。
【００４８】
図３を参照する説明に戻る。フロー計測部３５０は、転送状況を計測し、計測した転送情報を負荷分散装置１００に送信する。転送状況は、振り分け装置３００がイベントを転送する際に振り分け装置３００にかかる負荷を算出するために必要な情報である。転送状況は、受信状況または送信状況を含む情報である。受信状況は、振り分け装置３００が、特定のイベント生成源２００から受信したイベントの、数量または情報の量（データサイズ等）に関する情報である。送信状況は、振り分け装置３００が、特定のイベント生成源２００から受信し、処理装置４００に送信したイベントの、数量または情報の量に関する情報である。
【００４９】
なお、上記受信したイベント、または、送信したイベントに関する情報の量は、当該イベントのデータの量（データサイズ）を表す。本願においては、係る情報の量を単に「情報サイズ」と称する場合がある。
【００５０】
フロー計測部３５０は、自装置（振り分け装置３００）が受信するイベントの送信元である、１つまたは複数のイベント生成源２００のそれぞれについて、転送状況を計測する。
【００５１】
振り分け装置３００Ａが有するフロー計測部３５０Ａが計測する転送状況を例に、転送状況をより詳細に説明する。図１に示すように、振り分け装置３００Ａは、イベント生成源２００Ａ、２００Ｂおよび２００Ｃからそれぞれイベントを受信する。振り分け装置３００Ａが有するフロー計測部３５０Ａは、イベント生成源２００Ａから受信するイベント、イベント生成源２００Ｂから受信するイベントおよびイベント生成源２００Ｃから受信するイベントのそれぞれについて、転送状況を計測する。
【００５２】
図５は、フロー計測部３５０Ａが計測する転送状況の一例を示す図である。図５に示すように、転送状況は、振り分け装置３００を識別する情報（振り分け装置ＩＤ）と、イベントの送信元であるイベント生成源２００を識別する情報（イベント生成源ＩＤ）と、受信状況または送信状況と、が関連づけされた情報である。
【００５３】
図５に示す受信状況は、振り分け装置３００Ａが、所定の期間内に、イベント生成源２００Ａから２００回イベントを受信し、イベント生成源２００Ｂから１００回イベントを受信し、イベント生成源２００Ｃから５０回イベントを受信したことを示す。
【００５４】
受信状況は、所定の期間内にイベントを受信した回数に関する値であっても、所定の期間内に受信したイベントの情報サイズに関する値であってもよい。
【００５５】
図５に示す送信状況は、振り分け装置３００Ａが、所定の期間内に、イベント生成源２００Ａから受信したイベントを１００回送信し、イベント生成源２００Ｂから受信したイベントを５０回送信し、イベント生成源２００Ｃから受信したイベントを２５回送信したことを示す。
【００５６】
送信状況は、所定の期間内にイベントを送信した回数に関する値であっても、所定の期間内に送信したイベントの情報サイズに関する値であってもよい。
【００５７】
なお、振り分け装置３００が受信したイベントの回数と、送信したイベントの回数の差分は、振り分け装置３００が破棄したイベントの数量に対応する。
【００５８】
フロー計測部３５０は、たとえば、受信したイベントに含まれる、当該イベントを生成したイベント生成源２００の識別子を参照することにより、転送状況を計測する。
【００５９】
図６は、図１に示す処理装置４００の構成を示すブロック図である。図６に示すように、処理装置４００は、処理部４１０と、処理ルール記憶部４２０とを含む。処理部４１０は、振り分け装置３００からイベントを受信する。処理部４１０は、イベントを受信すると、処理ルール記憶部４２０が記憶している処理ルールを参照し、受信したイベントを処理ルールに基づいて処理する。処理部４１０は、イベント処理結果をアプリケーション５００に送信する。
【００６０】
処理ルール記憶部４２０は、処理ルールを記憶する。処理ルール記憶部４２０に処理ルールが記憶されることを、以下、「処理ルールが設定される」と記載する。処理ルールは、ルール設定装置６００により設定される。
【００６１】
処理装置４００に設定される処理ルールは、例えば、”処理ルール１：「受信したイベントに含まれる温度の値が３０℃（セ氏）を超えていたら、冷房（アプリケーション５００）に対して起動命令を出す」”というような単純なルールである。処理ルールは、処理装置４００に複合イベント処理（CEP: Complex Event Processing）の実行を要求するものであってもよい。複合イベント処理とは、複数のイベントのパターンを検出し、それら複数のイベントの情報に基づいて行う処理である。発明の理解を容易にするため、このような処理ルールの具体例を下記に２つ示す。なお、処理ルール２と処理ルール３において、DevIDは、イベント生成源２００の識別子を示す。
【００６２】
・処理ルール２：「IF (DevID=11) and (DevID=12) THEN 温度の平均値を算出」、
処理ルール２によれば、処理装置４００は、DevID=11のイベントとDevID=12のイベントとを受信したら、それらのイベントに含まれる温度の平均値を算出する。
【００６３】
・処理ルール３：「IF (DevID=11) → (DevID=12) within 10s THEN 電流値の平均値を算出」、
処理ルール３によれば、処理装置４００は、DevID=11のイベントとDevID=12のイベントとをこの順番で１０秒以内に受信したら、それらのイベントに含まれる電流値の平均値を算出する。
【００６４】
処理装置４００は、このような複雑な処理ルールに基づいた処理を実行するために、処理ルールとイベントとのマッチングの中間状態（ステート）を管理する機能を具備していてもよい。中間状態（ステート）とは、例えば処理ルール２または処理ルール３における、DevID=11のイベントを検出したあと、DevID=12のイベントの検出を待っているような状態である。
【００６５】
図７は、図１に示す負荷分散装置１００の構成を示すブロック図である。図７に示すように、負荷分散装置１００は、取得部１１０と、フローテーブル記憶部１２０と、算出部１３０と、決定部１４０と、更新部１５０とを備える。
【００６６】
取得部１１０は、振り分け装置３００から転送状況を取得する。
【００６７】
フローテーブル記憶部１２０は、取得部１１０が取得した転送状況を記憶する。
【００６８】
算出部１３０は、フローテーブル記憶部１２０を参照し、振り分け装置３００がイベントを転送する際に、振り分け装置３００に発生する負荷を算出する。振り分け装置３００の負荷を示す情報を、以降負荷情報と記載する。算出部１３０の動作の詳細は後述する。算出部１３０が算出する負荷は、例えば、振り分け装置３００のＣＰＵ（Central Processing Unit）負荷、メモリの負荷またはネットワーク負荷などである。
【００６９】
決定部１４０は、算出部１３０が算出した負荷に基づいて、どのイベント生成源２００がどの振り分け装置３００にイベントを送信すべきかを決定する。
【００７０】
更新部１５０は、決定部１４０の決定に基づいて、イベント生成源２００のイベント送信先である振り分け装置３００のアドレスを、他の振り分け装置３００のアドレスに更新する。具体的には、更新部１５０は、イベント生成源２００が有する送信先記憶部２２０に、当該他の振り分け装置３００のアドレスを更新する。
【００７１】
図８は、フローテーブル記憶部１２０が記憶しているフローテーブルの一例を示す図である。図８に示すように、係るフローテーブルには、それぞれの振り分け装置３００から受信した転送状況が記憶される。
【００７２】
図９は、算出部１３０が算出する負荷の一例を示す図である。発明の理解を容易にするため、ここではイベントの受信回数に所定の値（ここでは２５）を乗じた値を、振り分け装置３００にかかる負荷の値とする。負荷の値は、送信状況に基づいて算出されてもよい。
【００７３】
図９に示すように、振り分け装置３００Ａには、イベント生成源２００Ａから受信したイベントを転送するために、負荷の値として５０００なる負荷がかかっていることが算出される。振り分け装置３００Ａには、イベント生成源２００Ｂから受信したイベントを転送するために、負荷の値として２５００なる負荷がかかっていることが算出される。振り分け装置３００Ａには、イベント生成源２００Ｃから受信したイベントを転送するために、負荷の値として１２５０なる負荷がかかっていることが算出される。振り分け装置３００Ｂには、イベント生成源２００Ｄから受信したイベントを転送するために、負荷の値として１２５０なる負荷がかかっていることが算出される。
【００７４】
振り分け装置３００Ａにかかる負荷の値の合計は、イベント生成源２００Ａによる負荷の値と、イベント生成源２００Ｂによる負荷の値と、生成源２００Ｃによる負荷の値との和に基づいて算出される。すなわち、振り分け装置３００Ａにかかる負荷の値の合計は、５０００＋２５００＋１２５０＝８７５０と算出される。同様に、振り分け装置３００Ｂにかかる負荷の値の合計は、１２５０と算出される。
【００７５】
図１０は、負荷分散装置１００により負荷調整が行われた後の状況を説明するための図である。図９と図１０とを比較するとわかるように、イベント生成源２００Ｂから発生したイベントの送信先が、振り分け装置３００Ａから振り分け装置３００Ｂに更新されている。これにより、振り分け装置３００Ａにかかる負荷の合計は、イベント生成源２００Ａによる負荷と、イベント生成源２００Ｃによる負荷との合計、すなわち５０００＋１２５０＝６２５０と算出される。振り分け装置３００Ｂにかかる負荷の合計は、イベント生成源２００Ｂによる負荷と、イベント生成源２００Ｄによる負荷との合計、すなわち、２５００＋１２５０＝３７５０と算出される。
【００７６】
図９に示す負荷調整前の状況と比較して、図１０に示す負荷調整後の状況は、振り分け装置３００Ａと振り分け装置３００Ｂとの負荷が平準化されている。
【００７７】
図１１は、負荷分散装置１００のハードウェア構成の一例を示す図である。
【００７８】
図１１に示した負荷分散装置（コンピュータ）１００のハードウェアは、ＣＰＵ１、メモリ２、記憶装置３、通信インタフェース（Ｉ／Ｆ）４を備える。負荷分散装置１００は、入力装置５または出力装置６を備えていてもよい。負荷分散装置１００の機能は、例えばＣＰＵ１が、メモリ２に読み出されたコンピュータプログラム（ソフトウェアプログラム、以下単に「プログラム」と記載する）を実行することにより実現される。実行に際して、ＣＰＵ１は、通信インタフェース４、入力装置５および出力装置６を適宜制御する。
【００７９】
尚、本実施形態および後述する各実施形態を例として説明される本発明は、係るプログラムが格納されたコンパクトディスク等の不揮発性の記憶媒体８によっても構成される。記憶媒体８が格納するプログラムは、例えばドライブ装置７により読み出される。
【００８０】
負荷分散装置１００が実行する通信は、例えばＯＳ（Operating System）が提供する機能を使ってアプリケーションプログラムが通信インタフェース４を制御することによって実現される。入力装置５は、例えばキーボード、マウスまたはタッチパネルである。出力装置６は、例えばディスプレイである。負荷分散装置１００は、２つ以上の物理的に分離した装置が有線または無線で接続されることによって構成されていてもよい。
【００８１】
図１１に示すハードウェア構成例は、後述する各実施形態にも適用可能である。なお、負荷分散装置１００は専用の装置であってもよい。
【００８２】
次に、第１の実施形態にかかる負荷分散装置１００の動作を、図面を用いて説明する。
【００８３】
図１２は、第１の実施形態にかかる負荷分散装置１００の動作の一例を示すフローチャートである。取得部１１０は、個々の振り分け装置（３００Ａ、３００Ｂ…）から転送状況を取得する（Ｓ１０１）。取得部１１０は、取得した転送状況を、フローテーブル記憶部１２０に記憶する（Ｓ１０２）。算出部１３０は、フローテーブル記憶部１２０を参照し、イベントを転送する際に振り分け装置３００に発生する負荷を算出する（Ｓ１０３）。決定部１４０は、算出部１３０が算出した負荷に基づいて、どのイベント生成源２００がどの振り分け装置３００にイベントを送信するかを決定する（Ｓ１０４）。更新部１５０は、決定部１４０の決定に基づいて、イベント生成源２００についてあらかじめ指定されていた送信先である振り分け装置３００のアドレスを、他の振り分け装置３００のアドレスに更新する（Ｓ１０５）。
【００８４】
図１２を用いて説明した負荷分散装置１００の動作は、あくまで一例に過ぎない。例えば、図１２に示すフローチャートにより表される処理の一部について、実行される順序の一部を、可能な範囲で入れ替えてもよい。
【００８５】
図１３は、図７に示す算出部１３０の動作の一例を示すフローチャートである。算出部１３０は、定期的に、あるいは、決定部１４０からの要求を受け付けて、負荷の算出を開始する（Ｓ２０１）。算出部１３０は、負荷算出の対象となる振り分け装置３００iに着目する（Ｓ２０２）。算出部１３０は、振り分け装置３００iが受信するイベントの送信元であるイベント生成源２００jに着目する（Ｓ２０３）。算出部１３０は、フローテーブル記憶部１２０を参照し、振り分け装置３００iがイベント生成源２００jから受信したイベントに関する行を読み出す。算出部１３０は、読み出した行に基づいて、振り分け装置３００iがイベント生成源２００jから受信したイベントを転送する際にかかる負荷を算出する（Ｓ２０４）。算出部１３０は、振り分け装置３００iが受信したイベントの送信源である全てのイベント生成源２００について、負荷を算出する（Ｓ２０５）。算出部１３０は、フローテーブル記憶部１２０が記憶している全ての振り分け装置３００に対して負荷を算出する（Ｓ２０６）。
【００８６】
図１３を用いて説明した算出部１３０の動作は、あくまで一例に過ぎない。例えば、どの振り分け装置３００の負荷が重いか予め分かっている場合には、算出部１３０は、最も負荷が重い振り分け装置３００の負荷のみ算出する、としてもよい。
【００８７】
図１４は、図７に示す決定部１４０の動作の一例を説明するフローチャートである。
【００８８】
決定部１４０は、定期的に、または負荷調整の要求を受けて、負荷調整の動作を開始する（Ｓ３０１）。決定部１４０は、現状、振り分け装置３００の負荷が十分に分散されているかどうかを判断する（Ｓ３０２）。ここで、Ｓ３０２のステップにおける判断基準としては、たとえば、最も負荷が重い振り分け装置３００の負荷が、所定の閾値を超えているか否かが考えられる。また、最も負荷が重い振り分け装置３００の負荷と、最も負荷が軽い振り分け装置３００の負荷との差分が、所定の閾値を超えているか否かをＳ３０２のステップにおける判断基準とすることも考えられる。上記２つの条件が共に満たされていることを、Ｓ３０２のステップにおける判断基準としてもよい。
【００８９】
決定部１４０が、現状、負荷が十分に分散されていないと判断した場合（Ｓ３０２においてＮＯ）、決定部１４０は、負荷調整の際の基準値を算出する（Ｓ３０３）。負荷調整の際の基準値は例えば、以下のように算出される。
【００９０】
（基準値）＝（最も負荷が重い振り分け装置の負荷＋最も負荷が軽い振り分け装置の負荷）／２。ここで、"／"は除算を示す記号である。
【００９１】
決定部１４０は、最も負荷が重い振り分け装置３００について、当該振り分け装置３００が受信するイベントの送信元であるイベント生成源２００のそれぞれに対して、当該イベント生成源２００から受信するイベントを処理装置４００に転送する負荷を算出する（Ｓ３０４）。Ｓ３０４のステップにおいて、決定部１４０は、算出部１３０により既に算出された値を取得してもよいし、算出部１３０に算出要求を出してもよい。
【００９２】
決定部１４０は、最も負荷が重い振り分け装置３００において、最も重い負荷を発生させるイベント生成源の負荷の値が、Ｓ３０３で算出した基準値の値を超えているか否かを判定する（Ｓ３０５）。Ｓ３０５においてＮＯである場合、決定部１４０は、当該最も重い負荷を発生させるイベント生成源のイベント送信先を、最も負荷が重い振り分け装置３００のアドレスから、最も負荷が軽い振り分け装置３００のアドレスへと更新する（Ｓ３０６）。
【００９３】
なお、Ｓ３０２においてＹＥＳである場合、決定部１４０は一定時間待機する（Ｓ３０７）。また、Ｓ３０５においてＹＥＳである場合、決定部１４０は負荷調整の動作を終了する。
【００９４】
図１４を用いて説明した決定部１４０の動作は、あくまで決定部１４０の動作の一例に過ぎない。
【００９５】
第１の実施形態にかかる負荷分散装置１００が奏する効果を説明する。
【００９６】
第１の実施形態にかかる負荷分散装置１００は、取得部１１０と更新部１５０とを備える。取得部１１０は、複数のイベント生成源２００のうち特定のイベント生成源（例えば２００Ｂ）から振り分け装置（例えば３００Ａ）が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況を取得する。更新部１５０は、受信状況に基づいて、振り分け装置３００がイベントを受信する際に当該振り分け装置３００にかかる負荷が、複数の振り分け装置３００の間で平準化されるように、特定のイベント生成源（例えば２００Ｂ）に関して指定された振り分け装置（３００Ａ）を、他の振り分け装置（例えば３００Ｂ）に更新する。
【００９７】
または、取得部１１０は、複数のイベント生成源２００のうち特定のイベント生成源（例えば２００Ｂ）から振り分け装置（例えば３００Ａ）が所定期間内に受信して処理装置４００に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する。更新部１５０は、送信状況に基づいて、振り分け装置３００がイベントを送信する際に当該振り分け装置３００にかかる負荷が、複数の振り分け装置３００の間で平準化されるように、特定のイベント生成源（例えば２００Ｂ）に関して指定された振り分け装置（３００Ａ）を、他の振り分け装置（例えば３００Ｂ）に更新する。
【００９８】
かかる構成により、第１の実施形態にかかる負荷分散装置１００は、イベント生成源２００が振り分け装置３００に直接イベントを送信しても、振り分け装置３００の負荷分散を実現できる。言い換えると、第１の実施形態にかかる負荷分散装置１００は、イベント生成源２００と振り分け装置３００との間に「特別の装置」を設けなくても、振り分け装置の負荷分散を実現できる。
【００９９】
「特別の装置」とは例えば、特許文献１が開示するコンテキスト非依存振り分け器７０００のような装置である。特許文献１が開示するイベント処理システムは、イベント生成源２００に相当する構成と振り分け装置３００に相当する構成との間に、コンテキスト非依存振り分け器７０００を含む。特許文献１が開示するコンテキスト非依存振り分け器７０００に相当する構成を、第１の実施形態にかかるイベント処理システム１０００に適用した場合、イベント処理システムのリアルタイム性が損なわれてしまうおそれがある。なぜなら、イベント生成源２００がイベントを送信してからイベント処理結果がアプリケーション５００に届くまでの時間は、コンテキスト非依存振り分け器７０００がイベントの転送処理に費やす時間の分だけ遅延するからである。
【０１００】
さらに、コンテキスト非依存振り分け器７０００は、場合によっては、それ自身イベントが集中し、負荷が重くなることも予想される。そのため、コンテキスト非依存振り分け器７０００自身の負荷が重くなるおそれがあり、コンテキスト非依存振り分け器７０００のイベント転送処理がさらに遅延するおそれがあった。
【０１０１】
これに対して、第１の実施形態にかかる負荷分散装置１００は、このような、イベント生成源２００と振り分け装置３００との間の「特別の装置」に起因する遅延を起こすことなく、振り分け装置３００の負荷分散を実現できる。
【０１０２】
従って、第１の実施形態にかかる負荷分散装置１００は、例えば、大量の車の位置情報、または、大量の携帯端末の位置情報など、連続的に大量に発生するイベントを、リアルタイムで処理するイベント処理システム１０００の負荷分散に利用することができる。
【０１０３】
また、第１の実施形態にかかる負荷分散装置１００によれば、イベント生成源２００はあらかじめ指定された送信先にイベントを送信するだけで、振り分け装置３００の負荷分散を実現できる。よって、イベント生成源２００自身は振り分け装置３００の負荷分散を意識する必要がない。よって、イベント生成源２００が負荷分散を実現するための高度な演算能力を具備していなくても、振り分け装置３００の負荷分散を実現することができる。
【０１０４】
＜第２の実施形態＞
次に、上述した第１の実施形態に係る負荷分散装置１００およびイベント処理システム１０００を基本とする第２の実施形態について説明する。
【０１０５】
図１５は、第２の実施形態にかかる負荷分散装置１０１を含むイベント処理システム１００１の構成を示すブロック図である。図１に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図１５に示すように、第２の実施形態にかかるイベント処理システム１００１は、負荷分散装置１００に代えて負荷分散装置１０１を含む。また、第２の実施形態にかかるイベント処理システム１００１は、送信先管理装置７００を更に含む。また、第２の実施形態にかかるイベント処理システム１００１は、イベント生成源２００に代えてイベント生成源２０１を含む。
【０１０６】
図１６は、図１５に示す負荷分散装置１０１の構成を示すブロック図である。
【０１０７】
負荷分散装置１０１は、決定部１４０に代えて決定部１４１を備え、更新部１５０に代えて更新部１５１を備え、対応関係記憶部１６０を更に備える。
【０１０８】
決定部１４１は、例えば図１４に示したような方法で、イベント生成源２０１と、イベントの送信先である振り分け装置３００との対応関係を決定する。
【０１０９】
対応関係記憶部１６０は、決定部１４１が決定した対応関係を記憶する。
【０１１０】
更新部１５１は、対応関係記憶部１６０が記憶する対応関係を、送信先管理装置７００に上書き（更新）する。
【０１１１】
図１７は、図１５に示す送信先管理装置７００が記憶する情報の一例を説明する図である。送信先管理装置７００は、イベント生成源２０１と前記イベント生成源２０１が生成するイベントの送信先である振り分け装置３００との対応関係を記憶する。図１７に示す情報は、イベント生成源２０１Ａが、生成したイベントを振り分け装置３００Ａに送信することを示す。また、図１７に示す情報は、イベント生成源２０１Ｂが、生成したイベントを振り分け装置３００Ｂに送信することを示す。また、図１７に示す情報は、イベント生成源２０１Ｃが、生成したイベントを振り分け装置３００Ｃに送信することを示す。さらに、図１７に示す情報は、イベント生成源２０１Ｄが、生成したイベントを振り分け装置３００Ｄに送信することを示す。
【０１１２】
送信先管理装置７００は、イベント生成源２０１からの要求に応じて、当該イベント生成源２０１がイベントを送信すべき振り分け装置３００のアドレスを返答する。
【０１１３】
図１８は、図１５に示すイベント生成源２０１の構成を示すブロック図である。図１８に示すように、イベント生成源２０１は、送信先記憶部２２０に代えて、送信先取得部２４０を有する。送信先取得部２４０は、送信先管理装置７００のアドレスを記憶している。送信先取得部２４０は、イベントの送信先を、送信先管理装置７００に問い合わせる。送信先取得部２４０は、送信先管理装置７００から取得したアドレスに、生成したイベントを送信する。
【０１１４】
第２の実施形態にかかる負荷分散装置１０１が奏する効果を説明する。
【０１１５】
第２の実施形態にかかる負荷分散装置１０１は、受信状況に基づいて、イベント生成源２０１と当該イベント生成源２０１が生成するイベントの送信先である振り分け装置３００との対応関係を決定する決定部１４１と、決定された対応関係に基づいて、送信先管理装置７００が記憶している情報を更新する更新部１５１と、を備える。
【０１１６】
かかる構成により、第２の実施形態にかかる負荷分散装置１０１は、イベント生成源２０１が記憶する情報を直接書き換えることなく、振り分け装置の負荷分散を実現することができる。
【０１１７】
第２の実施形態にかかる負荷分散装置１０１は、送信先管理装置７００が記憶している情報を更新するだけで、すべてのイベント生成源２０１のイベントの送信先を一括で更新できる。よって、第２の実施形態にかかる負荷分散装置１０１は、イベント処理システム１００１に含まれるイベント生成源２０１の数量が多い場合には特に、イベント生成源２０１のイベント送信先を更新する手間を省くことができる。
【０１１８】
＜第３の実施形態＞
次に、上述した第１の実施形態を基本とする第３の実施形態について説明する。第３の実施形態は、第２の実施形態に対しても適用可能である。
【０１１９】
図１９は、第３の実施形態にかかる負荷分散装置１０２を含むイベント処理システム１００２の構成を示すブロック図である。図１に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図１９に示すように、第３の実施形態にかかるイベント処理システム１００２は、負荷分散装置１００に代えて負荷分散装置１０２を含み、振り分け装置３００に代えて振り分け装置３０２を含む。
【０１２０】
図２０は、図１９が示す振り分け装置３０２の構成を示すブロック図である。図３に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図２０に示すように、第３の実施形態にかかる振り分け装置３０２は、フロー計測部３５０に代えてフロー計測部３５２を有し、処理量計測部３６０と、処理量ウェイト計算部３７０とを更に有する。
【０１２１】
フロー計測部３５２は、イベントの送信元であるイベント生成源２００ごとに、イベント生成源２００から受信したイベントの転送状況を計測する。フロー計測部３５２は、計測したイベントの転送状況を、負荷分散装置１０２に送信する。
【０１２２】
図２１は、振り分け装置３０２Ａが有するフロー計測部３５２Ａが計測する転送状況の一例を示す図である。図２１に示すように、転送状況は、振り分け装置３０２を識別する情報、イベントの送信元であるイベント生成源２００を識別する情報、受信状況および送信状況を含む情報である。受信状況は、振り分け装置３０２が所定の期間内にイベントを受信した回数に関する値を含む。受信情報はさらに、振り分け装置３０２が所定の期間内に受信したイベントの情報サイズに関する値を含んでいてもよい。送信状況は、振り分け装置３０２が所定の期間内にイベントを送信した回数に関する値を含む。送信状況はさらに、振り分け装置３０２が所定の期間内に送信したイベントの情報サイズに関する値を含んでいてもよい。転送状況はマッチング率を含んでいてもよい。マッチング率は、振り分け装置３０２がイベント生成源２００から受信したイベントの数量に対する、処理装置４００に送信したイベントの数量の割合である。
図２１に示す転送状況は、振り分け装置３０２Ａが、所定の期間内にイベント生成源２００Ａから２００回イベントを受信し、所定の期間内にイベント生成源２００Ａから受信したイベントの情報サイズの総量は５０ＭＢ(メガバイト)であることを示す。また、図２１に示す転送状況は、振り分け装置３０２Ａが、所定の期間内にイベント生成源２００Ａから受信したイベントを１００回、処理装置４００に送信したことを示す。イベント生成源２００Ａから受信したイベントのマッチング率は、１００×（１００（送信回数）／２００（受信回数））＝５０％である。ここで記号×は乗算を表す記号である。
【０１２３】
図２１に示す転送状況は、振り分け装置３０２Ａが、所定の期間内にイベント生成源２００Ｂから１００回イベントを受信し、所定の期間内にイベント生成源２００Ｂから受信したイベントの情報サイズの総量は３０ＭＢであることを示す。また、図２１に示す転送状況は、振り分け装置３０２Ａが、所定の期間内にイベント生成源２００Ｂから受信したイベントを１００回、処理装置４００に送信したことを示す。イベント生成源２００Ｂから受信したイベントのマッチング率は、１００×（１００（送信回数）／１００（受信回数））＝１００％である。
【０１２４】
図２１に示す転送状況は、振り分け装置３０２Ａは、所定の期間内にイベント生成源２００Ｃから５０回イベントを受信し、所定の期間内にイベント生成源２００Ｃから受信したイベントの情報サイズの総量１５ＭＢであることを示す。また、図２１に示す転送状況は、振り分け装置３０２Ａが、所定の期間内にイベント生成源２００Ｃから受信したイベントを０回、処理装置４００に送信したことを示す。イベント生成源２００Ｃから受信したイベントのマッチング率は、１００×（０（送信回数）／５０（受信回数））＝０％である。
【０１２５】
図２０を参照する説明に戻る。処理量計測部３６０は、受信部３１０がイベントを受信する際にかかる１イベントあたりの処理量を計測する。処理量計測部３６０は、受信部３１０がイベントを受信する際にかかる単位情報サイズあたりの処理量を計測してもよい。
【０１２６】
処理量計測部３６０は、さらに、振り分けルール検索部３２０が、イベントと振り分けルールとのマッチングによりイベントの送信先を決定する処理を行う際にかかる、１イベントあたりの処理量を計測する。
【０１２７】
処理量計測部３６０は、さらに、送信部３３０がイベントを送信する際にかかる１イベント当たりの処理量を計測する。処理量計測部３６０は、送信部３３０がイベントを送信する際にかかる単位情報サイズあたりの処理量を計測してもよい。
【０１２８】
処理量計測部３６０は、例えばSocket API(Application Programming Interface)を呼び出し、前後の時刻を比較するなどの方法により、上記処理量を計測することができる。
【０１２９】
処理量ウェイト計算部３７０は、処理量計測部３６０が計測した１イベントあたり、または単位情報サイズあたりの処理量を、負荷分散装置１０２に送信する。
【０１３０】
図２２は、図１９に示す負荷分散装置１０２の構成を示すブロック図である。図７に示した構成と実質的に同一の構成には同一の符号が付されているので説明を省略する。図２２に示すように、第３の実施形態にかかる負荷分散装置１０２は、算出部１３０に代えて算出部１３２を備える。
【０１３１】
算出部１３２は、振り分け装置３０２から、１イベントあたり受信する際にかかる負荷（以下、イベント単位受信負荷と記載）と、１イベントあたりルール検索にかかる負荷（以下、イベント単位検索負荷と記載）、および、１イベントあたり送信する際にかかる負荷（以下、イベント単位送信負荷と記載）を取得する。
【０１３２】
算出部１３２は、受信状況と送信状況との両方を用いて、振り分け装置３０２の負荷を算出する。
【０１３３】
振り分け装置３０２がイベント生成源２００から処理装置４００へとイベントを転送する際に、振り分け装置３０２に発生する負荷は、下記の３つに分けて考えられる。
【０１３４】
１）イベントを受信する際にかかる負荷、
２）イベントと振り分けルールとをマッチングする際にかかる負荷、
３）イベントを送信する際にかかる負荷。
【０１３５】
算出部１３２は、振り分け装置３０２の負荷を、例えば以下のように算出する。
【０１３６】
（振り分け装置３０２が特定のイベント生成源２００から受信したイベントを転送する際に、振り分け装置３０２にかかる負荷）＝受信イベント数×（イベント単位受信負荷＋イベント単位検索負荷）＋送信イベント数×（イベント単位送信負荷）
具体例を用いて説明する。イベント単位受信負荷＝１０、イベント単位検索負荷＝１０、イベント単位送信負荷＝１０とする。図２１に示した転送状況に基づいて、算出部１３２が振り分け装置３０２Ａの負荷を算出すると、下記のようになる。
【０１３７】
振り分け装置３０２Ａが、イベント生成源２００Ａから受信したメールを処理装置４００に転送する負荷（負荷Ａ）：負荷Ａ＝２００×（１０＋１０）＋１００×（１０）＝５０００。
【０１３８】
振り分け装置３０２Ａが、イベント生成源２００Ｂから受信したメールを処理装置４００に転送する負荷（負荷Ｂ）：負荷Ｂ＝１００×（１０＋１０）＋１００×（１０）＝３０００。
【０１３９】
振り分け装置３０２Ａが、イベント生成源２００Ｃから受信したメールを処理装置４００に転送する負荷（負荷Ｃ）：負荷Ｃ＝５０×（１０＋１０）＋０×（１０）＝１０００。
【０１４０】
なお、算出部１３２は、転送状況に含まれる受信状況または送信状況と、マッチング率とに基づいて、振り分け装置３０２の負荷を算出してもよい
算出部１３２は例えば、振り分け装置３０２の負荷を、以下のように算出してもよい。
【０１４１】
（振り分け装置３０２が特定のイベント生成源２００から受信したイベントを転送する際に、振り分け装置３０２にかかる負荷）=(ルールマッチ時の処理負荷×ルールマッチ率+ルールアンマッチ時の処理負荷×(1-ルールマッチ率))×イベント量。
【０１４２】
決定部１４０は、このように算出された負荷に基づいて、どのイベント生成源２００がどの振り分け装置３０２にイベントを送信すべきかを決定する。
【０１４３】
第３の実施形態にかかる負荷分散装置１０２が奏する効果を説明する。
【０１４４】
第３の実施形態にかかる負荷分散装置１０２は、受信状況および送信状況に基づいて、振り分け装置３０２の負荷を算出する算出部１３２を備える。
【０１４５】
かかる構成により第３の実施形態にかかる負荷分散装置１０２は、第１の実施形態にかかる負荷分散装置１００と比較して、より精度の高い負荷分散を実現することができる。その理由は、算出部１３２が、振り分け装置３０２の負荷を、振り分け装置３０２が受信するイベントの送信元であるイベント生成源２００ごとに、より高い精度で算出するからである。また、決定部１４０がその高い精度で算出された負荷に基づいて、どのイベント生成源２００がどの振り分け装置３０２にイベントを送信すべきかを決定するからである。
【０１４６】
振り分け装置３０２は、イベント生成源２００から受信したイベントのうち、振り分けルールにマッチングしたイベントは処理装置４００に送信し、振り分けルールにマッチングしないイベントは破棄する。振り分け装置３０２が受信したイベントを破棄する場合と、振り分け装置３０２が受信したイベントを転送する場合とで、振り分け装置３０２が受信するイベントが同一であっても、振り分け装置３０２にかかる負荷は互いに異なる。
【０１４７】
なぜならば、振り分け装置３０２がイベントを転送する場合、振り分け装置３０２には、イベント受信処理にかかる負荷、ルールマッチング処理にかかる負荷、および、イベント送信処理にかかる負荷の３つの負荷がかかる。それに対し、振り分け装置３０２がイベントを破棄する場合、振り分け装置３０２には、イベントを受信する負荷と、ルールマッチング処理にかかる負荷の２つの負荷しかかからないためである。
【０１４８】
このように、第３の実施形態にかかる負荷分散装置１０２は、算出部１３２が、受信状況と送信状況との両方を考慮して振り分け装置３０２の負荷を算出するので、より精度の高い負荷分散を実現することができる。言い換えると、第３の実施形態にかかる負荷分散装置１０２は、イベントのマッチング率を考慮して振り分け装置３０２の負荷を算出するので、より精度の高い負荷分散を実現することができる。
【０１４９】
[第３の実施形態の変形例その１]
振り分け装置３０２が有する振り分けルール記憶部３４０は、例えば以下のような振り分けルールを記憶していても良い。
【０１５０】
振り分けルール：振り分け装置３０２が受信したイベントに含まれる緯度と経度の値が、所定の範囲内にある場合、振り分け装置３０２は、当該イベントを処理装置４００Ｂおよび処理装置４００Ｃに送信する。
【０１５１】
このような振り分けルールによって、振り分け装置３０２は、イベント送信源２００から受信した一つのイベントを、複数の処理装置４００に送信する。このような振り分けルールが設定されている場合、振り分け装置３０２が、受信した１つのイベントをいくつの処理装置４００に転送するかに応じて、振り分け装置３０２にかかる負荷は異なる。
【０１５２】
このような振り分けルールが振り分け装置３０２に設定されていても、算出部１３２は、振り分け装置３０２の負荷を高い精度で算出することができる。その理由は、算出部１３２は、振り分け装置３０２の受信状況と送信状況との両方を考慮して振り分け装置３０２の負荷を算出するからである。
【０１５３】
[第３の実施形態の変形例その２]
算出部１３２は、振り分け装置３０２から、単位情報サイズあたり受信する際にかかる負荷（以下、情報サイズ単位受信負荷と記載）と、単位情報サイズあたり送信する際にかかる負荷（以下、情報サイズ単位送信負荷と記載）を取得してもよい。
【０１５４】
算出部１３２は、例えば下記に示すような方法で、振り分け装置３０２の負荷を算出してもよい。
【０１５５】
（振り分け装置の負荷）＝（受信したイベントの情報サイズ×情報サイズ単位受信負荷）＋（受信したイベント数×イベント単位検索負荷）＋（送信したイベントの情報サイズ×情報サイズ単位送信負荷）。
【０１５６】
振り分け装置３０２の受信処理および送信処理にかかる負荷は、イベント数よりもむしろイベントの情報サイズに依存する場合が多い。算出部１３２がこのように振り分け装置３０２の負荷を算出することで、第３の実施形態にかかる負荷分散装置１０２は、さらに精度の高い負荷分散を実現できる。
【０１５７】
＜第４の実施形態＞
次に、上述した第１の実施形態を基本とする第４の実施形態について説明する。第４の実施形態は、第２の実施形態または第３の実施形態に対しても適用可能である。
【０１５８】
図２３は、第４の実施形態にかかる負荷分散装置１０３を含むイベント処理システム１００３の構成を示すブロック図である。図１に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図２３に示すように、第４の実施形態にかかるイベント処理システム１００３は、負荷分散装置１００に代えて負荷分散装置１０３を含み、振り分け装置３００に代えて振り分け装置３０３を含む。
【０１５９】
図２４は、図２３に示す振り分け装置３０３の構成を示すブロック図である。図３に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図２４に示すように、第４の実施形態にかかる振り分け装置３０３は、第１の実施形態にかかる振り分け装置３００に加えて、算出部３８０を更に有する。
【０１６０】
算出部３８０は、第１の実施形態にかかる算出部１３０または第３の実施形態にかかる算出部１３２に相当する機能を備える。算出部３８０は、フロー計測部３５０から転送情報を取得し、転送情報に基づいて振り分け装置３０３の負荷を算出し、負荷を示す負荷情報を負荷分散装置１０３に送信する。
【０１６１】
図２５は、図２３に示す負荷分散装置１０３の構成を示すブロック図である。図７に示した構成と実質的に同一の構成には同一の符号が付されているので説明は省略する。図２５に示すように、第４の実施形態にかかる負荷分散装置１０３は、取得部１１０に代えて取得部１１３を備える。
【０１６２】
取得部１１３は、複数の振り分け装置３０３のそれぞれから、負荷情報を取得する。決定部１４０は、取得部１１３が取得した負荷情報に基づいて、どのイベント生成源２００がどの振り分け装置３０３にイベントを送信すべきかを決定する。
【０１６３】
第４の実施形態にかかる負荷分散装置１０３が奏する効果を説明する。
【０１６４】
第４の実施形態にかかる負荷分散装置１０３は、複数のイベント生成源２００のうち特定のイベント生成源（例えば２００Ｂ）から所定期間内に受信するイベントを処理装置４００に転送する際に、振り分け装置３０３に発生する負荷を表す負荷情報を取得する取得部１１３と、負荷情報に基づいて、当該特定のイベント生成源（２００Ｂ）に対してあらかじめ指定されていた振り分け装置（３０３Ａ）を、他の振り分け装置（例えば３０３Ｂ）に更新する更新部１５０とを備える。
【０１６５】
かかる構成により、第４の実施形態にかかる負荷分散装置１０３は、第１の実施形態にかかる負荷分散装置１００と同様の効果を奏することができる。
【０１６６】
＜第５の実施形態＞
次に、上述した第１の実施形態を基本とする第５の実施形態について説明する。第５の実施形態は、第２ないし第４の実施形態に対しても適用可能である。
【０１６７】
図２６は、第５の実施形態にかかる負荷分散装置１０４を含むイベント処理システム１００４の構成を示すブロック図である。
【０１６８】
イベント処理システム１００４は、図２６に示すように、複数のイベント生成源２０４と、複数の振り分け装置３０４と、処理装置４０４と、負荷分散装置１０４と、を含む。
【０１６９】
イベント生成源２０４は、イベントを生成し、生成したイベントをあらかじめ指定された送信先である振り分け装置３０４に送信する。
【０１７０】
振り分け装置３０４は、１つまたは複数の前記イベント生成源からイベントを受信し、受信したイベントを処理装置４０４に送信する。
【０１７１】
処理装置４０４は、振り分け装置３０４からイベントを受信し、前記イベントを処理する。
【０１７２】
負荷分散装置１０４は、取得部１１４と、更新部１５４とを備える。
【０１７３】
取得部１１４は、複数のイベント生成源（２０４Ａ〜２０４Ｄ）のうち特定のイベント生成源（例えば２０４Ｂ）から振り分け装置（例えば３０４Ａ）が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況を取得する。
【０１７４】
更新部１５４は、受信状況に基づいて、特定のイベント生成源（２０４Ｂ）についてあらかじめ指定されていた送信先である振り分け装置（３０４Ａ）を、他の振り分け装置（例えば３０４Ｂ）に更新する。
【０１７５】
第５の実施形態にかかる負荷分散装置１０４が奏する効果を説明する。
【０１７６】
第５の実施形態にかかる負荷分散装置１０４は、イベント処理システムにおいて、適切な負荷分散を実現することができる。
【０１７７】
[各実施形態の変形例]
アプリケーション５００は、イベントの処理結果を受けて物理的な動作を行うアクチュエーター(Actuator)であっても構わない。アプリケーション５００は、コンピュータにインストールされたソフトウェアであってもよい。
【０１７８】
イベント生成源２００、振り分け装置３００、処理装置４００、アプリケーション５００、ルール設定装置６００、送信先管理装置７００、負荷分散装置１００は、それぞれ専用の装置であってもよいし、ソフトウェアによって実現される機能であってもよい。
【０１７９】
振り分けルール記憶部３４０は、必ずしも振り分け装置３００の内部に実装される必要はない。振り分け装置３００と振り分けルール記憶部３４０とが互いに対応していれば、振り分けルール記憶部３４０は振り分け装置３００とネットワークを介して接続された装置に実装されていてもよい。
【０１８０】
処理ルール記憶部４２０は、必ずしも処理装置４００の内部に実装される必要はない。処理装置４００と処理ルール記憶部４２０とが互いに対応していれば、処理ルール記憶部４２０は処理装置４００とネットワークを介して接続された装置に実装されていてもよい。
【０１８１】
フローテーブル記憶部１２０は、必ずしも負荷分散装置１００の内部に実装される必要はない。フローテーブル記憶部１２０は、負荷分散装置１００とネットワークを介して接続された装置に実装されていてもよい。
【０１８２】
対応関係記憶部１６０は、必ずしも負荷分散装置１０１の内部に実装される必要はない。対応関係記憶部１６０は、負荷分散装置１０１とネットワークを介して接続された装置に実装されていてもよい。
【０１８３】
イベント生成源２００が有する送信先記憶部２２０には、複数の振り分け装置３００のアドレスが記憶されていてもよい。また、対応関係記憶部１６０または送信先管理装置７００が記憶する対応関係において、イベント生成源２００と振り分け装置３００との関係は、１対多数の関係であっても構わない。
【０１８４】
取得部１１０は、必ずしも振り分け装置３００から転送状況を直接取得する必要はない。例えば、振り分け装置３００のオペレータが、それぞれの振り分け装置３００から、転送状況を手動で、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等に収集したとする。取得部１１０は、当該ＵＳＢメモリから転送状況を読み込んでもよい。取得部１１０は、負荷分散装置１００が備える図示しない記憶装置から転送状況を読み込んでもよい。取得部１１０は、振り分け装置３００から転送状況を受動的に受信してもよいし、定期的に振り分け装置３００から転送状況をプルしてもよい。
【０１８５】
図２７は、振り分けルールの具体例を示す図である。図２７に示す振り分けルールによると、振り分けルール検索部３２０は、振り分け装置３００が受信したイベントに含まれる位置情報に応じて、当該イベントの送信先の処理装置４００を決定する。例えばイベント生成源２００が、個人が持つ携帯端末である場合、当該個人が携帯端末を持って移動することにより、当該携帯電話が送信する携帯端末が生成するイベントに含まれる位置情報は、時々刻々と変化する。このような場合、振り分け装置３００が携帯端末から受信するイベントのマッチング率も時々刻々と変化する。このような場合、複数の振り分け装置３００の間で、定期的な負荷調整が必要となる。負荷分散装置１００は、このようなイベント処理システム１０００においても適切な負荷分散を実現することができる。
【０１８６】
上述の変形例は、他の実施形態にも適用可能である。
【０１８７】
各ブロック図に示したブロック分けは、説明の便宜上から表された構成である。各実施形態を例に説明された本発明は、その実装に際して、各ブロック図に示した構成には限定されない。
【０１８８】
以上、本発明を実施するための形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【０１８９】
この出願は、２０１３年６月１３日に出願された日本出願特願２０１３−１２４８１３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１９０】
本発明は、イベント処理システムの負荷分散に用いることができる。
【符号の説明】
【０１９１】
１  ＣＰＵ
２  メモリ
３  記憶部
４  通信インタフェース
５  入力部
６  出力部
７  ドライブ装置
８  記憶媒体
１００  負荷分散装置
１０１  負荷分散装置
１０２  負荷分散装置
１０３  負荷分散装置
１０４  負荷分散装置
１１０  取得部
１１３  取得部
１１４  取得部
１２０  フローテーブル記憶部
１３０  算出部
１３２  算出部
１４０  決定部
１４１  決定部
１５０  更新部
１５１  更新部
１５４  更新部
１６０  対応関係記憶部
２００  イベント生成源
２０１  イベント生成源
２０４  イベント生成源
２１０  センサー
２２０  送信先記憶部
２３０  送信部
２４０  送信先取得部
３００  振り分け装置
３０２  振り分け装置
３０３  振り分け装置
３０４  振り分け装置
３１０  受信部
３２０  振り分けルール検索部
３３０  送信部
３４０  振り分けルール記憶部
３５０  フロー計測部
３５２  フロー計測部
３６０  処理量計測部
３７０  処理量ウェイト計算部
３８０  算出部
４００  処理装置
４１０  処理部
４２０  処理ルール記憶部
５００  アプリケーション
６００  ルール設定装置
７００  送信先管理装置
１０００  イベント処理システム
１００１  イベント処理システム
１００２  イベント処理システム
１００３  イベント処理システム
１００４  イベント処理システム
２０００  デバイス
３０００  コンテキスト依存振り分け器
４０００  処理サーバ
５０００  アプリケーション
６０００  イベント処理分散制御装置
７０００  コンテキスト非依存振り分け器
【図１】
2014199607.tif 000003
【図２】
2014199607.tif 000004
【図３】
2014199607.tif 000005
【図４】
2014199607.tif 000006
【図５】
2014199607.tif 000007
【図６】
2014199607.tif 000008
【図７】
2014199607.tif 000009
【図８】
2014199607.tif 000010
【図９】
2014199607.tif 000011
【図１０】
2014199607.tif 000012
【図１１】
2014199607.tif 000013
【図１２】
2014199607.tif 000014
【図１３】
2014199607.tif 000015
【図１４】
2014199607.tif 000016
【図１５】
2014199607.tif 000017
【図１６】
2014199607.tif 000018
【図１７】
2014199607.tif 000019
【図１８】
2014199607.tif 000020
【図１９】
2014199607.tif 000021
【図２０】
2014199607.tif 000022
【図２１】
2014199607.tif 000023
【図２２】
2014199607.tif 000024
【図２３】
2014199607.tif 000025
【図２４】
2014199607.tif 000026
【図２５】
2014199607.tif 000027
【図２６】
2014199607.tif 000028
【図２７】
2014199607.tif 000029
【図２８】
2014199607.tif 000030
【手続補正書】
【提出日】平成27年12月11日(2015.12.11)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１１
【補正方法】変更
【補正の内容】
【０１１１】
図１７は、図１５に示す送信先管理装置７００が記憶する情報の一例を説明する図である。送信先管理装置７００は、イベント生成源２０１と前記イベント生成源２０１が生成するイベントの送信先である振り分け装置３００との対応関係を記憶する。図１７に示す情報は、イベント生成源２０１Ａが、生成したイベントを振り分け装置３００Ａに送信することを示す。また、図１７に示す情報は、イベント生成源２０１Ｂが、生成したイベントを振り分け装置３００Ａに送信することを示す。また、図１７に示す情報は、イベント生成源２０１Ｃが、生成したイベントを振り分け装置３００Ａに送信することを示す。さらに、図１７に示す情報は、イベント生成源２０１Ｄが、生成したイベントを振り分け装置３００Ｂに送信することを示す。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられ、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、
を備える、負荷分散装置。
【請求項２】
前記取得手段は、前記振り分け装置が受信するイベントの送信元である前記一つまたは複数のイベント生成源のそれぞれから受信するイベントの受信状況、または、前記一つまたは複数のイベント生成源のそれぞれから受信して前記振り分け装置に送信するイベントの送信状況を、前記振り分け装置から取得する、
請求項１に記載の負荷分散装置。
【請求項３】
前記システムに含まれるイベント生成源は、前記イベントの送信先を記憶している送信先記憶手段と、前記送信先記憶手段が記憶している送信先に前記イベントを送信する送信手段と、を有し、
前記更新手段は、前記イベント生成源に備えられた前記送信先記憶手段に、前記他の振り分け装置のアドレスを書き込む
請求項１または２に記載の負荷分散装置。
【請求項４】
前記受信状況または前記送信状況に基づいて、前記イベント生成源と前記イベント生成源が生成するイベントの送信先である振り分け装置との対応関係を決定する決定手段を更に備える、
請求項１または２に記載の負荷分散装置。
【請求項５】
前記システムは更に、イベント生成源と前記イベント生成源が生成するイベントの送信先である振り分け装置との対応関係を記憶している送信先管理装置を含み、
前記更新手段は、決定された前記対応関係に基づいて、前記送信先管理装置が記憶している情報を更新し、
前記システムに含まれるイベント生成源は、イベントの送信先を前記送信先管理手段から取得する、請求項４に記載の負荷分散装置。
【請求項６】
前記負荷分散装置は更に、
前記受信状況または前記送信状況に基づいて、前記振り分け装置が前記特定のイベント生成源から受信したイベントを受信または送信する際に当該振り分け装置にかかる負荷を算出する算出手段を更に備え、
前記更新手段は、前記負荷に基づいて更新する
請求項１から５のいずれかに記載の負荷分散装置。
【請求項７】
前記システムに含まれる振り分け装置は、振り分けルールを参照し、前記受信したイベントと前記振り分けルールとに基づいて、前記受信したイベントを破棄するか、あるいは、前記受信したイベントを前記処理装置に送信し、
前記取得手段は、前記受信状況、および、前記送信状況を取得し、
前記算出手段は更に、前記受信状況および前記送信状況に基づいて、前記振り分け装置が前記特定のイベント生成源から受信したイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を算出する、
請求項６に記載の負荷分散装置。
【請求項８】
前記受信状況は、前記受信したイベントの数と、情報サイズに関する情報とを含み、
前記送信状況は前記送信したイベントの情報サイズに関する情報であり、
前記算出手段は、
前記受信したイベントの情報サイズに、情報を受信する際に前記振り分け装置にかかる単位情報サイズあたりの負荷を乗じた値と、
前記受信したイベントの数量に、前記イベントと前記振り分けルールとのマッチングの際に前記振り分け装置にかかるイベント１つ当たりの負荷を乗じた値と、
前記送信したイベントの情報サイズに、情報を送信する際に前記振り分け装置にかかる単位情報サイズあたりの負荷を乗じた値と、
の和に基づいて、前記振り分け装置がイベントを転送する際に前記振り分け装置にかかる負荷を算出する、
請求項７に記載の負荷分散装置。
【請求項９】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータが、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得し、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する、
負荷分散方法。
【請求項１０】
イベントを生成し、前記イベントを特定の振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータに、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する処理と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する処理と、
を実行させるプログラム。
【請求項１１】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
前記振り分け装置からイベントを受信し、前記受信したイベントを処理する処理装置と、
を含み、
更に、
前記複数のイベント生成源のうち特定のイベント生成源から前記振り分け装置が所定期間内に受信するイベントの、数量または情報サイズを表す情報である受信状況、または、前記特定のイベント生成源から前記振り分け装置が所定期間内に受信して前記処理装置に送信するイベントの、数量または情報サイズを表す情報である送信状況を取得する取得手段と、
前記受信状況または送信状況に基づいて、前記振り分け装置が前記イベントを受信または送信する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、を備える負荷分散装置を含む、
イベント処理システム。
【請求項１２】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられ、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得する取得手段と、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する更新手段と、
を備える、負荷分散装置。
【請求項１３】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータが、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得し、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する、
負荷分散方法。
【請求項１４】
イベントを生成し、前記イベントを指定された振り分け装置に送信する複数のイベント生成源と、
一つまたは複数の前記イベント生成源からイベントを受信し、前記受信したイベントを処理装置に送信する複数の振り分け装置と、
を含むシステムにおいて用いられるコンピュータに、
前記振り分け装置が、前記複数のイベント生成源のうち特定のイベント生成源から受信するイベントを、前記特定のイベント生成源から前記処理装置に転送する際に、当該振り分け装置にかかる負荷を表す負荷情報を取得する処理と、
前記負荷情報に基づいて、前記振り分け装置が前記イベントを転送する際に当該振り分け装置にかかる負荷が、前記複数の振り分け装置の間で平準化されるように、前記特定のイベント生成源に関して指定された振り分け装置を、他の振り分け装置に更新する処理と、
を実行させるプログラム。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2014199607.tif 000031
【国際調査報告】
2014199607.tif 000032
2014199607.tif 000033
2014199607.tif 000034