(57)【要約】      （修正有）【課題】サービス品質（ＱｏＳ）機能をマルチ・プロセッシング・データベース環境内の並行イベント処理アプリケーションに提供する。【解決手段】処理対象のイベントに適用可能なＱｏＳ機能を判定するイベント・リスナ・インターフェース３１６と、判定されたＱｏＳ機能を呼び出すイベント・サービス・インターフェース３１９と、を含む。イベント・サービス・インターフェースは、サービス定義に基づくＱｏＳ機能のロード、初期化、及びアクティブ化を行う。イベント・サービス・インターフェースは更に、サービス・プロバイダを初期化し、ＱｏＳのサポートを必要とするイベントを処理のために各サービス・プロバイダに送信する。ＱｏＳ機能は、クラスタ化されたイベント処理データベース・システムで一般に必要とされるイベント順序付け、イベント分離、高可用性、イベント・フィルタリング、フロー制御のようなサービスを含む。【選択図】図３
2011100448.tif 000002
【特許請求の範囲】
【請求項１】
複数の並行イベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するシステムであって、
各イベント処理アプリケーションと関連付けられ、前記アプリケーションに適用可能なサービス品質機能を識別するイベント・リスナ・インターフェースと、
前記イベント・リスナ・インターフェースからアクセス可能であり、前記サービス品質機能を前記アプリケーションに提供するイベント・サービス・インターフェースと、
を備えるシステム。
【請求項２】
前記イベント・サービス・インターフェースは、識別された前記サービス品質機能をロードしアクティブ化するコンポーネントを含む、請求項１に記載のシステム。
【請求項３】
前記サービス品質機能は、前記並行アプリケーションによるイベントの処理順序を管理するイベント順序付けサービスである、請求項１又は２に記載のシステム。
【請求項４】
前記サービス品質機能は、関連イベント同士を分離して前記アプリケーション間の競合状態を回避するイベント分離サービスである、請求項１又は２に記載のシステム。
【請求項５】
前記サービス品質機能は、前記システム内のフェイルオーバ状態に対処する高可用性サービスである、請求項１又は２に記載のシステム。
【請求項６】
前記サービス品質機能は、サービス品質機能を入力イベントのサブセットに選択的に適用してシステム性能を改善するイベント・フィルタリング・サービスである、請求項１又は２に記載のシステム。
【請求項７】
複数の並行イベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するコンピュータ実装方法であって、
アプリケーションと関連付けられたイベント・リスナ・インターフェースを使用して前記アプリケーションに適用可能なサービス品質機能を識別するステップと、
前記イベント・リスナ・インターフェースからアクセス可能なイベント・サービス・インターフェースを使用して前記サービス品質機能を呼び出すステップと、
を含む方法。
【請求項８】
前記サービス品質機能は、１組のサービス定義に基づいて提供される、請求項７に記載の方法。
【請求項９】
前記イベント・サービス・インターフェースが前記サービス品質機能を呼び出すときに前記サービス品質機能をロードするステップと、
前記サービス品質機能をアクティブ化するステップと、
を更に含む、請求項７又は８に記載の方法。
【請求項１０】
前記サービス品質機能をアクティブ化する前記ステップは、前記イベント・サービス・インターフェースを初期化するステップを含む、請求項９に記載の方法。
【請求項１１】
前記イベント・サービス・インターフェースを初期化する前記ステップは、１組の宣言されたサービスを初期化するステップを含む、請求項１０に記載の方法。
【請求項１２】
前記サービス品質機能と関連付けられたサービス・プロバイダをロードするステップと、
イベントを処理のために前記サービス・プロバイダに送信するステップと、
を更に含む、請求項７乃至１１のいずれかに記載の方法。
【請求項１３】
前記サービス品質機能は、前記並行アプリケーションによるイベントの処理順序を管理するイベント順序付けサービスである、請求項７乃至１２のいずれかに記載の方法。
【請求項１４】
前記サービス品質機能は、前記アプリケーション間の競合状態が回避されるように関連イベントの処理を管理するイベント分離サービスである、請求項７乃至１２のいずれかに記載の方法。
【請求項１５】
前記サービス品質機能は、フェイルオーバ状態に対処する高可用性サービスである、請求項７乃至１２のいずれかに記載の方法。
【請求項１６】
前記サービス品質機能は、サービス品質機能を入力イベントのサブセットに選択的に適用してシステム性能を改善するイベント・フィルタリング・サービスである、請求項７乃至１２のいずれかに記載の方法。
【請求項１７】
複数の並行イベント処理アプリケーションを有するマルチ・プロセッシング環境で使用されるコンピュータ・プログラムであって、実行されるとコンピュータに請求項７乃至１６のいずれかに記載の方法を実施させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータベースに関するものであり、より詳細には、サービス品質（ＱｏＳ）機能をマルチ・プロセッシング・データベース環境内の並行イベント処理アプリケーションに提供するシステム及び方法に関するものである。
【背景技術】
【０００２】
イベント処理は、オンライン予約や金融取引等を取り扱うデータベース・アプリケーションにおける重要なタスクである。銀行データベース・システムでは、顧客の銀行口座に関する複数のイベントを処理し、口座の更新を同時に行う必要がある。例えば、銀行の自動料金支払サービスは、顧客がサービス窓口で同口座への預金を行っている間に顧客の支払を処理する可能性もある。料金支払と口座預金の取引は共に、銀行のシステムによって処理されたときに口座残高に影響を与え、また、当該システムの並行イベント処理アプリケーションによって処理する必要があるイベントである。また、これらの取引の結果は、銀行のデータベースにおいて正しく更新し、口座残高に正しく反映されるようにしなければならない。
【０００３】
データベース・アプリケーションは、増加の一途をたどる様々なワークロードに対処し、エンタープライズ・ネットワーク内の複数のコンピュータをサポートするために、典型的にはクラスタ化されたコンピュータ環境でホストされる。このようなコンピュータ・クラスタは、ユーザ要求に基づくワークロード・バランシング及びシステム・スケーリングを容易にする。例えば、銀行のデータベース・システムは、銀行の様々な支店をサポートするいくつかのサーバ上で実行されるイベント処理アプリケーションの複数のインスタンスを有する可能性がある。これらのサーバは、銀行のネットワークに接続され、異なる物理位置に存在することも同じ物理位置に存在することもある。
【０００４】
別の方法では、あるサーバがメイン処理サーバとして機能し、他のサーバがメイン・サーバのバックアップ・システムとして働くこともある。また、金曜日や月末の数日間等、取引量の増加が予想されるユーザ需要の高い期間には、イベント処理アプリケーションの他のインスタンスがシステムに追加される可能性もある。
【０００５】
このようなイベント処理アプリケーションの同時性の故に、サービス品質機能は一般に、イベント処理中のアンバランスなワークロード・アロケーションによって生じるフェイルオーバ、競合状態、システム性能の低下といった諸種のシステム問題に対処することが望まれる。現在、これらのサービス品質機能は、それぞれ個別に開発され、イベント処理アプリケーション又はそれらのアプリケーションをサポートするミドルウェアに組み込まれる。このアプローチは、追加的なソフトウェア開発費用及び開発時間を要し、また、将来追加的なサービス品質機能が必要とされたときも、それらの機能に対応する拡張を容易に行うことができない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記から分かるように、上述の欠点が解消されたサービス品質機能をデータベース環境内の並行イベント処理アプリケーションに提供するシステム及び方法が必要とされている。
【課題を解決するための手段】
【０００７】
本発明は、並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するシステム及び方法を対象とする。各イベント処理アプリケーションは、イベント・リスナ（Event-Listener）・インターフェースと、イベント・サービス（Event-Service）・インターフェースと、を含む。前記イベント・サービス・インターフェースは、前記イベント・リスナ・インターフェースからアクセス可能である。入力イベントの処理中に、前記イベント・リスナ・インターフェースは、サービス品質機能を必要とするイベントの識別と、適用可能なサービス品質機能を提供する前記イベント・サービス・インターフェースの呼び出しと、を行う。前記イベント・サービス・インターフェースは、それらのイベントを該当するサービス・プロバイダに送信し、該当するサービス・プロバイダは、所望のサービス品質機能をそれらの機能を必要とするイベント処理アプリケーションに供給する。
【０００８】
前記イベント・サービス・インターフェースは、前記サービス品質機能をメモリにロードし、前記イベント・サービス・インターフェースがサポートの提供のために呼び出されたときに前記機能をアクティブ化するコンポーネントを含む。サービス品質機能は一般に、イベントの処理中に特定の問題を防止する又は特定の問題に対処することによって全体のシステム性能を改善するのに役立つサービスである。例えば、前記サービス品質機能は、前記並行アプリケーションによるイベントの処理順序を管理するイベント順序付け（Event-Sequencing）サービスである可能性がある。イベントの処理順序は、金融取引に関するイベントのようないくつかのタイプのイベントでは処理結果に影響を与えることが多いので非常に重要である。別のサービス品質は、システム内の競合状態の原因となる可能性がある関連イベントの処理を厳密に管理するイベント分離（Event-Isolation）機能である可能性がある。競合状態は、システム・リソースが２つのイベントを同時に正しく処理することができないときに発生する。２つのイベントの並行処理によって相反する結果が生み出される。競合状態を回避するために、一方のイベントの処理を他方のイベントの処理が終了するまで開始できない可能性がある。
【０００９】
前記システムは更に、イベントの脱落及びイベントの重複を回避するためにフェイルオーバ状態に対処（handling）する高可用性（High-Availability）サービス品質機能を含む。本発明のシステムによって提供される別のサービス品質機能は、サービス品質機能をすべての入力イベントではなくイベントのサブセットに選択的に適用して全体のシステム性能を改善するイベント・フィルタリング（Event-Filtering）・サービスである。また、入力イベントの過多によって前記システムが逼迫することがないように各アプリケーションによる入力イベントの処理レートを監視及び制御するフロー制御（Flow-Control）サービス品質機能も提供される。
【００１０】
本発明の別の態様によれば、並行実行される複数の並行イベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するコンピュータ実装方法が提供される。前記方法は、アプリケーションに適用可能なサービス品質機能をイベント・リスナ・インターフェースを介して識別するステップと、前記サービス品質機能をイベント・サービス・インターフェースを介して呼び出すステップと、を含むことが好ましい。前記イベント・リスナ・インターフェースは、前記イベント処理アプリケーションと関連付けられ、前記イベント・サービス・インターフェースにアクセス可能である。
【００１１】
本発明の好ましい諸実施形態において、前記方法は、前記並行イベント処理アプリケーションによって一般に必要とされる１組のサービス品質機能を提供する。好ましい諸実施形態のサービス品質機能は、イベント順序付け、イベント分離、高可用性、イベント・フィルタリング、及びフロー制御を含む。前記イベント・リスナ・インターフェース及び前記イベント・サービス・インターフェースを使用して追加的なサービス品質機能を同様に実装し呼び出すことが可能である。
【００１２】
前記方法は更に、前記イベント・サービス・インターフェースがサービス品質機能を呼び出すときに前記サービス品質機能をロードするステップと、前記サービス品質機能をアクティブ化するステップと、を含む。前記サービス品質機能をアクティブ化する前記ステップは、宣言されたサービスを初期化するステップを含む。あるイベントがサービス品質機能を必要としていることが前記イベント・サービス・インターフェースによって判定されたときは、本発明の方法は、前記サービス機能と関連付けられたサービス・プロバイダをロードし、前記イベントを処理のために前記サービス・プロバイダに送信する。
【００１３】
本発明のまた別の態様によれば、サービス品質機能をマルチ・プロセッシング環境内の並行イベント処理アプリケーションに提供するコンピュータ・プログラムが提供される。前記コンピュータ・プログラムは、イベント処理アプリケーションに適用可能なサービス品質機能をイベント・リスナ・インターフェースを介して識別するステップと、前記サービス機能をイベント・サービス・インターフェースを介して呼び出すステップと、をコンピュータに実行させる。前記イベント・リスナ・インターフェース及び前記イベント・サービス・インターフェースは、イベント処理アプリケーションと関連付けられ、前記イベント・サービス・インターフェースは、前記入力イベントの処理中に前記イベント・リスナ・インターフェースからアクセス可能である。
【００１４】
以下の発明を実施するための形態のセクションでは、本発明の好ましい諸実施形態の構造及び動作の詳細を添付図面を参照して説明する。各図面において同様の参照番号は同様の部分を指す。この発明の概要は、添付の特許請求範囲に記載される各請求項の主題の重要な特徴を識別することを企図したものであって、これを使用して各請求項の主題の範囲を限定することは本出願人の意図するところではない。
【図面の簡単な説明】
【００１５】
【図１】本発明の諸態様が適用可能なデータベース環境を示すブロック図である。
【図２】複数のサーバがクラスタ内で動作し、それぞれクエリ処理アプリケーションを実行する、本発明の諸態様が提供され得るデータベース環境を示すブロック図である。
【図３】本発明の諸態様に係るサービス品質機能を提供する、クラスタ環境における各クエリ処理アプリケーションの重要なインターフェースを示すブロック図である。
【図４】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能を示すブロック図である。
【図５】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能及びイベント分離サービス品質機能を示すブロック図である。
【図６】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、及びイベント・フィルタリング・サービス品質機能を示すブロック図である。
【図７】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、イベント・フィルタリング・サービス品質機能、及び高可用性サービス品質機能を示すブロック図である。
【図８】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、イベント・フィルタリング・サービス品質機能、高可用性サービス品質機能、及びフロー制御サービス品質機能を示すブロック図である。
【図９】本発明の諸態様に係るイベント・リスナ・インターフェース、イベント・サービス・インターフェース、及び１組のサービス品質機能の例示的な一実施形態を示すブロック図である。
【図１０】本発明の諸態様に従ってサービス品質機能をイベント処理アプリケーションに提供する例示的なプロセスを示すフローチャートである。
【図１１】図１０に示されるサービス品質機能を提供するプロセスの更なる詳細と、本発明の諸態様に従って高可用性サービス品質機能を提供する例示的なプロセスとを示すフローチャートである。
【発明を実施するための形態】
【００１６】
本発明は一般に、サービス品質機能をデータベース環境内のイベント処理アプリケーションに提供するシステム及び方法に関するものである。より詳細には、本発明は、マルチ・プロセッシング・データベース環境内のイベント処理アプリケーションに関するサービス品質機能の識別及び呼び出しのためのフレームワークを提供する。
【００１７】
当業者には理解されるように、本発明の諸態様は、システム、方法、あるいはコンピュータ・プログラム製品として実施することができる。したがって、本発明の諸実施形態は、全体としてハードウェアの実施形態の形をとることも、全体としてソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）の実施形態の形をとることもでき、ソフトウェアとハードウェアの諸態様を組み合わせた実施形態とすることもできる。本明細書では一般に、これらを「回路」、「モジュール」、又は「システム」と総称することがある。更に、本発明の諸態様は、コンピュータ可読プログラム・コードが実装された１つ又は複数のコンピュータ可読媒体の形で実施されるコンピュータ・プログラム製品の形をとることもできる。
【００１８】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体あるいはコンピュータ可読記憶媒体であってよい。例えば、コンピュータ可読媒体は、必ずしもそれだけに限定されるわけではないが、電子系媒体、磁気系媒体、光学系媒体、電磁気系媒体、赤外線系媒体、又は半導体系媒体、装置、デバイス、あるいはそれらの任意の適切な組み合わせであってよい。コンピュータ可読媒体のより具体的な例としては、１つ又は複数の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去再書込可能読み取り専用メモリ（ＥＰＲＯＭ、又はフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスクＲＯＭ（ＣＤ‐ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、あるいはそれらの任意の適切な組み合わせが挙げられる（但し、これは網羅的なリストではない）。本明細書の文脈において、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによってあるいはそれらに関連して使用されるプログラムを収容又は記憶することができる任意の有形の媒体であってよい。
【００１９】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが実装され、例えばベースバンド又は搬送波の一部として伝搬されるデータ信号を含むことができる。かかる伝搬信号は、必ずしもそれだけに限定されるわけではないが、電磁信号、光信号、あるいはその任意の適切な組み合わせを含めた様々な形態をとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないコンピュータ可読媒体であって、命令実行システム、装置、又はデバイスによってあるいはそれらに関連して使用されるプログラムを通信し伝搬し又は移送することができる任意のコンピュータ可読媒体であってよい。
【００２０】
コンピュータ可読媒体に実装されるプログラム・コードは、必ずしもそれだけに限定されるわけではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、あるいはそれら任意の適切な組み合わせを含めた任意の適切な媒体を使用して伝送することができる。
【００２１】
本発明の諸態様の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（ＴＭ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、Ｃ＋＋等のオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語や同様のプログラミング言語のような従来の手続き型プログラミング言語を含めた１つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。上記プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとしてユーザのコンピュータ上で全体的に実行することも部分的に実行することもでき、ユーザのコンピュータ及び遠隔コンピュータにおいてそれぞれ部分的に実行することも遠隔コンピュータ又はサーバ上で全体的に実行することもできる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使用しインターネットを介して）外部のコンピュータに接続することもできる。
【００２２】
以下では本発明の諸実施形態に係る方法、装置（システム）、及びコンピュータ・プログラムに関するフローチャート図又はブロック図あるいはその両方を参照して、本発明の諸態様について説明する。フローチャート図又はブロック図あるいはその両方に示される各ブロック、及びフローチャート図又はブロック図あるいはその両方に示されるブロックの組み合わせは、コンピュータ・プログラム命令によって実行可能であることを理解していただきたい。これらのコンピュータ・プログラム命令は、コンピュータ又は他のプログラマブル・データ処理装置のプロセッサを介して実行される命令により、フローチャート又はブロック図あるいはその両方に示される１つ又は複数のブロックで指定される機能／動作を実行する手段が提供されるように、汎用コンピュータ又は専用コンピュータのプロセッサ、あるいは機械を生成する他のプログラマブル・データ処理装置のプロセッサに提供することができる。
【００２３】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイスに特定の様式で機能するよう指示することが可能なコンピュータ可読媒体に記憶することができ、その結果、フローチャート又はブロック図あるいはその両方に示される１つ又は複数のブロックで指定される機能／動作を実行する命令を含むプログラムが生成されるようにすることもできる。
【００２４】
上記コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイス上にロードすることもでき、その結果、当該コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令によってフローチャート又はブロック図あるいはその両方に示される１つ又は複数のブロックで指定される機能／動作を実行するプロセスが実現されるようなコンピュータ実装プロセスを生成する一連の処理ステップが、当該コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行されるようにすることもできる。
【００２５】
後述の各図面のフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータ・プログラム製品の可能な実装環境のアーキテクチャ、機能、及び動作を示す。この点で、フローチャート又はブロック図中の各ブロックは、指定された論理機能（単数又は複数）を実行する１つ又は複数の実行可能な指令を含むモジュール、セグメント、あるいはコード部分を表す可能性がある。いくつかの代替実施では、ブロック内に示される機能が図示の順序と異なる順序で実行される可能性があることにも留意していただきたい。例えば、連続して示される２つのブロックが実際にはほぼ同時に実行されることもあり、関与する機能によっては逆の順序で実行されることもある。また、ブロック図又はフローチャート図あるいはその両方に示される各ブロック、及びブロック図又はフローチャート図あるいはその両方に示されるブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベース・システムによって実行することも、専用ハードウェアとコンピュータ命令の組み合わせによって実行することも可能であることに留意していただきたい。
【００２６】
図１は、本発明の諸態様が含まれ得るマルチ・プロセッシング・データベース環境の高水準ブロック図である。基本ソフトウェア・レベルのコンピュータ１１５との間のインターフェースは、オペレーティング・システム１１４である。典型的には、複数の異なるユーザ・アプリケーションは、ミドルウェア・プラットフォーム１１２を介してオペレーティング・システム１１４と相互作用する。ミドルウェア・プラットフォーム１１２の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション（ニューヨーク州アーモンク）から提供されるＷｅｂＳｐｈｅｒｅ（Ｒ）製品ラインである。
【００２７】
並行実行される複数のイベント処理アプリケーション１１０は、ミドルウェア・プラットフォーム１１２とのインターフェースをとる。ミドルウェア・プラットフォーム１１２は、イベント・ストア１１３にアクセスしてデータ項目を検索し、新しいデータ項目をイベント・ストア１１３にデポジットし、イベント・ストア１１３内の既存のデータ項目を更新することができる。イベントの処理中、ミドルウェア・プラットフォーム１１２は、イベント・ストア１１３からデータを取得してデータをイベント処理アプリケーション１１０に提供するとともに、イベント処理アプリケーション１１０からデータを受信し、そのデータをイベント・ストア１１３にデポジットすることができる。
【００２８】
図２は、本発明の諸態様が実施され得るクラスタ化されたコンピューティング環境を示すブロック図である。一例として、図２のクラスタ化されたコンピューティング環境は、３つのサーバ２１０、２１１、及び２１２を含むが、ユーザの要求及び環境に応じてより多くのサーバを有することも可能である。各サーバはそれぞれ、ミドルウェア・プラットフォーム上で実行されるイベント処理アプリケーションのインスタンスを有する。一方、ミドルウェア・プラットフォームは、サーバのオペレーティング・システムとインターフェースをとる。例えば、サーバ２１０において、イベント処理アプリケーション２１３はミドルウェア・プラットフォーム２１６と相互作用し、ミドルウェア・プラットフォーム２１６はサーバのオペレーティング・システム２１９とインターフェースをとる。同様に、サーバ２１１及び２１２はそれぞれ、イベント処理アプリケーション２１４及び２１５をホストする。アプリケーション２１４及び２１５はそれぞれ、ミドルウェア・プラットフォーム２１７及び２１８を介してオペレーティング・システム２２０及び２２１と相互作用する。
【００２９】
図２は更に、イベント処理アプリケーション２１０〜２１２によって生成され得るイベント・データを維持するとともに、イベントを処理しながらそれらのアプリケーションにデータを提供するイベント・ストア２２２も示す。イベント・ストア２２２は、データ・ストアと呼ぶことも、一般にデータベースと呼ぶこともある。
【００３０】
図３は、本発明に係るサービス品質機能をマルチ・プロセッシング環境において提供するイベント処理システムの好ましい一実施形態を示すブロック図である。図２のシステムと同様に、図３のコンピューティング環境も３つのサーバ３１０〜３１２を有するクラスタ化されたコンピューティング環境である。サーバ３１０〜３１２はそれぞれ、イベント処理アプリケーション３１３〜３１５をホストする。イベント処理アプリケーション３１３〜３１５は、イベント・データをイベント・ストア３２２に記憶し、イベント・ストア３２２からデータを検索する。
【００３１】
イベント処理アプリケーション３１３〜３１５はそれぞれ、サービス品質のサポートを必要とするアプリケーションによって処理されるイベントを識別するイベント・リスナ・インターフェースを含むことが好ましい。また、イベント処理アプリケーション３１３〜３１５はそれぞれ、処理対象のイベントに適したサービス品質機能を呼び出すイベント・サービス・インターフェースを有することが好ましい。例えば、イベント処理アプリケーション３１３は、イベント・リスナ・インターフェース３１６と、イベント・サービス・インターフェース３１９と、を含む。同様に、イベント処理アプリケーション３１４及び３１５は、イベント・リスナ・インターフェース３１７及び３１８と、イベント・サービス・インターフェース３２０及び３２１と、を含む。イベント・リスナ・インターフェース３１６〜３１８及びイベント・サービス・インターフェース３１９〜３２１の更なる詳細は、図９乃至図１１を参照して後で説明する。
【００３２】
図４は、イベント処理アプリケーション４１３〜４１５をサポートするイベント順序付けサービス品質機能４２３と呼ばれるサービス品質機能を有する本発明の一実施形態を示すブロック図である。イベント処理アプリケーション４１３〜４１５はそれぞれ、イベント・リスナ・インターフェース４１６〜４１８と、イベント・サービス・インターフェース４１９〜４２１と、を含む。これらのインターフェースについては、図３を参照して上述したとおりである。イベント順序付けサービス品質機能４２３は、図面を見やすくするために、またイベント処理アプリケーション４１３〜４１５に対する共通性を示すために、イベント処理アプリケーション４１３〜４１５とは別に示してある。別の方法では、イベント順序付けサービス品質機能４２３は、データベース・コンテナの一部とすることもできる。本発明の別の実施形態において、イベント順序付けサービス品質機能４２３は、各イベント処理アプリケーションをサポートするミドルウェアの一部とすることもできる。
【００３３】
イベント順序付けサービス品質機能４２３は、処理結果の一貫性を保証するために、アプリケーション４１３〜４１５による入力イベントの処理順序の管理を担当する。イベントの処理順序を保証する選択肢は複数存在する。１つの選択肢は、システムのエントリ・ポイントで処理されるシングル・イベント・スレッドの使用である。別の選択肢は、タグ又はタイム・スタンプと各イベントとを当該イベントのソースにおいて関連付け、それらのイベント・タグ又はイベント・タイム・スタンプを利用してイベントの処理順序を決定することである。しかしながら、統合イベント処理システムでは一部のイベントのソース及びデータ・ストアが実行時にミドルウェアの制御下にないことが多い。したがって、タグ及びタイム・スタンプをすべてのイベントに付与することは実行可能でない可能性がある。それ故、イベント順序付けサービス品質機能を実装する好ましい選択肢は、シングル・イベント・スレッドとなる。
【００３４】
図５は、図４に示したシステムと同様のサービス品質を提供するシステムであるが、イベント分離サービス品質機能５２４と称する追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。図４の場合と同様に、サーバ５１０はアクティブ・サーバであり、サーバ５１１及び５１２はそのバックアップ・システムである。図５のシステムの他のコンポーネントは図４を参照して既に説明したので、ここでは改めて説明しない。イベント分離サービス品質機能５２４の主な目的は、イベント処理内の競合状態を防止することである。競合状態とは、２つのイベントの並行処理によって誤った結果又は相反する結果が生み出される状況を指す。その結果、一方のイベントの処理は他方のイベントの処理が終了するまで開始することができなくなる。競合状態が発生し得る状況の一例として、いずれも同一の銀行口座を更新する２つの銀行取引の処理が挙げられる。２つの取引が２つの個別のイベント処理アプリケーションによって並行処理された場合は、口座に関する結果として、しばしばそれらのアプリケーションによって相反する信頼性のない結果が生成される。
【００３５】
図６は、図５に示したシステムと同様のサービス品質を提供するシステムであるが、イベント・フィルタリング・サービス品質機能６２５と呼ばれる追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。図５に示した場合と同様に、サーバ６１０はアクティブ・サーバであり、サーバ６１１及び６１２はサーバ６１０のバックアップ・システムである。システム内の他のコンポーネントについては、図４及び図５を参照して上記で説明したとおりである。イベント・フィルタリング・サービス品質機能６２５は、全体のシステム性能を改善する目的で入力イベントの選択されたサブセットの処理に対して特定のサービス品質機能を適用するために、イベント処理アプリケーション６１３〜６１５によって呼び出される。このサービス品質機能は、処理対象となる他の入力イベントと関連性がないと見なすことができるため、それらの他のイベントのために呼び出されることはない。したがって、システムの計算リソースは、サービスを実際に必要とするイベントに効率的に振り向けることができる。
【００３６】
例えば、上述のイベント順序付けサービス品質機能６２３及びイベント分離サービス品質機能６２４が必要となるのは、典型的には銀行口座の場合と同様に、アプリケーションが単一のアカウント又は個人に関する情報を更新するイベントを処理するときである。このタイプのイベントは、アプリケーションによって処理される入力イベントのごく一部である可能性がある。それ故、イベント・フィルタリング・サービス品質機能６２５は、上記の２つのサービス品質機能を、アカウント又は個人に関する情報を更新するすべてのイベントではなく小グループのイベントに選択的に適用することによってシステムの性能を大幅に改善することができる。
【００３７】
図７は、図６で説明したシステムと同様のサービス品質を提供するシステムであるが、高可用性サービス品質機能７２６と称する追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。システム内の他のコンポーネントは図４乃至図６を参照して既に説明したので、ここでは改めて説明しない。高可用性サービス品質機能７２６は、システム・フェイルオーバ状態に対処し、イベントの脱落及び同一イベントの重複処理を回避するためにイベント処理アプリケーション７１３〜７１５によって使用される。
【００３８】
一例として、イベントの処理順序を制御するとともに２つのイベントの並行処理を回避するために、イベント順序付けサービス品質機能７２３及びイベント分離サービス品質機能７２４がイベント処理アプリケーション７１３〜７１５によって呼び出され得る場合を考える。これらの目的を達成する１つの可能な方法は、システムがシングル・スレッドの入力イベントを検索することである。しかしながら、このようなシングル・イベント・スレッドは、システム・フェイルオーバ、即ちシステム内のシングル・ポイント障害の影響を受けやすく、したがってイベントが脱落する恐れやシステムがフェイルオーバから回復した後に２回以上処理されるイベントが発生する恐れがある。高可用性サービス品質機能７２６は、イベント処理アプリケーション７１４及び７１５から高可用性サービス品質機能７２６に至る経路で表されるバックアップ処理チャネルを提供することによってフェイルオーバ状態に対処する。
【００３９】
図８は、図７で説明したシステムと同様のサービス品質を提供するシステムであるが、追加的なフロー制御サービス品質機能８２７を含むシステムの好ましい一実施形態を示すブロック図である。システム内の他のコンポーネントについては、図４乃至図７を参照して上記で説明したとおりである。フロー制御サービス品質機能８２７は、イベント処理アプリケーション８１３〜８１５によって、各アプリケーションの入力イベントの処理レートを管理するのに使用される。各イベント処理アプリケーション８１３〜８１５は、各アプリケーションが利用可能な計算リソース及びそれぞれの容量に応じて、フロー制御サービス品質機能８２７を使用してそれ自体のイベントの処理レートを増減させることができる。
【００４０】
図９は、本発明の諸態様に係るイベント・リスナ・インターフェース及びイベント・サービス・インターフェースを呼び出す、イベント処理アプリケーション９１８内のイベント・リスナ・ベースの好ましい一実施形態を示すブロック図である。イベント・リスナ・ベース９１０は、イベント処理アプリケーション９１８を備え、処理対象の入力イベントを検査するイベント・リスナ・インターフェース９１１と結合される。イベント・リスナ・ベース９１０は、１つ又は複数のサービス品質機能がアプリケーションに適用可能であると判定した場合は、イベント・サービス・インターフェース９１２を呼び出す。必要とされるサービス品質のタイプに応じて１つ又は複数のサービス品質機能がイベント・サービス・インターフェース９１２によって開始され得る。例えば、図９には以下のサービス品質機能、即ち、イベント順序付け９１３、イベント分離９１４、イベント・フィルタリング９１５、高可用性９１６、及びフロー制御９１７が示されている。これらのサービス品質機能については、図４乃至図８を参照して上記で説明したとおりである。システム内のイベント処理アプリケーションをサポートするために、上記と同じイベント・リスナ・ベース９１０、イベント・リスナ・インターフェース９１１、及びイベント・サービス・インターフェース９１２を使用して他のサービス品質機能をシステムに追加することも可能である。
【００４１】
図１０は、これまで説明してきたように、並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供する例示的なプロセスを示すフローチャートである。ブロック１０１０で、イベント処理アプリケーションをホストするサーバがプロセスを開始する。ブロック１０１１で、イベント・サービス・インターフェースが起動される。ブロック１０１２で、イベント・サービス・インターフェースは、イベント処理アプリケーションを開始前に検査する。ブロック１０１３で、イベント・サービス・インターフェースは、イベント処理アプリケーションがイベント・リスナ・インターフェースを含むかどうかを判定する。イベント・リスナ・インターフェースが存在しない場合には、ブロック１０１４で、イベント処理アプリケーションが通常どおり開始される。イベント・リスナ・インターフェースが存在する場合には、ブロック１０１５で、イベント・リスナ・インターフェースが初期化される。イベント処理アプリケーションをサポートするサービス・プロバイダもブロック１０１６で初期化される。次に、ブロック１０１７で、イベント・リスナ・インターフェースが開始される。ブロック１０１８で、イベント・サービス・インターフェースは、当該アプリケーションをサポートするイベント・ストアに登録され、これにより、イベント・ストアがサービス・プロバイダによって生成されるイベント・データを受け入れる準備が整えられる。ブロック１０１９で、ＱｏＳ機能を必要とするイベントが処理のためにイベント・サービス・インターフェースからサービス・プロバイダに送信される。
【００４２】
図１１は、サービス品質機能をマルチ・プロセッシング環境において提供する例示的なプロセスに関して図１０で実行された動作の更なる詳細を示すフローチャートである。ブロック１１１０におけるイベント・リスナ・インターフェースの初期化の一環として、イベント・リスナ・インターフェースは、宣言されたサービスをブロック１１１５でロードする。次に、ブロック１１１６で、宣言されたサービスの初期化が行われる。ブロック１１１１に進むと、サービス・プロバイダの初期化が行われる。本発明の好ましい諸実施形態において、サービス・プロバイダの初期化は、ブロック１１１７で各サービスをそれぞれのＸＭＬ定義に基づいて作成することを含む。また、サービス・プロバイダは、ブロック１１１８でサービス・グループに参加し、ブロック１１１９でそのサービス・グループの制御下に置かれる。ブロック１１１１のサービス・プロバイダの初期化が完了すると、ブロック１１１２で、イベント・リスナ・インターフェースが開始される。次に、ブロック１１１３で、イベント・リスナはイベント・ストアに登録される。次に、ブロック１１１４で、サービス品質のサポートを必要とするすべてのイベントがサービスのために該当するサービス・プロバイダに送信される。
【００４３】
上述の主題は、単なる例示として示したものであって、限定的なものと解釈すべきではない。当業者なら、特許請求範囲の各請求項で定義される本発明の趣旨及び範囲から逸脱しない範囲で、本明細書に記載される構成要素の様々な修正及び置き換えを行うことが可能であるだろう。各請求項の範囲は、そのような修正及び等価な構造を包含するように最も広義の意味に解釈すべきである。当業者には理解されるように、本明細書に記載のシステム、方法、及び手順は、プログラマブル・コンピュータ、コンピュータ実行可能なソフトウェア、あるいはデジタル回路の形で実施することが可能である。ソフトウェアは、コンピュータ可読媒体に記憶することができる。例えば、コンピュータ可読媒体としては、フレキシブル・ディスク、ＲＡＭ、ＲＯＭ、ハード・ディスク、取り外し可能媒体、フラッシュ・メモリ、「メモリ・スティック」、光学系媒体、光磁気媒体、ＣＤ‐ＲＯＭ等を挙げることができる。
【符号の説明】
【００４４】
１１０、２１３〜２１５、３１３〜３１５、４１３〜４１５、５１３〜５１５、６１３〜６１５、７１３〜７１５、８１３〜８１５  イベント処理アプリケーション
１１２、２１６〜２１８  ミドルウェア
１１３、２２２、３２２、４２２、５２２、６２２、７２２、８２２  イベント・ストア
１１４、２１９〜２１１  オペレーティング・システム
１１５  コンピュータ
２１０〜２１２、３１０〜３１２、４１０〜４１２、５１０〜５１２、６１０〜６１２、７１０〜７１２、８１０〜８１２  サーバ
３１６〜３１８、４１６〜４１８、５１６〜５１８、６１６〜６１８、７１６〜７１８、８１６〜８１８、９１１  イベント・リスナ・インターフェース
３１９〜３２１、４１９〜４２１、５１９〜５２１、６１９〜６２１、７１９〜７２１、８１９〜８２１、９１２  イベント・サービス・インターフェース
４２３、５２３、６２３、７２３、８２３、９１３  イベント順序付けサービス品質
５２４、６２４、７２４、８２４、９１４  イベント分離サービス品質
６２５、７２５、８２５、９１５  イベント・フィルタリング・サービス品質
７２６、８２６、９１６  高可用性サービス品質
８２７、９１７  フロー制御サービス品質
９１０  イベント・リスナ・ベース
【図１】
2011100448.tif 000003
【図２】
2011100448.tif 000004
【図３】
2011100448.tif 000005
【図４】
2011100448.tif 000006
【図５】
2011100448.tif 000007
【図６】
2011100448.tif 000008
【図７】
2011100448.tif 000009
【図８】
2011100448.tif 000010
【図９】
2011100448.tif 000011
【図１０】
2011100448.tif 000012
【図１１】
2011100448.tif 000013