(57)【要約】【課題】  処理サーバを複数配置し、処理サーバの前段にコンテキスト依存振り分け器１０３を配置することで、それぞれの処理サーバが設定された処理ルールを実行するために必要なイベントが適切に分配させるようにコンテキスト依存振り分け器１０３に振り分けルールを設定する負荷分散システムを提供することを目的とする。【解決手段】  処理の負荷分散のために、処理サーバ１０４ａ〜ｆを複数配置し、イベント処理分散制御部１０１がそれぞれの処理サーバに別個のアプリケーション１０６ａ〜ｈのためのイベント処理ルール１０８ａ〜ｆを設定する。それに従って、イベント処理分散制御部１０１がコンテキスト依存振り分け装置１０３に、各サーバが処理すべきイベントがそのサーバに分配されるようにコンテキストに基づいた振り分けルールを設定することにより、処理サーバの負荷分散を実現する。【選択図】  図１
2006309701.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、
前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段と、
前記複数の処理サーバに個別に処理ルールを設定し、前記コンテキスト依存振り分け手段が前記処理ルールを実行するために必要なイベントが適切に分配されるように振り分けルールを設定するイベント処理分散制御手段と有し、
前記イベント処理分散制御手段は、前記処理サーバへアプリケーションが要求するイベント処理の前記処理ルールを設定すると共に、前記処理ルールに従って前記処理サーバへイベントが適切に振り分けられるような振り分けルールを前記コンテキスト依存振り分け手段に設定することを特徴とする負荷分散振り分けシステム。
【請求項２】
前記コンテキスト依存振り分け手段へ前記端末で発生したイベントをランダムに振り分けるコンテキスト非依存振り分け手段を備え、
該コンテキスト非依存振り分け手段は、前記端末で発生したイベントのコンテキストを参照せずに、前記コンテキスト依存振り分け手段へ振り分けることを特徴とする請求項１記載の負荷分散振り分けシステム。
【請求項３】
前記端末は、前記イベント処理分散制御手段によって設定される振り分けルールを備え、前記端末で発生したイベントを前記振り分けルールに従って、前記処理サーバへ振り分けられることを特徴とする請求項１記載の負荷分散振り分けシステム。
【請求項４】
前記コンテキスト非依存振り分け手段を複数備え、
前記複数のコンテキスト非依存振り分け手段の少なくとも一つでイベントの振り分けを行うと共に、前記コンテキスト非依存振り分け手段が互いに障害確認を行い、イベントの振り分けを行っている前記コンテキスト非依存振り分け手段で障害が検知された場合には、他のコンテキスト非依存振り分け手段へイベントの振り分けを切り換えることを特徴とする請求項１記載の負荷分散振り分けシステム。
【請求項５】
前記コンテキスト依存振り分け手段を複数備えた場合に、前記複数のコンテキスト依存振り分け手段がお互いに障害確認を行うことを特徴とする請求項１から４のいずれか１項に記載の負荷分散振り分けシステム。
【請求項６】
前記コンテキスト依存振り分け手段は、前記コンテキスト非依存振り分け手段へ障害確認の通知を行うことにより、障害が発生した前記コンテキスト依存振り分け手段へは、前記コンテキスト非依存振り分け手段がイベントの振り分けを行わないことを特徴とする請求項４記載の負荷分散振り分けシステム。
【請求項７】
前記イベント処理分散制御手段は、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする請求項１から６のいずれか１項に記載の負荷分散振り分けシステム。
【請求項８】
請求項７に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項７に記載の負荷分散振り分けシステム。
【請求項９】
請求項７に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項７に記載の負荷分散振り分けシステム。
【請求項１０】
請求項１から６のいずれか１項に記載の負荷分散振り分けシステムであって、
前記処理ルールごとに重み付け係数を備え、
前記イベント処理分散制御手段は、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする請求項１から６のいずれか１項に記載の負荷分散振り分けシステム。
【請求項１１】
請求項１０に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項７に記載の負荷分散振り分けシステム。
【請求項１２】
請求項１１に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項７に記載の負荷分散振り分けシステム。
【請求項１３】
複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御装置であって、
前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とするイベント処理分散制御装置。
【請求項１４】
請求項１３に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１３に記載のイベント処理分散制御装置。
【請求項１５】
請求項１３に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１３に記載のベント処理分散制御装置。
【請求項１６】
複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御装置であって、
前記処理ルールごとに重み付け係数を備え、
前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とするイベント処理分散制御装置。
【請求項１７】
請求項１６に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１３に記載のイベント処理分散制御装置。
【請求項１８】
請求項１６に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１３に記載のベント処理分散制御装置。
【請求項１９】
複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御プログラムであって、
前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とするイベント処理分散制御プログラム。
【請求項２０】
請求項１９に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１９に記載のイベント処理分散制御プログラム。
【請求項２１】
請求項１９に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項１９に記載のベント処理分散制御プログラム。
【請求項２２】
複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御プログラムであって、
前記処理ルールごとに重み付け係数を備え、
前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、
新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とするイベント処理分散制御プログラム。
【請求項２３】
請求項２２に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項２２に記載のイベント処理分散制御プログラム。
【請求項２４】
請求項２２に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする請求項２２に記載のイベント処理分散制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数配置された処理サーバの負荷分散を実現する負荷分散振り分けシステムに関する。
【背景技術】
【０００２】
従来、デバイスから発生するイベントを処理するシステムでは、図５に示すように１台の処理サーバ５０４で処理を行っていた。このため、デバイス５０５ａ〜ｆの数やイベント５１１ａ〜ｆの量が増加するにしたがって、処理サーバ５０４が処理のボトルネックとなり、システムの処理能力を上げられないという問題があった。
【０００３】
図６に示す負荷分散方式では、Ｗｅｂサービスのようなサーバクライアント方式を前提とし、各サーバ６０６ａ，ｂは、同一のアプリケーションプログラム６０８ａ，ｂを実装し、ＴＣＰコネクションやｃｏｏｋｉｅを参照して、同じクライアント６０５ａ〜ｆからのセッションは同じサーバ６０６ａ，ｂに転送している。
【０００４】
また、特許文献１に開示されている発明では、パケットプロセッサからの応答に従って、パケット分散制御部がどのパケットプロセッサに処理を要求するか決定している。
【０００５】
さらに、特許文献２に開示されている発明では、プロセッサ内に振り分けプログラムを配置して、制御チャネル番号や端末番号に基づき、プロセッサ間で処理を受け渡している。
【０００６】
【特許文献１】特開２０００−２２２３７４号公報
【特許文献２】特開２００４−００５２４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は係る問題に鑑みてなされたものであり、処理サーバを複数配置し、処理サーバの前段にコンテキスト依存振り分け器１０３を配置することで、それぞれの処理サーバが設定された処理ルールを実行するために必要なイベントが適切に分配させるようにコンテキスト依存振り分け器１０３に振り分けルールを設定する負荷分散システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１記載の負荷分散振り分けシステムは、複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段と、複数の処理サーバに個別に処理ルールを設定し、コンテキスト依存振り分け手段が処理ルールを実行するために必要なイベントが適切に分配されるように振り分けルールを設定するイベント処理分散制御手段と有し、イベント処理分散制御手段は、処理サーバへアプリケーションが要求するイベント処理の処理ルールを設定すると共に、処理ルールに従って処理サーバへイベントが適切に振り分けられるような振り分けルールをコンテキスト依存振り分け手段に設定することを特徴とする。
【０００９】
請求項２記載の発明は、請求項１記載の負荷分散振り分けシステムであって、コンテキスト依存振り分け手段へ端末で発生したイベントをランダムに振り分けるコンテキスト非依存振り分け手段を備え、該コンテキスト非依存振り分け手段は、端末で発生したイベントのコンテキストを参照せずに、コンテキスト依存振り分け手段へ振り分けることを特徴とする。  
【００１０】
請求項３記載の発明は、請求項１記載の負荷分散振り分けシステムであって、端末は、イベント処理分散制御手段によって設定される振り分けルールを備え、端末で発生したイベントを振り分けルールに従って、処理サーバへ振り分けられることを特徴とする。
【００１１】
請求項４記載の発明は、請求項１記載の負荷分散振り分けシステムであって、コンテキスト非依存振り分け手段を複数備え、複数のコンテキスト非依存振り分け手段の少なくとも一つでイベントの振り分けを行うと共に、コンテキスト非依存振り分け手段が互いに障害確認を行い、イベントの振り分けを行っているコンテキスト非依存振り分け手段で障害が検知された場合には、他のコンテキスト非依存振り分け手段へイベントの振り分けを切り換えることを特徴とする。
【００１２】
請求項５記載の発明は、請求項１から４のいずれか１項に記載の負荷分散振り分けシステムであって、コンテキスト依存振り分け手段を複数備えた場合に、複数のコンテキスト依存振り分け手段がお互いに障害確認を行うことを特徴とする。
【００１３】
請求項６記載の発明は、請求項４記載の負荷分散振り分けシステムであって、コンテキスト依存振り分け手段は、コンテキスト非依存振り分け手段へ障害確認の通知を行うことにより、障害が発生したコンテキスト依存振り分け手段へは、コンテキスト非依存振り分け手段がイベントの振り分けを行わないことを特徴とする。
【００１４】
請求項７に記載の発明の負荷分散振り分けシステムは、前記イベント処理分散制御手段は、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００１５】
請求項８に記載の発明の負荷分散振り分けシステムは、請求項７に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴。
請求項９に記載の発明の負荷分散振り分けシステムは、請求項７に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００１６】
請求項１０に記載の発明の負荷分散振り分けシステムは、請求項１から６のいずれか１項に記載の負荷分散振り分けシステムであって、前記処理ルールごとに重み付け係数を備え、前記イベント処理分散制御手段は、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００１７】
請求項１１に記載の発明の負荷分散振り分けシステムは、請求項１０に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００１８】
請求項１２に記載の発明の負荷分散振り分けシステムは、請求項１１に記載の負荷分散振り分けシステムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００１９】
請求項１３に記載の発明のイベント処理分散制御装置は、複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御装置であって、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００２０】
請求項１４に記載の発明のイベント処理分散制御装置は、請求項１３に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２１】
請求項１５に記載の発明のイベント処理分散制御装置は、請求項１３に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２２】
請求項１６に記載の発明のイベント処理分散制御装置は、複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御装置であって、前記処理ルールごとに重み付け係数を備え、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００２３】
請求項１７に記載の発明のイベント処理分散制御装置は、請求項１６に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２４】
請求項１８に記載の発明のイベント処理分散制御装置は、請求項１６に記載のイベント処理分散制御装置であって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２５】
請求項１９に記載の発明のイベント処理分散制御プログラムは、複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御プログラムであって、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の最小値に対し、あらかじめ定められた一定範囲以内の数の処理ルールを割り当てられた処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００２６】
請求項２０に記載の発明のイベント処理分散制御プログラムは、請求項１９に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２７】
請求項２１に記載の発明のイベント処理分散制御プログラムは、請求項１９に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００２８】
請求項２２に記載の発明のイベント処理分散制御プログラムは、複数のアプリケーションへイベント処理結果を通知する複数の処理サーバと、前記複数の処理サーバへ端末で発生したイベントを振り分けるコンテキスト依存振り分け手段とを有する負荷分散振り分けシステムで用いられ、アプリケーションから受信した処理ルールを処理サーバに振り分けるイベント処理分散制御プログラムであって、前記処理ルールごとに重み付け係数を備え、前記処理サーバごとに、振り分けた前記処理ルールのうち少なくとも前記処理ルールに含まれるイベント条件を記録する処理ルール振り分け記録手段を有し、新規の処理ルールを受信すると、前記処理ルール振り分け記録手段を参照して、前記処理サーバに割り当てられた処理ルールの数の前記重み付け係数の和の最小値に対し、前記重み付け係数の和があらかじめ定められた一定範囲以内である処理サーバであって、同一のイベント条件を有する処理サーバに、前記新規の処理ルールを割り当てることを特徴とする。
【００２９】
請求項２３に記載の発明のイベント処理分散制御プログラムは、請求項２２に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、すでに割り当てられているイベント条件の一部が前記新規の処理ルールのイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【００３０】
請求項２４に記載の発明のイベント処理分散制御プログラムは、請求項２２に記載のイベント処理分散制御プログラムであって、同一のイベント条件を有する処理サーバがない場合、前記新規の処理ルールのイベント条件の一部がすでに割り当てられているイベント条件と一致する処理サーバに前記新規の処理ルールを割り当てることを特徴とする。
【発明の効果】
【００３１】
本発明によれば、処理サーバを複数配置し、その前段にコンテキスト依存振り分け手段を配置し、イベント処理分散制御部がそれぞれの処理サーバに個別の処理ルールを設定し、コンテキスト依存振り分け手段にそれぞれの処理サーバが設定された処理ルールを実行するために必要なイベントが適切に分配されるように振り分けルールを設定することにより、それぞれの処理サーバが異なったイベント処理を行い、異なったイベントを必要とする環境でも処理サーバの負荷分散を実現することができる。
【発明を実施するための最良の形態】
【００３２】
本発明の概略を説明する。  本発明の負荷分散振り分けシステムは、アプリケーションがシステムに対して、ＲＦＩＤリーダ、センサ等のデバイスからの発生情報（イベント）の処理を処理ルールとして要求し、システムは要求されたルールに従って、イベントの内容（コンテキスト）に基づき処理し、結果をアプリケーションに通知するシステムを前提としている。処理ルールは、イベントの内容（コンテキスト）に基づいて処理するように構成されている。
【００３３】
このようなシステムにおいて、処理の負荷分散のために、処理サーバを複数配置し、イベント処理分散制御部がそれぞれの処理サーバに別個のアプリケーションのためのイベント処理ルールを設定する。それに従って、イベント処理分散制御部が振り分け装置に、各サーバが処理すべきイベントがそのサーバに分配されるようにコンテキストに基づいた振り分けルールを設定することにより、処理サーバの負荷分散を実現する。
【００３４】
さらに、コンテキストに基づいてイベントを適切な処理サーバに振り分けるコンテキスト依存振り分け器１０３の前段に、イベントのコンテキストに基づかずイベントをランダムに振り分けるコンテキスト非依存振り分け器を配置し、その後段に同一の振り分けルールを持ったコンテキスト依存振り分け器１０３を複数配置する。
【００３５】
デバイスからのイベントはコンテキスト非依存振り分け器により、ランダムに複数のコンテキスト依存振り分け器１０３に分配され、同一の振り分けルールを持ったコンテキスト依存振り分け器１０３によりコンテキストに基づいて適切な処理サーバに転送される。これによりコンテキスト依存振り分け器１０３が一台の時と同様に負荷分散のためのイベント振り分けができると同時に、コンテキスト依存振り分け器１０３の負荷分散も可能となる。
【００３６】
次に、図面を参照して、本発明の実施形態を説明する。
【００３７】
負荷分散振り分けシステムは、イベント処理分散制御部１０１、コンテキスト依存振り分け器１０３、複数の処理サーバ１０４ａ〜ｆから構成され、複数のＲＦＩＤリーダ、センサ等のデバイス１０５ａ〜ｆがコンテキスト振り分け器１０３に接続され、複数のアプリケーション１０６ａ〜ｈが処理サーバ１０４ａ〜ｆに接続される。
【００３８】
処理サーバ１０８ａ〜ｆの数、デバイス１０５ａ〜ｆの数、アプリケーション１０６ａ〜ｈの数は同一でなくてもよい。例えば、処理サーバ１０４ａのように１つの処理サーバが複数のアプリケーション１０６ａ，ｂに対応してもよい。また、アプリケーション１０６ｂのように、システムに複数のイベント処理を要求する場合、複数の処理サーバ１０４ａ，ｂに対応してもよい。
【００３９】
コンテキスト依存振り分け器１０３の中には、イベントを振り分ける方針を記した振り分けルール１０７が配置されている。また、処理サーバ１０４ａ〜ｆにはイベントの処理方法を記した処理ルール１０８ａ〜ｆが配置されている。それらの情報はイベント処理分散制御部１０１から供給される（矢印１０９，１１０ａ〜ｆ）。
【００４０】
［第１の実施形態］
次に、第１の実施形態における負荷分散振り分けシステムの処理動作について、図１を参照して説明する。
【００４１】
まず、イベント処理分散制御部１０１は、処理サーバ１０４ａ〜ｆに、アプリケーション１０６ａ〜ｆが要求するイベント処理の処理ルール１０８ａ〜ｆを設定する（矢印１１０ａ〜ｆ）。
【００４２】
アプリケーション１０６ａ〜ｈが要求するイベント処理の処理ルール１０８ａ〜ｆを設定する場合に、例えば、ＲＦＩＤシステムにおいて、アプリケーション１０６ａが、ある製品を製造するために必要な全ての部材のＲＦＩＤタグを全て検出したら通知することを、処理サーバ１０４ａの処理ルール１０８ａに「全ての部材のＲＦＩＤタグを全て検出したらアプリケーションに通知」というルールを設定する（矢印１１０ａ）。
【００４３】
次に、イベント処理分散制御部１０１は、設定された処理ルール１０８ａ〜ｆにより処理サーバが処理する必要のあるイベントがそのサーバに適切に振り分けられるように、コンテキスト依存振り分け器１０３に振り分けルール１０７を設定する（矢印１０９）。上記に示した例の場合、「その製品に関する部材のＲＦＩＤタグの検出イベントは処理サーバ１０４ａに転送する。」といったルールとなる。
【００４４】
デバイス１０５ａ〜ｆで発生したイベント１１１ａ〜ｆは、全てコンテキスト依存振り分け器１０３で受信される。デバイス１０５ａ〜ｆで発生したイベントを受信したコンテキスト依存振り分け器１０３は、そのイベントの内容（コンテキスト）を参照し、振り分けルール１０７に従って、それらを適切な処理サーバ１０４ａ〜ｆに転送する（矢印１１３ａ〜ｆ）。
【００４５】
コンテキスト依存振り分け器１０３によって振り分けられたイベント１１３ａ、１１３ｆを受信した処理サーバは、処理ルール１０７に従ってアプリケーション１０６ａ〜ｈに転送する（１１４ａ〜ｉ）。
【００４６】
［第２の実施形態］
次に、図２を参照して、第２の実施形態を説明する。
【００４７】
第２の実施形態では、コンテキスト依存振り分け器１０３２０３ａ〜ｃを複数配置し、その前段にコンテキストを参照せずにイベントを複数のコンテキスト依存振り分け器１０３２０３ａ〜ｃにランダムに振り分ける（矢印２１２ａ〜ｃ）コンテキスト非依存振り分け器２０２を配置する。イベント処理分散制御部２０１から各コンテキスト依存振り分け器１０３２０３ａ〜ｃに設定される振り分けルールは２０７ａ〜ｃは全て同一で、その内容、手順は第１の実施形態と同様である。
【００４８】
処理サーバを複数配置し、処理サーバの負荷を分散させるためのコンテキスト依存振り分け器１０３であるが、コンテキスト依存振り分け器１０３自体は、振り分けのためにイベントのコンテキストを参照するため処理負荷が重くなるという問題があった。しかし、図２に示すように、コンテキストを参照しないでイベントをランダムに振り分けるといった処理の軽いコンテキスト非依存振り分け器を前段に配置し、その後段に複数のコンテキスト依存振り分け器１０３を複数配置することにより、コンテキスト依存振り分け器１０３の負荷分散を実現することができる。
【００４９】
［第３の実施形態］
第３の実施形態では、第１の実施形態におけるコンテキスト依存振り分け器１０３内の振り分けルール１０７を、デバイス３０５ａ〜ｆ内に配置している（３０７ａ〜ｆ）。これにより、デバイス３０５ａ〜ｆがイベントを検出すると、自律的にコンテキスト依存のイベント振り分け３１３ａａ〜ｆｆが可能となり、コンテキスト依存振り分け器１０３を配置せずに済み、コンテキスト依存振り分けの負荷をデバイスに分散させることができる。
【００５０】
［第４の実施形態］
第４の実施形態では、第２の実施形態におけるコンテキスト非依存振り分け器、コンテキスト依存振り分け器１０３に障害回避機能を付加した例である。
【００５１】
コンテキスト非依存振り分け器は４０２、４０２’と二重化されており、デバイス４０５ａ〜ｆは両方のコンテキスト非依存振り分け器４０２、４０２’にイベント４１１ａ，ａ’〜ｆ，ｆ’を通知する。もしくはデバイス４０５ａ〜４０５ｆは１イベントパケットのみを送信し、そのパケットを両方のコンテキスト非依存振り分け器４０２、４０２’が受信してもよい。
【００５２】
両方のコンテキスト非依存振り分け器４０２、４０２’はお互いに障害確認４１５を行い、通常はコンテキスト非依存振り分け器４０２のみがイベント振り分け４１２ａ’〜ｃ’を行い、もう一方は行わない。しかし、障害確認４１５によりコンテキスト非依存振り分け器４０２が障害になったことを検知すると、コンテキスト非依存振り分け器４０２’がイベント振り分け４１２ａ’〜ｃ’を開始する。これにより、コンテキスト非依存振り分け器の障害回避が可能となる。
【００５３】
また、コンテキスト依存振り分け器１０３４０３ａ〜ｃは、コンテキスト非依存振り分け器４０２，４０２’にコンテキスト依存振り分け器１０３自身の生存通知４１６ａ，ａ’〜ｃ，ｃ’を行っており、コンテキスト非依存振り分け器４０２、４０２’がイベント振り分け４１２ａ〜４１２ｃ、４１２ａ’〜ｃ’を行う際、生存しているコンテキスト依存振り分け器１０３のみにイベント振り分けを行い、生存していない（障害中の）コンテキスト依存振り分け器１０３にはイベント振り分けを行わないことにより、コンテキスト依存振り分け器１０３４０３ａ〜ｃの障害回避が可能となる。
【００５４】
[第５の実施形態]
さて、第１の実施形態においては、ひとつの処理ルールはひとつの処理サーバで処理される。一方、アプリケーションの数が増えると、ひとつの処理サーバで処理すべき処理ルールの数が増加することになる。この場合、処理ルールが特定の処理サーバに集中して割り当てられた場合には、その処理サーバの処理負荷が増大してしまうという問題が発生する。
【００５５】
これを解決する方法として、ひとつの処理ルールを複数の処理サーバに割り当てる方法がある。しかし、この方法は、処理ルールが過去の処理の履歴に依存しないステートレスな処理である場合には有効であるが、処理ルールが過去の処理の履歴に依存するステートフルな処理である場合には、複数の処理サーバがアクセス可能な共有メモリを設け、同一処理ルールを処理する処理サーバ間で共有メモリを参照、更新しながら処理ルールを適用する必要が発生する。このような方法では、共有メモリとの通信や処理サーバ間の排他制御が必要となり、それがボトルネックとなって全体の処理能力を落とす恐れがある。したがって、ひとつの処理ルールはひとつの処理サーバで処理することが、特に大規模なシステムでは有効である。
【００５６】
図７にイベント処理分散制御部１０１の構成を示す。
イベント処理分散制御部１０１は、アプリケーション１０６a〜ｈから処理ルールを受信する処理ルール受信部２００、処理ルールをどの処理サーバに割り当てるかを決定する処理ルール振り分け部２０１、処理ルールを処理サーバに送信する処理ルール送信部２０２、処理ルールの処理サーバから振り分けルールを生成する振り分けルール生成部２０３、振り分けルールをコンテキスト依存振り分け器１０３に送信する振り分けルール送信部２０４、処理サーバごとにどの処理ルールを振り分けたかを記録する処理ルール振り分け記録部２０５を有する。
【００５７】
まず、この処理ルールの一例を図８に示す。この処理ルールは、ルールの名称、処理すべきイベントの条件（イベント条件）、イベントに対する処理の記述を有する。
行0001は、処理ルールの名称を示す。行0002は、この処理ルールを適用するイベントの条件を示す。ここではイベントにtag_kindという、ＲＦＩＤタグの種別を示すフィールドがあり、そのフィールドの値が４である場合に、この処理ルールを適用するという意味を持つ。たとえば、イベントが、event(tag_kind,TagID)であらわせるとき、tag_kind=4であるようなすべてのTagIDに関するイベントに対して処理を行うことを示す。
0003以下の行が処理の内容を示すものである。0004行は処理ルールを開始する際の初期設定時の処理を示す。ここでは、0005行目でeventlogというイベントの格納する配列記憶領域を確保し、0006行目で、イベント格納数であるevent_countという整数変数を０クリアすることを示す。
【００５８】
0008行〜0018行が、イベントを受信したときの処理である。0009行で、受信したイベントをeventlogに保存し、0010行でevent_countをインクリメントする。0011行でもしevent_countが１０となったら、0012行でeventlogに記録されている10個のイベントを、ルール処理を設定したアプリケーションに送信するとともに、0013行でevent_countを０にし、0014行でタイマーをクリアする。
【００５９】
もし、0011行でevent_countが１０未満の場合は、0017行で、タイマー１０秒をセットし、タイマーが満了したら、0019行のtimeout処理を行うことを指示する。0014行のタイマーのクリアは、この処理をキャンセルするものである。
【００６０】
0019行のtimeoutの処理は、eventlogにひとつでもイベントが未送信状態で残っているときに、最後のイベントを受信してから10秒たったら起動される処理であって、0020行で、eventlogに記録されているイベントを、ルール処理を設定したアプリケーションに送信するとともに、0021行でevent_countを０にし、0022行でタイマーをクリアする。
【００６１】
つまり、この処理ルールは、tag_kindが４であるイベントを１０個受信するか、最後のイベントを受信してから１０秒たつと、記録されているイベントをルール処理を設定したアプリケーションに送信するというものであり、処理サーバからアプリケーションへのイベント送信に必要な処理を軽減するための処理ルールである。
【００６２】
また、この処理ルールは、event_count、eventlogの記録部を必要とし、その状態によって、イベントに対する処理内容が変わるため、ステートフルな処理である。
【００６３】
次に、図９に、処理ルール振り分け記録部２０５に記録する情報の一例を示す。処理ルール振り分け記録部２０６には、少なくとも、処理サーバごとに設定した処理ルールの数と、処理ルールのイベント条件とを記録する必要があるが、ここでは、処理サーバごとに、設定処理ルール数、処理ルール名とイベントの条件を記録するものとする。ここではEP1〜EP６が処理サーバ１０８ａ〜ｆに対応する識別子であり、すでに18個のルールが設定されており、イベント条件は、tag_kindのみで決定できるものとする。
【００６４】
イベント処理分散制御部は、アプリケーションから処理ルールを処理ルール受信部によって受信する。処理ルール受信部２００は、受信した処理ルールを処理ルール振り分け部２０１に渡す。
【００６５】
図１０は、処理ルール振り分け部２０１がその処理ルールをどの処理サーバに振り分けるかを決定する手順を示すフローチャートである。
【００６６】
まず、処理ルール振り分け部２０１は、各処理サーバに割り当てられたルール数の最小値を求める。図９の例においては、最小値はEP1およびEP３の“２”である。
【００６７】
処理ルール振り分け部２０１は、ルール数の最小値との差があらかじめ定められた一定値以下である処理サーバの候補を選択する（ステップ１）。
この一定値が“０”であれば、EP１、EP２が選択される。また１であれば、EP1、EP2、EP3、EP5が選択される。ここでは、一定値を１としてEP1、EP2、EP3、EP5が選択されたものと仮定する。ここで、処理サーバの候補がひとつになった場合は、その処理サーバを選択する。
【００６８】
つぎに、処理ルール振り分け部２０１は、処理ルールのイベント条件と、選択済みのEP1、EP2、EP3、EP5のイベント条件を比較する。(ステップ２)
ここでもし、一致するイベント条件をもつ処理サーバが１つだけあれば、その処理サーバを最終的な振り分け先として決定する。たとえば、tag_kind＝４がイベント条件である場合には、EP1、EP2、EP3、EP5のうちそのイベント条件を有する処理サーバは、EP２ただひとつであるので、EP２を振り分け先として決定する。（ステップ３-A）
一致するイベント条件を持つ処理サーバが複数あった場合は、その複数の処理サーバからイベント数が最も小さい処理サーバを選択し、その処理サーバを振り分け先として決定する。たとえば、tag_kind＝５をイベント条件とした場合、EP2とEP５がそのイベント条件を持っているが、この場合はイベント数が小さい、EP２を選択するものとする。（ステップ３-B）
一致するイベント条件を持つ処理サーバがひとつもない場合にも、複数の処理サーバからイベント数が最も小さい処理サーバを選択し、その処理サーバを振り分け先として決定する。（ステップ3-C）
なお、前記ステップ３-A、3-B、3-Cで、複数の処理サーバが候補として残る場合がある。このときは、若番/老番で決定する、ランダムに決定するなど、別のルールで決定すればよい。
【００６９】
なお、ステップ１において、ルール数の最小値との差があらかじめ定められた一定値以下である処理サーバの候補を選択するとしているが、必ずしも差である必要はなく、たとえば、ルール数の最小値の１．５倍以内など、比率で選択してもよい。
【００７０】
また、新たな処理ルールのイベント条件がtag_kind= 7である場合、全く同じイベント条件はないが、rule12の  tag_kind= 5 or tag_kind= 7  の条件にtag_kind= 7の条件が包含されていることから、EP５を条件に合致するものとしてもよい。
また逆に、新たな処理ルールのイベント条件が、tag_kind= ３ or tag_kind=8のように複数の条件のorであった場合、もし、すべてのイベント条件を持つ処理サーバがあればそれを優先的に選択する。すべてのイベント条件を満たす処理サーバがない場合は、部分的に一致するイベント条件を満たす処理サーバを選択する。たとえば、tag_kind= ３が部分的に一致することから、EP３を選択する。
【００７１】
なお、上記説明では、イベント条件として、タグの種別を示すtag_kindがある値を持つ場合について説明したが、イベント条件はこれに限るわけではなく、あるイベントに対してそれをイベントそのもので選別できる条件であれば、どのようなものであってもよい。
さらに、上記説明では、各処理サーバに割り当てられた処理ルール数に基づくものとしているが、それぞれの処理ルールに、イベント条件に合致するイベントの数や処理の負荷の度合いに重み付けを行った負荷度を定義し、負荷度の合計を処理ルール数に代えて用いてもよい。
【００７２】
処理ルールを処理すべき処理サーバを決定すると、処理ルール振り分け部２０１は、処理ルール振り分け記録部２０５にその処理ルールの振り分け結果を登録して更新する。次にあらたな処理ルールが発生すると、更新された処理ルール振り分け記録部２０５の内容を元に、処理サーバへの振り分けを決定する。
さらに、処理ルール振り分け部２０１は、処理ルール送信部２０２を介して処理ルールを振り分けることに決定した処理サーバに送信する。
【００７３】
また、処理ルール振り分け部２０１は、その振り分け結果を振り分けルール生成部２０３に通知する。振り分けルール生成部２０３は、その処理ルールのイベント条件と処理サーバをペアとして、振り分けルールを生成し、振り分けルール送信部２０４を介して、コンテキスト依存振り分け器１０３に送信する。
【００７４】
なお、コンテキスト依存振り分け器１０３は、複数の振り分けルールを適用してあるイベントをどの処理サーバに送るかを決定するが、あるイベントについて複数振り分けルールがあるひとつの処理サーバを送信先とする場合、振り分けルールごとにイベントを送信するのではなく、一回だけ送信し、処理サーバ側で複数の処理ルールを適用することが望ましい。
【００７５】
さらには、複数の処理ルールについて、イベント条件と処理サーバが同一の場合、振り分けルールをコンテキスト依存振り分け器１０３に送信しないように構成してもよい。
【００７６】
以上説明したように、本実施例に示す処理ルールの振り分けを行うことによって、負荷が一部の処理サーバに集中することがなくなると同時に、同一または一部共通するイベント条件を持った処理ルールを特定のサーバに集中させることができるので、あるイベントについて、コンテキスト依存振り分け器１０３が送信する相手となる処理サーバの数を小さくできるようになる。また、全処理サーバが受信するイベント数の総数を減少させることができるので、ひとつの処理サーバでも受信するイベント数の総数が減少し、全体の処理能力を向上させることができるようになる。
【００７７】
[第６の実施形態]
別の実施形態における本発明の処理ルール振り分けの適用例を示す。
図１１に処理ルール振り分けの流れを示す。アプリケーション１０６ａ〜１０６ｈから処理ルールが設定されるたびに図１１の処理が実施される。図１１のステップ1の許容処理ルール数差はあらかじめ決めておく値である。いずれかのステップにおいて、処理サーバが1つに絞られた場合には、その処理サーバに処理ルールを割り当てる。イベント種別の識別方法として、例えば、イベントに属性を持たせ、その属性を用いて分類することが可能である。
各ステップを実施する順番は固定ではなく入れ替えることも可能である。
【００７８】
（イベント、処理ルールの定義）
イベントと処理ルールの例を用いて、上記処理ルール振り分け方法を説明する。例では、デバイスをRFIDリーダとし、アプリケーションをRFIDリーダが通知するRFIDの情報を利用するアプリケーションプログラムとする。イベントはRFID(TagID)とそのRFIDを読み取ったリーダのID(ReaderID)から構成されるとする。イベントの例を図１２に示す。図１２に示すイベントはTagIDが10とReaderIDが20のイベントである。
【００７９】
アプリケーションから設定される処理ルールの例を図１３に示す。
【００８０】
Rule_A1からRule_A6までが順次設定されるとする。各処理ルールのカンマで区切られた左半分が条件を表わし、右半分が動作を表わす。処理ルールの条件部分の2つのイベントが記述されているが、これは、この2つのイベントがデバイスから発生した場合に、条件に合致することを意味する。たとえば、Rule_A1の、Event(TagID=10, ReaderID=20) ＆ Event(TagID=11, ReaderID=20) という条件は、TagID=10, ReaderID=20のイベントと、TagID=11, ReaderID=20のイベントの両方が発生したときに処理ルールの動作部分を起動することを意味する。この場合、TagID=10, ReaderID=20のイベントと、TagID=11, ReaderID=20のイベントの両方を処理する必要があるので、この処理ルールを設定押された処理サーバには、TagID=10, ReaderID=20のイベントと、TagID=11, ReaderID=20のイベント両方は振り分けられなければならない。
【００８１】
また、処理ルールの動作部分の”notify to Application-A”はApplication-Aに条件に合致したことを通知することを意味する。ここでApplication-Aはアプリケーション１０６a、Application-Bはアプリケーション１０６ｂに対応し、以下同様である。
【００８２】
（処理ルール振り分け例1）
処理サーバが3台で、許容処理ルール数差が2であるとすると、図１３に示す処理ルールはイベント処理分散制御部によって、図１４に示すように処理サーバに振り分けられる。  以下、その流れを説明する。3台の処理サーバをそれぞれEP１、EP2、EP3と呼ぶ。また、処理ルールの条件チェックに必要となるイベントを“処理ルールチェックに必要なイベント”と呼び、処理サーバに設定され処理ルールチェックに必要なイベントの集合を“処理サーバに必要なイベント”と呼ぶ。
【００８３】
Rule_A1がアプリケーション１０６ａから設定されると、初期状態で各処理サーバに設定されている処理ルールはないので、ステップ1では、全処理サーバが選択される。
【００８４】
次にステップ2に進む。処理ルールチェックに必要なイベントはEvent(TagID=10, ReaderID=20)とEvent(TagID=11, ReaderID=20)である。また、各処理サーバには処理ルールが設定されていないため、必要となるイベントはない。よって、共通に必要となるイベント数は各処理サーバで等しくなるため、全ての処理サーバが選択され、ステップ3に進む。
【００８５】
ステップ３では、各処理サーバに処理ルールが設定されていないため、必要とするイベント数は各処理サーバにおいて0で、よって、全ての処理サーバが選択される。最終的に処理ルールを振り分ける処理サーバをランダムに選択する。EP2が選択されたとして次に進む。
【００８６】
Rule_A2がアプリケーション１０６ｂから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全処理サーバが選択され、ステップ2に進む。処理ルールチェックに必要なイベントはEvent(TagID=10, ReaderID=20)とEvent(TagID=11, ReaderID=20)である。EP2に必要なイベントはEvent(TagID=10, ReaderID=20)とEvent(TagID=11, ReaderID=20)であり、他の処理サーバに必要なイベントはない。処理ルールチェックとEP2で共通に必要なイベントは2つであるため、EP2にRule_A2が設定される。
【００８７】
Rule_A3がアプリケーション１０６ｃから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全処理サーバが選択され、ステップ2に進む。処理ルールチェックと各処理サーバで共通に必要なイベントはないため、ステップ2では、全ての処理サーバが選択され、ステップ3へ進む。EP2は2つのイベントを必要とし、他の処理サーバは1つもイベントを必要としないため、EP１とEP3が選択される。最終的にEP１とEP3 のいずれかがランダムに選択され、選択された処理サーバにRule_A3が設定される。EP１が選択されたとして次に進む。
【００８８】
Rule_A4がアプリケーション１０６ｃから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全処理サーバが選択され、ステップ2に進む。処理ルールチェックとEP2で共通に必要なイベントはEvent(TagID=11, ReaderID=20)であり、処理ルールチェック他の各処理サーバで共通に必要なイベントはないため、Rule_A4はEP2に設定される。
【００８９】
Rule_A5がアプリケーション１０６ａから設定されると、ステップ1では、EP2とEP3に設定され処理ルール数が許容処理ルール数差2より大きいため、EP１とEP3が選択され、ステップ2へ進む。処理ルールチェックと各処理サーバで共通に必要となるイベントはないため、全ての処理サーバが選択され、ステップ3へ進む。EP１が必要とする処理ルールが2つであり、EP3が必要とする処理ルールが0であるため、EP3にRule_A5が設定される。
【００９０】
Rule_A6がアプリケーション１０６ｂから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全ての処理サーバが選択され、ステップ2に進む。処理ルールチェックとEP１で共通に必要なイベントは0で、処理ルールチェックと他の各処理サーバで共通に必要なイベントは1つである。よって、EP2とEP3が選択され、ステップ3へ進む。EP2が必要とするイベントが3つであり、EP3が必要とするイベントは2つであるため、EP3にRule_A6が設定される。
【００９１】
図１４のように処理ルールが振り分けられる場合、コンテキスト依存振り分け器１０３に設定されるイベント振り分け処理ルールは図１５のようになる。図１５の表はイベントの条件とその条件に合致するイベントの転送先処理サーバを表わす。例えば、Event(TagID=10, ReaderID=20)はEP2に転送され、Event(TagID=13, ReaderID=25)はEP2とEP3に転送される。
【００９２】
（処理ルール振り分け例2）
上記例では、処理ルールの条件に記述されるイベントの全属性を見て、処理ルールの振り分けを行ってい処理ルールの条件に記述されるイベントの一部の属性を見て、処理ルールを振り分けることも可能である。以下、TagIDを参照する属性として振り分けの流れを説明する。TagIDを参照する属性として振り分けると図１３に示す処理ルールは図１６にように振り分けられる。以下、属性の値としてアスタリスクが記述されている場合、任意の値とする。
【００９３】
Rule_A1がアプリケーション１０６ａから設定されると、初期状態で各処理サーバに設定されている処理ルールはないので、ステップ1では、全処理サーバが選択される。次にステップ2に進む。処理ルールチェックに必要なイベントはEvent(TagID=10, ReaderID=*)とEvent(TagID=11, ReaderID=*)である。また、各処理サーバには処理ルールが設定されていないため、必要となるイベントはない。よって、共通に必要となるイベント数は各処理サーバで等しくなるため、全ての処理サーバが選択され、ステップ3に進む。各処理サーバに処理ルールが設定されていないため、必要とするイベント数は各処理サーバで0で、よって、全ての処理サーバが選択される。最終的に処理ルールを振り分ける処理サーバをランダムに選択する。EP2が選択されたとして次に進む。
【００９４】
Rule_A2がアプリケーション１０６ｂから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全処理サーバが選択され、ステップ2に進む。処理ルールチェックに必要なイベントはEvent(TagID=10, ReaderID=*)とEvent(TagID=11, ReaderID=*)である。EP2で必要となるイベントはEvent(TagID=10, ReaderID=*)とEvent(TagID=11, ReaderID=*)であり、他の処理サーバで必要となるイベントはない。処理ルールチェックで必要なイベントとEP2が必要とするイベントで共通なイベントが2つであるため、EP2にRule_A2が設定される。
【００９５】
Rule_A3がアプリケーション１０６ｃから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全処理サーバが選択され、ステップ2に進む。処理ルールチェックで必要なイベントはEvent(TagID=11, ReaderID=*)とEvent(TagID=12, ReaderID=*)であり、処理ルールチェックで必要なイベントとEP2が必要とするイベントで共通なイベントが1つある。よって、EP2にRule_A3が設定される。  Rule_A4がアプリケーション１０６ｃから設定されると、ステップ1では、EP2に設定され処理ルール数と他の処理サーバに設定され処理ルール数との差が許容処理ルール数差2より大きいため、EP１とEP3が選択され、ステップ2へ進む。処理ルールチェックと各処理サーバで共通に必要なイベントがないため、全処理サーバが選択されステップ3へ進む。各処理サーバが必要とするイベントはないため、全処理サーバが選択される。最終的にEP１かEP3かがランダムに選択される。EP１が選択されたとして進める。
【００９６】
Rule_A5がアプリケーション１０６ｂから設定されると、ステップ1では、EP2に設定され処理ルール数と他のEP3に設定され処理ルール数との差が許容処理ルール数差2より大きいため、EP１とEP3が選択され、ステップ2へ進む。処理ルールチェックと各処理サーバで共通に必要なイベントはないため、全処理サーバが選択され、ステップ3へ進む。EP１で必要なイベントは2つであり、EP3が必要とするイベントは0であるためEP3にRule_A5が設定される。
【００９７】
Rule_A6がアプリケーション１０６ａから設定されると、ステップ1では、全処理サーバに設定され処理ルールが許容処理ルール数差2以内であるため、全ての処理サーバが選択され、ステップ2に進む。処理ルールチェックとEP2で共通に必要なイベントは0であり、処理ルールチェックと他の処理サーバで共通に必要なイベントは1つである。よって、EP１とEP3が選択され、ステップ3へ進む。EP１とEP3が必要とするイベントはそれぞれ2つなので、最終的にランダムに選択され、選択された処理サーバにRule_A6が設定される。EP3が選択されたとすると、処理ルールの振り分け状況は図１６のようになる。
【００９８】
図１６のように処理ルールが振り分けられる場合、コンテキスト依存振り分け器１０３に設定されるイベント振り分け処理ルールは図１７のようになる。表の見方は図１５と同様である。
【００９９】
このような構成により、デバイスからのイベント発生量が増え、イベントデータの参照・更新が頻繁になっても、従来技術であるイベントデータを共有する場合に発生する排他制御によるボトルネックが発生しない。
本ルール振り分け方法を用いることによりコンテキスト依存振り分け器１０３におけるイベントコピーを最小限にでき、システムのリソースを効率的に使用できる。
【０１００】
ルール振り分けの例として、例1と例2を示したが、例1では、コンテキスト依存振り分け器１０３でより厳密にイベントが絞られるため、各処理サーバは最小限のイベントのみを処理すればよい。例2では、コンテキスト依存振り分け器１０３が振り分け時に1属性のみを参照すればよいため、全属性を見る場合と比べて高速に処理できるという効果がある。
【図面の簡単な説明】
【０１０１】
【図１】第１の実施形態における負荷分散振り分けシステムの構成を示した図である。
【図２】第２の実施形態における負荷分散振り分けシステムの構成を示した図である。
【図３】第３の実施形態における負荷分散振り分けシステムの構成を示した図である。
【図４】第４の実施形態における負荷分散振り分けシステムの構成を示した図である。
【図５】従来の負荷分散システムの構成を示した図である。
【図６】従来の負荷分散システムの構成を示した図である。
【図７】イベント処理分散制御部の構成を示した図である。
【図８】処理ルールの例を示した図である。
【図９】処理ルール振り分け記録の例を示した図である。
【図１０】処理ルール振り分けの手順のフローチャートを示した図である。
【図１１】ルール振り分けの手順のフローチャートを示した図である。
【図１２】イベント例を示した図である。
【図１３】クライアントから設定される処理ルールの例を示した図である。
【図１４】処理分散制御サーバのルール振り分け例１を示した図である。
【図１５】イベント振り分けルールの例１を示した図である。
【図１６】処理分散制御サーバのルール振り分け例２を示した図である。
【図１７】イベント振り分けルールの例２を示した図である。
【符号の説明】
【０１０２】
１０１    イベント処理分散制御部
１０３    コンテキスト依存振り分け器
１０４ａ〜１０４ｈ    処理サーバ
１０５ａ〜１０５ｆ    デバイス
１０６ａ〜１０６ｈ    アプリケーション
１０７    振り分けルール
１０８ａ〜１０８ｆ    処理ルール
２００    処理ルール受信部
２０１    処理ルール振り分け部
２０２    処理ルール送信部
２０３    振り分けルール生成部
２０４    振り分けルール送信部
２０５    処理ルール振り分け記録部
【図１】
2006309701.tif 000003
【図２】
2006309701.tif 000004
【図３】
2006309701.tif 000005
【図４】
2006309701.tif 000006
【図５】
2006309701.tif 000007
【図６】
2006309701.tif 000008
【図７】
2006309701.tif 000009
【図８】
2006309701.tif 000010
【図９】
2006309701.tif 000011
【図１０】
2006309701.tif 000012
【図１１】
2006309701.tif 000013
【図１２】
2006309701.tif 000014
【図１３】
2006309701.tif 000015
【図１４】
2006309701.tif 000016
【図１５】
2006309701.tif 000017
【図１６】
2006309701.tif 000018
【図１７】
2006309701.tif 000019