(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5794513
(24)【登録日】2015年8月21日
(45)【発行日】2015年10月14日
(54)【発明の名称】マルチ・プロセッシング環境においてサービス品質機能をイベント処理アプリケーションに提供するコンピュータ・システム、方法、及びコンピュータ・プログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20150928BHJP
G06F 11/20 20060101ALI20150928BHJP
【FI】
G06F9/46 452Z
G06F11/20 310A
【請求項の数】16
【全頁数】17
(21)【出願番号】特願2010-234368(P2010-234368)
(22)【出願日】2010年10月19日
(65)【公開番号】特開2011-100448(P2011-100448A)
(43)【公開日】2011年5月19日
【審査請求日】2013年7月2日
(31)【優先権主張番号】12/612624
(32)【優先日】2009年11月4日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】チェンドン・ソウ
(72)【発明者】
【氏名】アトル・ラヴィンドラ・ダヘルカ
(72)【発明者】
【氏名】ホン・スン
(72)【発明者】
【氏名】マノイ・カンガオンカ
(72)【発明者】
【氏名】カイ・マイク・ツァン
【審査官】
井上 宏一
(56)【参考文献】
【文献】
特表2005−535949(JP,A)
【文献】
滝沢 泰久,外4名,LAQoS:多階層構造による適応的QoSモデル,情報処理学会論文誌 数理モデル化と応用,社団法人情報処理学会,2003年 5月15日,第44巻,第SIG7(TOM8)号,pp.12-25
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 −9/54
G06F 11/20
(57)【特許請求の範囲】
【請求項1】
並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を前記イベント処理アプリケーションに提供するコンピュータ・システムであって、
前記複数のイベント処理アプリケーションのそれぞれは、イベント・リスナ・インターフェース及びイベント・サービス・インターフェースを含み、
前記イベント・リスナ・インターフェースはそれぞれ、サービス品質機能を必要とするイベントの識別と、適用可能なサービス品質機能を提供する前記イベント・サービス・インターフェースの呼び出しとを行い、
前記イベント・サービス・インターフェースはそれぞれ、前記サービス品質機能に関連付けられたサービス・プロバイダをロードし、前記イベントの処理の為に当該イベントを前記ロードしたサービス・プロバイダに送信し、前記イベントを受信したサービス・プロバイダは、当該受信したイベントの処理の為に前記サービス品質機能を前記複数のイベント処理アプリケーションに供給し、それによって、当該サービス品質機能を供給されたイベント処理アプリケーションそれぞれは、当該供給されたサービス品質機能を使用して前記イベントを処理可能になる、
前記コンピュータ・システム。
【請求項2】
前記イベント・サービス・インターフェースは、前記識別されたサービス品質機能をロードしアクティブ化するコンポーネントを含む、請求項1に記載のコンピュータ・システム。
【請求項3】
前記サービス品質機能は、前記イベント処理アプリケーションによるイベントの処理順序を保証するイベント順序付けサービスである、請求項1又は2に記載のコンピュータ・システム。
【請求項4】
前記サービス品質機能は、前記複数のイベント処理アプリケーション間の競合状態が回避されるように関連する複数のイベントの処理を管理するイベント分離サービスである、請求項1又は2に記載のコンピュータ・システム。
【請求項5】
前記複数のイベント処理アプリケーションそれぞれが複数のサーバそれぞれによってホストされており、前記複数のサーバのうちの一つがアクティブ・サーバであり、前記複数のサーバのうちの残りがバックアップ・サーバであり、
前記サービス品質機能は、前記バックアップ・サーバを用いて前記コンピュータ・システム内のフェイルオーバ状態に対処する高可用性サービスである、請求項1又は2に記載のコンピュータ・システム。
【請求項6】
前記サービス品質機能は、サービス品質機能を、前記イベント処理アプリケーションによって処理されるイベントのうちのサブセットに適用してシステム性能を改善するイベント・フィルタリング・サービスである、請求項1又は2に記載のコンピュータ・システム。
【請求項7】
並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を前記イベント処理アプリケーションに提供するコンピュータ・システム上で実行する方法であって、前記複数のイベント処理アプリケーションのそれぞれは、イベント・リスナ・インターフェース及びイベント・サービス・インターフェースを含み、前記複数のイベント処理アプリケーションのそれぞれは、イベント・リスナ・インターフェース及びイベント・サービス・インターフェースを含み、前記イベント・リスナ・インターフェースはそれぞれ、サービス品質機能を必要とするイベントの識別と、適用可能なサービス品質機能を提供する前記イベント・サービス・インターフェースの呼び出しとを行い、前記イベント・サービス・インターフェースはそれぞれ、前記サービス品質機能に関連付けられたサービス・プロバイダをロードし、前記イベントの処理の為に当該イベントを前記ロードしたサービス・プロバイダに送信し、前記イベントを受信したサービス・プロバイダは、当該受信したイベントの処理の為に前記サービス品質機能を前記複数のイベント処理アプリケーションに供給し、それによって、当該サービス品質機能を供給されたイベント処理アプリケーションそれぞれは、当該供給されたサービス品質機能を使用して前記イベントを処理可能になり、
前記方法は、前記コンピュータ・システムが、
前記イベント・サービス・インターフェースを起動するステップと、
前記イベント・サービス・インターフェースによって、イベント処理アプリケーションを開始前に検査して、当該イベント処理アプリケーションが前記イベント・リスナ・インターフェースを含むかどうかを判定するステップと、
前記イベント処理アプリケーションが前記イベント・リスナ・インターフェースを含むことに応じて、当該イベント・リスナ・インターフェースを初期化するステップと、
前記イベント処理アプリケーションをサポートするサービス・プロバイダを初期化するステップと、
前記イベント・リスナ・インターフェースを開始するステップと、
前記イベント・サービス・インターフェースを、前記イベント処理アプリケーションをサポートするイベント・ストアに登録するステップであって、当該登録によって、前記イベント・ストアが前記サービス・プロバイダによって生成されるイベント・データを受け入れる準備が整えられる、前記登録するステップと、
前記イベントの処理の為に、当該イベントを前記イベント・サービス・インターフェースから前記サービス・プロバイダに送信するステップと
を実行することを含む、前記方法。
【請求項8】
前記サービス品質機能は、1組のサービス定義に基づいて提供される、請求項7に記載の方法。
【請求項9】
前記コンピュータ・システムが、
前記イベント・リスナ・インターフェースによって、宣言されたサービスをロードするステップと、
前記宣言されたサービスを初期化するステップと
を実行することを更に含む、請求項7又は8に記載の方法。
【請求項10】
前記サービス・プロバイダを初期化するステップが、
各サービスをそれぞれのXML定義に基づいて作成するステップ
を含む、請求項7〜9のいずれか一項に記載の方法。
【請求項11】
前記サービス・プロバイダを初期化するステップが、
前記サービス・プロバイダがサービス・グループに参加するステップ
を含む、請求項10に記載の方法。
【請求項12】
前記サービス・プロバイダを初期化するステップが、
前記サービス・プロバイダが前記サービス・グループの制御下に置かれるステップと
を含む、請求項11に記載の方法。
【請求項13】
前記サービス品質機能は、前記イベント処理アプリケーションによるイベントの処理順序を保証するイベント順序付けサービスである、請求項7〜12のいずれか一項に記載の方法。
【請求項14】
前記サービス品質機能は、前記複数のイベント処理アプリケーション間の競合状態が回避されるように関連する複数のイベントの処理を管理するイベント分離サービスである、請求項7〜12のいずれか一項に記載の方法。
【請求項15】
前記サービス品質機能は、サービス品質機能を、前記イベント処理アプリケーションによって処理されるイベントのうちのサブセットに適用してシステム性能を改善するイベント・フィルタリング・サービスである、請求項7〜12のいずれか一項に記載の方法。
【請求項16】
並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を前記イベント処理アプリケーションに提供するコンピュータ・プログラムであって、コンピュータ・システムに、請求項7〜15のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にデータベースに関するものであり、より詳細には、サービス品質(QoS)機能をマルチ・プロセッシング・データベース環境内の並行イベント処理アプリケーションに提供するシステム及び方法に関するものである。
【背景技術】
【0002】
イベント処理は、オンライン予約や金融取引等を取り扱うデータベース・アプリケーションにおける重要なタスクである。銀行データベース・システムでは、顧客の銀行口座に関する複数のイベントを処理し、口座の更新を同時に行う必要がある。例えば、銀行の自動料金支払サービスは、顧客がサービス窓口で同口座への預金を行っている間に顧客の支払を処理する可能性もある。料金支払と口座預金の取引は共に、銀行のシステムによって処理されたときに口座残高に影響を与え、また、当該システムの並行イベント処理アプリケーションによって処理する必要があるイベントである。また、これらの取引の結果は、銀行のデータベースにおいて正しく更新し、口座残高に正しく反映されるようにしなければならない。
【0003】
データベース・アプリケーションは、増加の一途をたどる様々なワークロードに対処し、エンタープライズ・ネットワーク内の複数のコンピュータをサポートするために、典型的にはクラスタ化されたコンピュータ環境でホストされる。このようなコンピュータ・クラスタは、ユーザ要求に基づくワークロード・バランシング及びシステム・スケーリングを容易にする。例えば、銀行のデータベース・システムは、銀行の様々な支店をサポートするいくつかのサーバ上で実行されるイベント処理アプリケーションの複数のインスタンスを有する可能性がある。これらのサーバは、銀行のネットワークに接続され、異なる物理位置に存在することも同じ物理位置に存在することもある。
【0004】
別の方法では、あるサーバがメイン処理サーバとして機能し、他のサーバがメイン・サーバのバックアップ・システムとして働くこともある。また、金曜日や月末の数日間等、取引量の増加が予想されるユーザ需要の高い期間には、イベント処理アプリケーションの他のインスタンスがシステムに追加される可能性もある。
【0005】
このようなイベント処理アプリケーションの同時性の故に、サービス品質機能は一般に、イベント処理中のアンバランスなワークロード・アロケーションによって生じるフェイルオーバ、競合状態、システム性能の低下といった諸種のシステム問題に対処することが望まれる。現在、これらのサービス品質機能は、それぞれ個別に開発され、イベント処理アプリケーション又はそれらのアプリケーションをサポートするミドルウェアに組み込まれる。このアプローチは、追加的なソフトウェア開発費用及び開発時間を要し、また、将来追加的なサービス品質機能が必要とされたときも、それらの機能に対応する拡張を容易に行うことができない。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記から分かるように、上述の欠点が解消されたサービス品質機能をデータベース環境内の並行イベント処理アプリケーションに提供するシステム及び方法が必要とされている。
【課題を解決するための手段】
【0007】
本発明は、並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するシステム及び方法を対象とする。各イベント処理アプリケーションは、イベント・リスナ(Event-Listener)・インターフェースと、イベント・サービス(Event-Service)・インターフェースと、を含む。前記イベント・サービス・インターフェースは、前記イベント・リスナ・インターフェースからアクセス可能である。入力イベントの処理中に、前記イベント・リスナ・インターフェースは、サービス品質機能を必要とするイベントの識別と、適用可能なサービス品質機能を提供する前記イベント・サービス・インターフェースの呼び出しと、を行う。前記イベント・サービス・インターフェースは、それらのイベントを該当するサービス・プロバイダに送信し、該当するサービス・プロバイダは、所望のサービス品質機能をそれらの機能を必要とするイベント処理アプリケーションに供給する。
【0008】
前記イベント・サービス・インターフェースは、前記サービス品質機能をメモリにロードし、前記イベント・サービス・インターフェースがサポートの提供のために呼び出されたときに前記機能をアクティブ化するコンポーネントを含む。サービス品質機能は一般に、イベントの処理中に特定の問題を防止する又は特定の問題に対処することによって全体のシステム性能を改善するのに役立つサービスである。例えば、前記サービス品質機能は、前記並行アプリケーションによるイベントの処理順序を管理するイベント順序付け(Event-Sequencing)サービスである可能性がある。イベントの処理順序は、金融取引に関するイベントのようないくつかのタイプのイベントでは処理結果に影響を与えることが多いので非常に重要である。別のサービス品質
機能は、システム内の競合状態の原因となる可能性がある関連イベントの処理を厳密に管理するイベント分離(Event-Isolation)機能である可能性がある。競合状態は、システム・リソースが2つのイベントを同時に正しく処理することができないときに発生する。2つのイベントの並行処理によって相反する結果が生み出される。競合状態を回避するために、一方のイベントの処理を他方のイベントの処理が終了するまで開始できない可能性がある。
【0009】
前記システムは更に、イベントの脱落及びイベントの重複を回避するためにフェイルオーバ状態に対処(handling)する高可用性(High-Availability)サービス品質機能を含む。本発明のシステムによって提供される別のサービス品質機能は、サービス品質機能をすべての入力イベントではなくイベントのサブセットに選択的に適用して全体のシステム性能を改善するイベント・フィルタリング(Event-Filtering)・サービスである。また、入力イベントの過多によって前記システムが逼迫することがないように各アプリケーションによる入力イベントの処理レートを監視及び制御するフロー制御(Flow-Control)サービス品質機能も提供される。
【0010】
本発明の別の態様によれば、並行実行される複数の並行イベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供するコンピュータ実装方法が提供される。前記方法は、アプリケーションに適用可能なサービス品質機能をイベント・リスナ・インターフェースを介して識別するステップと、前記サービス品質機能をイベント・サービス・インターフェースを介して呼び出すステップと、を含むことが好ましい。前記イベント・リスナ・インターフェースは、前記イベント処理アプリケーションと関連付けられ、前記イベント・サービス・インターフェースにアクセス可能である。
【0011】
本発明の好ましい諸実施形態において、前記方法は、前記並行イベント処理アプリケーションによって一般に必要とされる1組のサービス品質機能を提供する。好ましい諸実施形態のサービス品質機能は、イベント順序付け、イベント分離、高可用性、イベント・フィルタリング、及びフロー制御を含む。前記イベント・リスナ・インターフェース及び前記イベント・サービス・インターフェースを使用して追加的なサービス品質機能を同様に実装し呼び出すことが可能である。
【0012】
前記方法は更に、前記イベント・サービス・インターフェースがサービス品質機能を呼び出すときに前記サービス品質機能をロードするステップと、前記サービス品質機能をアクティブ化するステップと、を含む。前記サービス品質機能をアクティブ化する前記ステップは、宣言されたサービス
品質機能を初期化するステップを含む。あるイベントがサービス品質機能を必要としていることが前記イベント・サービス・インターフェースによって判定されたときは、本発明の方法は、前記サービス
品質機能と関連付けられたサービス・プロバイダをロードし、前記イベントを処理のために前記サービス・プロバイダに送信する。
【0013】
本発明のまた別の態様によれば、サービス品質機能をマルチ・プロセッシング環境内の並行イベント処理アプリケーションに提供するコンピュータ・プログラムが提供される。前記コンピュータ・プログラムは、イベント処理アプリケーションに適用可能なサービス品質機能をイベント・リスナ・インターフェースを介して識別するステップと、前記サービス
品質機能をイベント・サービス・インターフェースを介して呼び出すステップと、をコンピュータに実行させる。前記イベント・リスナ・インターフェース及び前記イベント・サービス・インターフェースは、イベント処理アプリケーションと関連付けられ、前記イベント・サービス・インターフェースは、前記入力イベントの処理中に前記イベント・リスナ・インターフェースからアクセス可能である。
【0014】
以下の発明を実施するための形態のセクションでは、本発明の好ましい諸実施形態の構造及び動作の詳細を添付図面を参照して説明する。各図面において同様の参照番号は同様の部分を指す。この発明の概要は、添付の特許請求範囲に記載される各請求項の主題の重要な特徴を識別することを企図したものであって、これを使用して各請求項の主題の範囲を限定することは本出願人の意図するところではない。
【図面の簡単な説明】
【0015】
【
図1】本発明の諸態様が適用可能なデータベース環境を示すブロック図である。
【
図2】複数のサーバがクラスタ内で動作し、それぞれクエリ処理アプリケーションを実行する、本発明の諸態様が提供され得るデータベース環境を示すブロック図である。
【
図3】本発明の諸態様に係るサービス品質機能を提供する、クラスタ環境における各クエリ処理アプリケーションの重要なインターフェースを示すブロック図である。
【
図4】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能を示すブロック図である。
【
図5】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能及びイベント分離サービス品質機能を示すブロック図である。
【
図6】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、及びイベント・フィルタリング・サービス品質機能を示すブロック図である。
【
図7】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、イベント・フィルタリング・サービス品質機能、及び高可用性サービス品質機能を示すブロック図である。
【
図8】クラスタ環境におけるクエリ処理アプリケーションをサポートする、本発明の諸態様に係るイベント順序付けサービス品質機能、イベント分離サービス品質機能、イベント・フィルタリング・サービス品質機能、高可用性サービス品質機能、及びフロー制御サービス品質機能を示すブロック図である。
【
図9】本発明の諸態様に係るイベント・リスナ・インターフェース、イベント・サービス・インターフェース、及び1組のサービス品質機能の例示的な一実施形態を示すブロック図である。
【
図10】本発明の諸態様に従ってサービス品質機能をイベント処理アプリケーションに提供する例示的なプロセスを示すフローチャートである。
【
図11】
図10に示されるサービス品質機能を提供するプロセスの更なる詳細と、本発明の諸態様に従って高可用性サービス品質機能を提供する例示的なプロセスとを示すフローチャートである。
【発明を実施するための形態】
【0016】
本発明は一般に、サービス品質機能をデータベース環境内のイベント処理アプリケーションに提供するシステム及び方法に関するものである。より詳細には、本発明は、マルチ・プロセッシング・データベース環境内のイベント処理アプリケーションに関するサービス品質機能の識別及び呼び出しのためのフレームワークを提供する。
【0017】
当業者には理解されるように、本発明の諸態様は、システム、方法、あるいはコンピュータ・プログラム製品として実施することができる。したがって、本発明の諸実施形態は、全体としてハードウェアの実施形態の形をとることも、全体としてソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)の実施形態の形をとることもでき、ソフトウェアとハードウェアの諸態様を組み合わせた実施形態とすることもできる。本明細書では一般に、これらを「回路」、「モジュール」、又は「システム」と総称することがある。更に、本発明の諸態様は、コンピュータ可読プログラム・コードが実装された1つ又は複数のコンピュータ可読媒体の形で実施されるコンピュータ・プログラム製品の形をとることもできる。
【0018】
1つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体あるいはコンピュータ可読記憶媒体であってよい。例えば、コンピュータ可読媒体は、必ずしもそれだけに限定されるわけではないが、電子系媒体、磁気系媒体、光学系媒体、電磁気系媒体、赤外線系媒体、又は半導体系媒体、装置、デバイス、あるいはそれらの任意の適切な組み合わせであってよい。コンピュータ可読媒体のより具体的な例としては、1つ又は複数の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去再書込可能読み取り専用メモリ(EPROM、又はフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスクROM(CD‐ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、あるいはそれらの任意の適切な組み合わせが挙げられる(但し、これは網羅的なリストではない)。本明細書の文脈において、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによってあるいはそれらに関連して使用されるプログラムを収容又は記憶することができる任意の有形の媒体であってよい。
【0019】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが実装され、例えばベースバンド又は搬送波の一部として伝搬されるデータ信号を含むことができる。かかる伝搬信号は、必ずしもそれだけに限定されるわけではないが、電磁信号、光信号、あるいはその任意の適切な組み合わせを含めた様々な形態をとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないコンピュータ可読媒体であって、命令実行システム、装置、又はデバイスによってあるいはそれらに関連して使用されるプログラムを通信し伝搬し又は移送することができる任意のコンピュータ可読媒体であってよい。
【0020】
コンピュータ可読媒体に実装されるプログラム・コードは、必ずしもそれだけに限定されるわけではないが、無線、有線、光ファイバ・ケーブル、RF等、あるいはそれら任意の適切な組み合わせを含めた任意の適切な媒体を使用して伝送することができる。
【0021】
本発明の諸態様の動作を実行するコンピュータ・プログラム・コードは、Java(TM)、Smalltalk(TM)、C++等のオブジェクト指向プログラミング言語、及び「C」プログラミング言語や同様のプログラミング言語のような従来の手続き型プログラミング言語を含めた1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。上記プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとしてユーザのコンピュータ上で全体的に実行することも部分的に実行することもでき、ユーザのコンピュータ及び遠隔コンピュータにおいてそれぞれ部分的に実行することも遠隔コンピュータ又はサーバ上で全体的に実行することもできる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使用しインターネットを介して)外部のコンピュータに接続することもできる。
【0022】
以下では本発明の諸実施形態に係る方法、装置(システム)、及びコンピュータ・プログラムに関するフローチャート図又はブロック図あるいはその両方を参照して、本発明の諸態様について説明する。フローチャート図又はブロック図あるいはその両方に示される各ブロック、及びフローチャート図又はブロック図あるいはその両方に示されるブロックの組み合わせは、コンピュータ・プログラム命令によって実行可能であることを理解していただきたい。これらのコンピュータ・プログラム命令は、コンピュータ又は他のプログラマブル・データ処理装置のプロセッサを介して実行される命令により、フローチャート又はブロック図あるいはその両方に示される1つ又は複数のブロックで指定される機能/動作を実行する手段が提供されるように、汎用コンピュータ又は専用コンピュータのプロセッサ、あるいは機械を生成する他のプログラマブル・データ処理装置のプロセッサに提供することができる。
【0023】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイスに特定の様式で機能するよう指示することが可能なコンピュータ可読媒体に記憶することができ、その結果、フローチャート又はブロック図あるいはその両方に示される1つ又は複数のブロックで指定される機能/動作を実行する命令を含むプログラムが生成されるようにすることもできる。
【0024】
上記コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイス上にロードすることもでき、その結果、当該コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令によってフローチャート又はブロック図あるいはその両方に示される1つ又は複数のブロックで指定される機能/動作を実行するプロセスが実現されるようなコンピュータ実装プロセスを生成する一連の処理ステップが、当該コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行されるようにすることもできる。
【0025】
後述の各図面のフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータ・プログラム製品の可能な実装環境のアーキテクチャ、機能、及び動作を示す。この点で、フローチャート又はブロック図中の各ブロックは、指定された論理機能(単数又は複数)を実行する1つ又は複数の実行可能な指令を含むモジュール、セグメント、あるいはコード部分を表す可能性がある。いくつかの代替実施では、ブロック内に示される機能が図示の順序と異なる順序で実行される可能性があることにも留意していただきたい。例えば、連続して示される2つのブロックが実際にはほぼ同時に実行されることもあり、関与する機能によっては逆の順序で実行されることもある。また、ブロック図又はフローチャート図あるいはその両方に示される各ブロック、及びブロック図又はフローチャート図あるいはその両方に示されるブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベース・システムによって実行することも、専用ハードウェアとコンピュータ命令の組み合わせによって実行することも可能であることに留意していただきたい。
【0026】
図1は、本発明の諸態様が含まれ得るマルチ・プロセッシング・データベース環境の高水準ブロック図である。基本ソフトウェア・レベルのコンピュータ115との間のインターフェースは、オペレーティング・システム114である。典型的には、複数の異なるユーザ・アプリケーションは、ミドルウェア・プラットフォーム112を介してオペレーティング・システム114と相互作用する。ミドルウェア・プラットフォーム112の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)から提供されるWebSphere(R)製品ラインである。
【0027】
並行実行される複数のイベント処理アプリケーション110は、ミドルウェア・プラットフォーム112とのインターフェースをとる。ミドルウェア・プラットフォーム112は、イベント・ストア113にアクセスしてデータ項目を検索し、新しいデータ項目をイベント・ストア113にデポジットし、イベント・ストア113内の既存のデータ項目を更新することができる。イベントの処理中、ミドルウェア・プラットフォーム112は、イベント・ストア113からデータを取得してデータをイベント処理アプリケーション110に提供するとともに、イベント処理アプリケーション110からデータを受信し、そのデータをイベント・ストア113にデポジットすることができる。
【0028】
図2は、本発明の諸態様が実施され得るクラスタ化されたコンピューティング環境を示すブロック図である。一例として、
図2のクラスタ化されたコンピューティング環境は、3つのサーバ210、211、及び212を含むが、ユーザの要求及び環境に応じてより多くのサーバを有することも可能である。各サーバはそれぞれ、ミドルウェア・プラットフォーム上で実行されるイベント処理アプリケーションのインスタンスを有する。一方、ミドルウェア・プラットフォームは、サーバのオペレーティング・システムとインターフェースをとる。例えば、サーバ210において、イベント処理アプリケーション213はミドルウェア・プラットフォーム216と相互作用し、ミドルウェア・プラットフォーム216はサーバのオペレーティング・システム219とインターフェースをとる。同様に、サーバ211及び212はそれぞれ、イベント処理アプリケーション214及び215をホストする。アプリケーション214及び215はそれぞれ、ミドルウェア・プラットフォーム217及び218を介してオペレーティング・システム220及び221と相互作用する。
【0029】
図2は更に、イベント処理アプリケーション210〜212によって生成され得るイベント・データを維持するとともに、イベントを処理しながらそれらのアプリケーションにデータを提供するイベント・ストア222も示す。イベント・ストア222は、データ・ストアと呼ぶことも、一般にデータベースと呼ぶこともある。
【0030】
図3は、本発明に係るサービス品質機能をマルチ・プロセッシング環境において提供するイベント処理システムの好ましい一実施形態を示すブロック図である。
図2のシステムと同様に、
図3のコンピューティング環境も3つのサーバ310〜312を有するクラスタ化されたコンピューティング環境である。サーバ310〜312はそれぞれ、イベント処理アプリケーション313〜315をホストする。イベント処理アプリケーション313〜315は、イベント・データをイベント・ストア322に記憶し、イベント・ストア322からデータを検索する。
【0031】
イベント処理アプリケーション313〜315はそれぞれ、サービス品質のサポートを必要とするアプリケーションによって処理されるイベントを識別するイベント・リスナ・インターフェースを含むことが好ましい。また、イベント処理アプリケーション313〜315はそれぞれ、処理対象のイベントに適したサービス品質機能を呼び出すイベント・サービス・インターフェースを有することが好ましい。例えば、イベント処理アプリケーション313は、イベント・リスナ・インターフェース316と、イベント・サービス・インターフェース319と、を含む。同様に、イベント処理アプリケーション314及び315は、イベント・リスナ・インターフェース317及び318と、イベント・サービス・インターフェース320及び321と、を含む。イベント・リスナ・インターフェース316〜318及びイベント・サービス・インターフェース319〜321の更なる詳細は、
図9乃至
図11を参照して後で説明する。
【0032】
図4は、イベント処理アプリケーション413〜415をサポートするイベント順序付けサービス品質機能423と呼ばれるサービス品質機能を有する本発明の一実施形態を示すブロック図である。イベント処理アプリケーション413〜415はそれぞれ、イベント・リスナ・インターフェース416〜418と、イベント・サービス・インターフェース419〜421と、を含む。これらのインターフェースについては、
図3を参照して上述したとおりである。イベント順序付けサービス品質機能423は、図面を見やすくするために、またイベント処理アプリケーション413〜415に対する共通性を示すために、イベント処理アプリケーション413〜415とは別に示してある。別の方法では、イベント順序付けサービス品質機能423は、データベース・コンテナの一部とすることもできる。本発明の別の実施形態において、イベント順序付けサービス品質機能423は、各イベント処理アプリケーションをサポートするミドルウェアの一部とすることもできる。
【0033】
イベント順序付けサービス品質機能423は、処理結果の一貫性を保証するために、アプリケーション413〜415による入力イベントの処理順序の管理を担当する。イベントの処理順序を保証する選択肢は複数存在する。1つの選択肢は、システムのエントリ・ポイントで処理されるシングル・イベント・スレッドの使用である。別の選択肢は、タグ又はタイム・スタンプと各イベントとを当該イベントのソースにおいて関連付け、それらのイベント・タグ又はイベント・タイム・スタンプを利用してイベントの処理順序を決定することである。しかしながら、統合イベント処理システムでは一部のイベントのソース及びデータ・ストアが実行時にミドルウェアの制御下にないことが多い。したがって、タグ及びタイム・スタンプをすべてのイベントに付与することは実行可能でない可能性がある。それ故、イベント順序付けサービス品質機能を実装する好ましい選択肢は、シングル・イベント・スレッドとなる。
【0034】
図5は、
図4に示したシステムと同様のサービス品質を提供するシステムであるが、イベント分離サービス品質機能524と称する追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。
図4の場合と同様に、サーバ510はアクティブ・サーバであり、サーバ511及び512はそのバックアップ・システムである。
図5のシステムの他のコンポーネントは
図4を参照して既に説明したので、ここでは改めて説明しない。イベント分離サービス品質機能524の主な目的は、イベント処理内の競合状態を防止することである。競合状態とは、2つのイベントの並行処理によって誤った結果又は相反する結果が生み出される状況を指す。その結果、一方のイベントの処理は他方のイベントの処理が終了するまで開始することができなくなる。競合状態が発生し得る状況の一例として、いずれも同一の銀行口座を更新する2つの銀行取引の処理が挙げられる。2つの取引が2つの個別のイベント処理アプリケーションによって並行処理された場合は、口座に関する結果として、しばしばそれらのアプリケーションによって相反する信頼性のない結果が生成される。
【0035】
図6は、
図5に示したシステムと同様のサービス品質を提供するシステムであるが、イベント・フィルタリング・サービス品質機能625と呼ばれる追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。
図5に示した場合と同様に、サーバ610はアクティブ・サーバであり、サーバ611及び612はサーバ610のバックアップ・システムである。システム内の他のコンポーネントについては、
図4及び
図5を参照して上記で説明したとおりである。イベント・フィルタリング・サービス品質機能625は、全体のシステム性能を改善する目的で入力イベントの選択されたサブセットの処理に対して特定のサービス品質機能を適用するために、イベント処理アプリケーション613〜615によって呼び出される。このサービス品質機能は、処理対象となる他の入力イベントと関連性がないと見なすことができるため、それらの他のイベントのために呼び出されることはない。したがって、システムの計算リソースは、サービスを実際に必要とするイベントに効率的に振り向けることができる。
【0036】
例えば、上述のイベント順序付けサービス品質機能623及びイベント分離サービス品質機能624が必要となるのは、典型的には銀行口座の場合と同様に、アプリケーションが単一のアカウント又は個人に関する情報を更新するイベントを処理するときである。このタイプのイベントは、アプリケーションによって処理される入力イベントのごく一部である可能性がある。それ故、イベント・フィルタリング・サービス品質機能625は、上記の2つのサービス品質機能を、アカウント又は個人に関する情報を更新するすべてのイベントではなく小グループのイベントに選択的に適用することによってシステムの性能を大幅に改善することができる。
【0037】
図7は、
図6で説明したシステムと同様のサービス品質を提供するシステムであるが、高可用性サービス品質機能726と称する追加的なサービス品質機能を含むシステムの好ましい一実施形態を示すブロック図である。システム内の他のコンポーネントは
図4乃至
図6を参照して既に説明したので、ここでは改めて説明しない。高可用性サービス品質機能726は、システム・フェイルオーバ状態に対処し、イベントの脱落及び同一イベントの重複処理を回避するためにイベント処理アプリケーション713〜715によって使用される。
【0038】
一例として、イベントの処理順序を制御するとともに2つのイベントの並行処理を回避するために、イベント順序付けサービス品質機能723及びイベント分離サービス品質機能724がイベント処理アプリケーション713〜715によって呼び出され得る場合を考える。これらの目的を達成する1つの可能な方法は、システムがシングル・スレッドの入力イベントを検索することである。しかしながら、このようなシングル・イベント・スレッドは、システム・フェイルオーバ、即ちシステム内のシングル・ポイント障害の影響を受けやすく、したがってイベントが脱落する恐れやシステムがフェイルオーバから回復した後に2回以上処理されるイベントが発生する恐れがある。高可用性サービス品質機能726は、イベント処理アプリケーション714及び715から高可用性サービス品質機能726に至る経路で表されるバックアップ処理チャネルを提供することによってフェイルオーバ状態に対処する。
【0039】
図8は、
図7で説明したシステムと同様のサービス品質を提供するシステムであるが、追加的なフロー制御サービス品質機能827を含むシステムの好ましい一実施形態を示すブロック図である。システム内の他のコンポーネントについては、
図4乃至
図7を参照して上記で説明したとおりである。フロー制御サービス品質機能827は、イベント処理アプリケーション813〜815によって、各アプリケーションの入力イベントの処理レートを管理するのに使用される。各イベント処理アプリケーション813〜815は、各アプリケーションが利用可能な計算リソース及びそれぞれの容量に応じて、フロー制御サービス品質機能827を使用してそれ自体のイベントの処理レートを増減させることができる。
【0040】
図9は、本発明の諸態様に係るイベント・リスナ・インターフェース及びイベント・サービス・インターフェースを呼び出す、イベント処理アプリケーション918内のイベント・リスナ・ベースの好ましい一実施形態を示すブロック図である。イベント・リスナ・ベース910は、イベント処理アプリケーション918を備え、処理対象の入力イベントを検査するイベント・リスナ・インターフェース911と結合される。イベント・リスナ・ベース910は、1つ又は複数のサービス品質機能がアプリケーションに適用可能であると判定した場合は、イベント・サービス・インターフェース912を呼び出す。必要とされるサービス品質のタイプに応じて1つ又は複数のサービス品質機能がイベント・サービス・インターフェース912によって開始され得る。例えば、
図9には以下のサービス品質機能、即ち、イベント順序付け913、イベント分離914、イベント・フィルタリング915、高可用性916、及びフロー制御917が示されている。これらのサービス品質機能については、
図4乃至
図8を参照して上記で説明したとおりである。システム内のイベント処理アプリケーションをサポートするために、上記と同じイベント・リスナ・ベース910、イベント・リスナ・インターフェース911、及びイベント・サービス・インターフェース912を使用して他のサービス品質機能をシステムに追加することも可能である。
【0041】
図10は、これまで説明してきたように、並行実行される複数のイベント処理アプリケーションを有するマルチ・プロセッシング環境においてサービス品質機能を提供する例示的なプロセスを示すフローチャートである。ブロック1010で、イベント処理アプリケーションをホストするサーバがプロセスを開始する。ブロック1011で、イベント・サービス・インターフェースが起動される。ブロック1012で、イベント・サービス・インターフェースは、イベント処理アプリケーションを開始前に検査する。ブロック1013で、イベント・サービス・インターフェースは、イベント処理アプリケーションがイベント・リスナ・インターフェースを含むかどうかを判定する。イベント・リスナ・インターフェースが存在しない場合には、ブロック1014で、イベント処理アプリケーションが通常どおり開始される。イベント・リスナ・インターフェースが存在する場合には、ブロック1015で、イベント・リスナ・インターフェースが初期化される。イベント処理アプリケーションをサポートするサービス・プロバイダもブロック1016で初期化される。次に、ブロック1017で、イベント・リスナ・インターフェースが開始される。ブロック1018で、イベント・サービス・インターフェースは、当該アプリケーションをサポートするイベント・ストアに登録され、これにより、イベント・ストアがサービス・プロバイダによって生成されるイベント・データを受け入れる準備が整えられる。ブロック1019で、QoS機能を必要とするイベントが処理のためにイベント・サービス・インターフェースからサービス・プロバイダに送信される。
【0042】
図11は、サービス品質機能をマルチ・プロセッシング環境において提供する例示的なプロセスに関して
図10で実行された動作の更なる詳細を示すフローチャートである。ブロック1110におけるイベント・リスナ・インターフェースの初期化の一環として、イベント・リスナ・インターフェースは、宣言されたサービス
品質機能をブロック1115でロードする。次に、ブロック1116で、宣言されたサービス
品質機能の初期化が行われる。ブロック1111に進むと、サービス・プロバイダの初期化が行われる。本発明の好ましい諸実施形態において、サービス・プロバイダの初期化は、ブロック1117で各サービス
品質機能をそれぞれのXML定義に基づいて作成することを含む。また、サービス・プロバイダは、ブロック1118でサービス・グループに参加し、ブロック1119でそのサービス・グループの制御下に置かれる。ブロック1111のサービス・プロバイダの初期化が完了すると、ブロック1112で、イベント・リスナ・インターフェースが開始される。次に、ブロック1113で、イベント・リスナはイベント・ストアに登録される。次に、ブロック1114で、サービス品質
機能のサポートを必要とするすべてのイベントがサービスのために該当するサービス・プロバイダに送信される。
【0043】
上述の主題は、単なる例示として示したものであって、限定的なものと解釈すべきではない。当業者なら、特許請求範囲の各請求項で定義される本発明の趣旨及び範囲から逸脱しない範囲で、本明細書に記載される構成要素の様々な修正及び置き換えを行うことが可能であるだろう。各請求項の範囲は、そのような修正及び等価な構造を包含するように最も広義の意味に解釈すべきである。当業者には理解されるように、本明細書に記載のシステム、方法、及び手順は、プログラマブル・コンピュータ、コンピュータ実行可能なソフトウェア、あるいはデジタル回路の形で実施することが可能である。ソフトウェアは、コンピュータ可読媒体に記憶することができる。例えば、コンピュータ可読媒体としては、フレキシブル・ディスク、RAM、ROM、ハード・ディスク、取り外し可能媒体、フラッシュ・メモリ、「メモリ・スティック」、光学系媒体、光磁気媒体、CD‐ROM等を挙げることができる。
【符号の説明】
【0044】
110、213〜215、313〜315、413〜415、513〜515、613〜615、713〜715、813〜815 イベント処理アプリケーション
112、216〜218 ミドルウェア
113、222、322、422、522、622、722、822 イベント・ストア
114、219〜211 オペレーティング・システム
115 コンピュータ
210〜212、310〜312、410〜412、510〜512、610〜612、710〜712、810〜812 サーバ
316〜318、416〜418、516〜518、616〜618、716〜718、816〜818、911 イベント・リスナ・インターフェース
319〜321、419〜421、519〜521、619〜621、719〜721、819〜821、912 イベント・サービス・インターフェース
423、523、623、723、823、913 イベント順序付けサービス品質
524、624、724、824、914 イベント分離サービス品質
625、725、825、915 イベント・フィルタリング・サービス品質
726、826、916 高可用性サービス品質
827、917 フロー制御サービス品質
910 イベント・リスナ・ベース