JP5241722B2 - 要求処理のデータ処理システムおよび方法 - Google Patents

要求処理のデータ処理システムおよび方法 Download PDF

Info

Publication number
JP5241722B2
JP5241722B2 JP2009530828A JP2009530828A JP5241722B2 JP 5241722 B2 JP5241722 B2 JP 5241722B2 JP 2009530828 A JP2009530828 A JP 2009530828A JP 2009530828 A JP2009530828 A JP 2009530828A JP 5241722 B2 JP5241722 B2 JP 5241722B2
Authority
JP
Japan
Prior art keywords
request
processing
message
service request
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009530828A
Other languages
English (en)
Other versions
JP2010506277A (ja
Inventor
トッド、ステファン、ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010506277A publication Critical patent/JP2010506277A/ja
Application granted granted Critical
Publication of JP5241722B2 publication Critical patent/JP5241722B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベース・システムおよびメッセージング・システムなどの分散データ処理環境での応用を有する。本発明は、複数のリクエスタからの要求に応答して高可用性データ・ストアを更新するデータ処理システムでの特定の応用を有する。
ますます、コンピュータ・ハードウェアおよびコンピュータ・ソフトウェアを使用して実施される発注システムなどのビジネス・アプリケーションが、高可用性および高信頼性を有することを要求される。多くの会社は、彼らのデータ処理システムが毎日24時間動作し、絶対にデータを失わないことを求め、最高の情報テクノロジ会社は、これらの需要に応えてきた(いくつかの場合に、99.99%を超えるデータ処理システムの信頼性を達成する)。会社は、通常、高性能(信頼性の低下を伴わない高スループット)をも求め、これは、データ処理要件が高まる際のスケーラブルな解決策を必要とするが、会社は、高コストを望まない。
高可用性データ処理システムは、単一故障点を避けるために冗長性(ストレージ、プロセッサ、およびネットワーク接続の)および回復特徴(バックアップおよびフェールオーバ)の組合せを使用して開発されてきた。1つのそのような解決策は、単一システム・イメージとして一緒に働く高信頼性IBMメインフレーム・コンピュータのクラスタなど、冗長ストレージ配置を使用するサーバの密に一体化されたクラスタにまたがって分散された高可用性データベース(HADB)を含む。高性能および高可用性を達成するためにデータ共用を並列処理と組み合わせるプロセッサのクラスタは、時々、並列システム・コンプレックスまたは「並列シスプレックス」と呼ばれる。並列シスプレックス内で実施される通常のHADBは、多数の分散リクエスタからのデータ取出しおよびデータ更新に関する複数の並列要求を高性能および高信頼性を伴って処理することができる。
HADBシステムは、メッセージ・キューをビジネス・ロジックおよびルーティング機能と組み合わせてデータ・アクセスを管理する、堅牢な高可用性メッセージ処理システムを含むことができる。これは、保証された1回のみのメッセージ送達を提供することができ、そのようなシステムは、減らされた遅延を伴って障害を効率的に処理することができる。しかし、通常そのような高可用性システム内で実施されるトランザクション管理、冗長性管理、および回復特徴は、通常の要求処理中にかなりの処理オーバーヘッドをこうむる。そのような処理のいずれもが、潜在的なビジネス・コストを有する。というのは、高可用性データ処理システムが、より信頼性の低いシステムより高価であるからである。この追加処理の例が、HADBシステム内の2フェーズ・コミット処理すなわち、より具体的には、HADBシステム内のリソースとそのシステムの外部のリソースとの間の2フェーズ・コミット処理の要件である。また、HADBシステム内でのメッセージ・キューの実施は、通常、HADB内でのメッセージ・データのログ記録を必要とする。
代替の解決策は、各サーバが包括的な高可用性特徴を実施しない従来のアプリケーション・サーバ・クラスタ内など、HADBシステムとは別々の並列メッセージ・ディスパッチャのクラスタを使用することである。並列処理は、単一メッセージ・ディスパッチャと比較して、スループットを改善し、障害の影響を減らすことができ、HADBシステムからのメッセージ・ディスパッチャ機能の分離は、処理オーバーヘッドを減らすことができる。しかし、メッセージ・ディスパッチャが、高可用性特徴なしでサーバ上で動作する場合には、1つのサーバに影響する障害が、そのサーバに送られたメッセージの処理を遅延させる。これは、その間に他のメッセージが他のメッセージ・ディスパッチャによって成功裏に処理される可能性にもかかわらず、問題になり得る。障害を発生したメッセージ・ディスパッチャに送られたメッセージ(本明細書では、「孤立メッセージ(orphan message)」または「孤立要求(orphan request)」と称する)は、通常、そのメッセージ・ディスパッチャがオンラインに戻るまで遅延される。孤立メッセージとは矛盾した状態を作ってしまうメッセージのことである。
一部の既知のクラスタ化されたメッセージング・システムは、孤立メッセージの処理における遅延を減らすためにノード障害に続く高速回復のための複数の特徴を実施するが、そのような手法は、まだ、孤立メッセージの遅延される処理という問題を完全には解決していない。
本発明は、複数のリクエスタからの要求に応答して高可用性データ・ストアを更新するデータ処理システム内での処理オーバーヘッドを低減させることである。
本発明の第1の態様は、データ・ストアと少なくとも1つのサービス・リクエスタとを含むデータ処理環境内で使用される、サービス要求を管理する方法であって、
リクエスタのサービス要求を複数の要求処理コンポーネントのうちの少なくとも2つに複製するステップであって、複数の要求処理コンポーネントのそれぞれが、通信経路内でリクエスタとデータ・ストアとの間に配置される、ステップと、
サービス要求に関する責任を成功裏に主張しなかったすべての要求処理コンポーネントによるサービス要求の処理を阻止するステップと、
第1要求処理コンポーネントがサービス要求に関する責任を主張するステップと、
第1要求処理コンポーネントがデータ・ストア内のデータにアクセスすることを含めて主張されたサービス要求の第1要求処理コンポーネントの複製を処理するステップと
を含む方法を提供する。
一実施形態で、責任を主張するステップは、サービス要求の識別子をデータ・ストア内のリポジトリに入力することを含み、この方法は、複数の要求処理コンポーネントのいずれもがサービス要求の重複する識別子をリポジトリに入力するのを阻止することをさらに含む。
一実施形態で、サービス要求の処理を阻止するステップは、要求処理ロジックの実行を阻止することを含む。代替実施形態で、サービス要求の処理を阻止するステップは、データ・ストア内のデータの更新を阻止することを含む(すなわち、あるビジネス・ロジックの実行およびおそらくはデータ・ストアからのデータの読み取りを含む、要求の処理の一部を可能とすることができるが、データ更新の書き込みは防がれる)。
本発明の一実施形態で、データ処理環境は、複数の分散サービス・リクエスタを含み、データ・ストアは、高可用性データ処理システムで動作するデータベースを含む。
一実施形態で、要求処理コンポーネントは、どのデータ・アクセス動作がデータ・ストア内で要求されるかを判定するために、受け取られた要求を処理するビジネス・ロジックと、その要求の複製のサービス・リクエスタからデータ・ストアへの非同期送達を処理する要求ディスパッチャ機能とを含む。
本発明の第2の態様は、
データ・ストアと、
複数の要求処理コンポーネントであって、複数の要求処理コンポーネントのそれぞれが、通信経路内で少なくとも1つのサービス・リクエスタとデータ・ストアとの間に配置される、複数の要求処理コンポーネントと、
サービス・リクエスタのサービス要求を複数の要求処理コンポーネントのうちの少なくとも2つに複製するレプリケータと、
サービス要求の責任を成功裏に主張しなかったすべての要求処理コンポーネントがサービス要求を処理するのを阻止する機能と、第1要求処理コンポーネントのためにサービス要求の責任を主張し、これによって第1処理コンポーネントがサービス要求の複製を処理することを可能にする機能とを含む主張マネージャと
を含むデータ処理システムを提供する。
責任を主張する機能は、データ・ストア内のリポジトリ内にサービス要求の識別子を入力することを含むことができ、主張マネージャは、複数の要求処理コンポーネントのいずれもが重複するサービス要求識別子をリポジトリに入力するのを阻止する機能をさらに含むことができる。
本発明の一実施形態は、複数の要求処理コンポーネント(要求ディスパッチャおよび関連するビジネス・ロジック)を提供することと、要求を2つ以上の要求処理コンポーネントに複製することと、その後、特定の要求の1つの複製だけが高可用性データ・ストアを更新できることを保証するために高可用性システム内での要求の処理を管理することとによって、既存の高可用性サーバ環境の1つまたは複数の問題を軽減する。
互いに並列に働く複数の要求処理コンポーネントを提供することと、並列要求処理コンポーネントにまたがって各要求を複製することとによって、遅延された孤立要求の問題を減らすことが可能である。ある複製要求が、大幅に遅延される場合に、別の複製要求が成功しなければならない。これらの要求処理コンポーネントを高可用性システムの外部で実施することによって、高可用性システムに高い処理オーバーヘッドを課すことなく孤立要求の問題のこの軽減を実施することが可能になるが、高可用性システム内の1回のみのデータ更新の管理がデータ保全性を維持する。本発明の一実施形態では、要求メッセージが、エンキューされ、メッセージのビジネス・ロジック処理は、高可用性システムの外部で実行されるが、結果のHADB更新およびキューからの要求メッセージの最終的除去は、高可用性システムによってトランザクショナル・スコープの下で処理される。本発明の特定の実施形態は、HADBシステム内で1回のみの更新を管理する効率的な機構を提供する。
本発明は、どのメッセージもが並列に配置されたコンポーネントのセットのうちの1つだけに割り当てられる従来の並列処理とは異なる。というのは、本発明では、要求またはメッセージが、並列要求処理コンポーネントのセットのうちの複数にまたがって複製されるからである。
本発明のもう1つの態様は、メッセージをキューに挿入する動作の信頼性とエンキューされたメッセージの比較的高い可用性とを達成するのに複製を使用するが、単一の高可用性データベース(HADB)システムと通信し、HADBの保証された1回のみの更新のためにトランザクション処理およびロック機構を使用する、メッセージ・キューイング・システムを提供する。メッセージの処理(およびHADBのすべての必要な更新)の後のキューからのメッセージの最終的な除去の動作は、HADBシステム内で保持されるデータによって制御される。
伝統的なキューイング・システムでは、キューにメッセージを挿入するアクション(たとえば、PUT_messageコマンドに応答する)、キュー上のメッセージのストレージ、およびメッセージを取り出すアクション(たとえば、GET_messageコマンドに応答する)のすべてが、同一のシステム内で実施され、したがって、同一の信頼性機構を使用する。本発明によるメッセージ・キューイング・システムは、キューの端でのデータ保全性および可用性を保証するためにキューの他端で単一高可用性システムの機能を利用しながらキューの一端で複製を使用することによって(安価なコンポーネントの使用にかかわらず信頼性を達成することを可能にする)、そのような伝統的システムから区別される。これは、メッセージを挿入している可能性があるアプリケーション・プログラムが、安価で比較的信頼性のないコンポーネントに頼る環境で既に動作しているが、メッセージが高可用性システム内のリソースを更新することを意図されている時に、かなりの利益を有する。
一実施形態で、各要求のHADB更新の1回のみの処理は、HADBのリポジトリ内に、HADB内で処理される要求の要求識別子を保存することと、複製された要求がHADBを更新できる前に要求識別子のリポジトリをチェックすることとによって達成される。要求識別子のリポジトリ内のエントリは、要求が処理されつつある間にロックすることができ(通常のHADBロック機能を使用して)、この処理のコミットは、高可用性システム内で管理される。要求識別子の後続認識は、その要求のすべての複製の削除を保証する。要求識別子のリポジトリエントリ内のエントリのロックおよび重複エントリの回避は、同一要求の複数の複製がHADBを複数回更新できないことを保証する。
本発明の一実施形態では、要求識別子のリポジトリは、テーブルの1行が1つの要求に対応するデータベース・テーブルである。このテーブルを、以下では「主張テーブル」と称する。第1要求処理コンポーネントが、要求識別子を主張テーブルに挿入し、主張テーブル行に対するロックを入手し、HADBのうちで関連するデータ・アイテムを保持している部分に対するもう1つのロックを入手する。ロックは、従来のHADB機構によって実施され、特定の要求の処理が完了するまで維持され、この時に、この要求によって要求されるすべてのHADB更新がコミットされ、この要求のすべての複製が削除される。
本発明の一実施形態は、要求識別子を主張テーブル内に挿入することの1つまたは複数の失敗した試みを単一のHADBトランザクションが包含できるようにすること、ならびに要求識別子の最終的な成功の挿入とメッセージ・ディスパッチャおよびビジネス・ロジックによる対応する要求処理(「書き込み」要求の場合のHADB更新を含む)を包含することによって、HADBトランザクションを浪費せずにメッセージの1回のみの処理を実施する。
本発明のもう1つの実施形態は、上で説明した方法を実行するためにデータ処理装置を制御する命令のセットを含むコンピュータ・プログラムを提供する。このコンピュータ・プログラムは、記録媒体に記録されたプログラム・コードを含むコンピュータ・プログラム製品として使用可能にすることができ、あるいは、インターネットを介するダウンロードのためなど、データ転送媒体を介する転送のために使用可能にすることができる。
本発明の実施形態を、添付図面を参照して、例として下でより詳細に説明する。
本発明は、データ・ストアにアクセスできることと、最小限の遅延および障害からの最小限の影響を伴ってデータ・ストアに更新を適用できることとが必要である、高可用性データ処理環境に関する特定の利益を有する。
当技術分野で既知の通り、高可用性は、さまざまな形で達成することができる。第1の既知の解決策は、多数の冗長コンポーネントと、これらの冗長コンポーネントの間でフェールオーバを配置構成するための特殊化された追加コンポーネントとを含む複雑なハードウェアを使用する。これらの冗長コンポーネントには、プロセッサ、メモリ、コントローラ、ハード・ドライブ、および通信バスを含めることができる。そのような複雑なハードウェアは、適当なコンピュータ・ソフトウェアによって補足することができる。そのような高可用性システムの例が、IBM社のDB2データベース・システム・ソフトウェアおよびIBM社のz/OSオペレーティング・システムを動作させるIBM zSeriesデータ処理システムである。IBM、zSeries、z/OS、およびDB2は、International Business Machines Corporation社の商標である。
第2の既知の解決策は、それぞれが障害を受けやすいが比較的安価な多数の単純なシステムに、それらの間で作業を共用し、障害を発生したシステムを回避する比較的単純なソフトウェア機構を提供する。そのようなシステム上で動作するソフトウェアの各インスタンスは、通常、高可用性システム内より回復力が低く、任意の一時に動作している十分なシステムが必ずあることを保証するために多重度に頼る。この第2の解決策は、一般に、大量処理およびステートレス・ロジックに使用されるが、複数のコピーがある時にどれがデータの最終的インスタンスであるかを判断するという問題のゆえに、ステートフル情報に使用するのはよりむずかしい。
上で説明した第1の既知の解決策をもう一度参照すると、図1は、高可用性データ・ストア(HADB)10が、キュー80、ビジネス・ロジック30の実行から生じるデータ・アクセス動作をディスパッチするのに使用されるメッセージ・ディスパッチャ20を含むメッセージング・システムに関連する、分散データ処理システムの概略表現である。ビジネス・ロジック30は、HADBに対するどの更新が必要であるかを判定し、次に、HADBと協力してその更新を管理し、その更新をキューからのメッセージの除去と調整する責任を負う。たとえば、HADB 10は、図1では、それぞれがそれ自体のデータ処理能力およびデータ・ストレージ能力を有する3つ以上のサーバ12、14、および16にまたがって分散されて図示されている。複数のリクエスタ40、50、および60が、メッセージ・ディスパッチャ20を介してデータ・アクセスに関する要求をサブミットする。
システム全体として高可用性を達成するために、メッセージ・ディスパッチャ20およびそのビジネス・ロジック30を、HADBを保持する高可用性サーバ内に一体化することができる。上で注記したように、HADBは、IBM Corporation社のDB2データベースとすることができ、サーバは、z/OSオペレーティング・システムを動作させるIBM zSeriesコンピュータ・システムとすることができ、IBM zSeriesコンピュータ・システムは、最大の信頼性および可用性を提供するために冗長プロセッサ、ストレージ回復特徴およびフェールオーバ回復特徴を含む。この信頼性および可用性は、望ましく、いくつかの応用例に関してクリティカルな要件であるが、メッセージ・ディスパッチャおよびビジネス・ロジックは、それでも、望ましくない処理オーバーヘッドを高可用性サーバに課す。たとえば、HADBへの1回のみの更新の保証は、通常、HADB更新と対応する要求メッセージの最終的な削除との間の障害に対する保護のために2フェーズ・コミット処理を伴う。具体的に言うと、リクエスタ40、50、および60によるキューへのメッセージの挿入が、メッセージ・ストアとリクエスタによって使用される他のリソースとの間の調整を必要とする場合がある。この調整は、高可用性メッセージ・ストアに関するかなりのオーバーヘッドを課す。本発明は、この問題を軽減する。
代替案では、メッセージ・ディスパッチャおよびビジネス・ロジック機能を、高可用性特徴を有さないハードウェア上で動作する標準アプリケーション・サーバ内で実施することができる。そのようなアプリケーション・サーバは、当技術分野で周知であり、IBM Corporation社のWebSphere Application Serverなどの製品を、高可用性に関する包括的サポートを提供しない比較的安価なコンピュータ・システム上で動作させることができる。WebSphereは、InternationalBusiness Machines Corporation社の商標である。
上で説明した異なる処理スタイルを混合し、一部のデータ処理システムを低コストの重複するハードウェアで実行するが長期データ・ストレージに関して堅牢な高可用性データベース(HADB)にアクセスすることも既知である。ビジネス・ロジックおよびメッセージ・ディスパッチャ機能をHADBシステムから分離する手法は、少なくとも通常の順方向処理中に、HADBを動作させている高可用性サーバに対するより少ない影響を有する。しかし、ビジネス・ロジックおよびメッセージ・ディスパッチャを標準アプリケーション・サーバおよび低コスト・ハードウェアで動作させることは、「孤立要求」に関する遅延のリスクを高める。すなわち、障害を発生したアプリケーション・サーバに送られる要求は、そのアプリケーション・サーバがオンラインに戻るまで遅延される。
本発明は、この問題を軽減する。下で詳細に説明する第1の実施形態では、複数の分散サービス・リクエスタが、サービス要求を要求処理システムに入力することができる。要求処理システムは、高可用性データ・ストアと通信する複数の安価な要求処理コンポーネントを含む。サービス要求は、複数の要求処理コンポーネントのうちの少なくとも2つに複製される。サービス要求に関する責任を成功裏に主張しなかったすべての要求処理コンポーネントは、データ・ストアに対する更新の重複を避けるために、そのサービス要求を処理するのを阻止される。第1の要求処理コンポーネントが、サービス要求に関する責任を主張し、その後、データ・ストア内のデータへのアクセスを含めて、主張されたサービス要求の複製を処理する。複数の要求処理コンポーネントのすべてが、サービス要求の責任に対する重複主張に入ることを阻止され、このサービス要求に関する責任の保証された1回のみの主張は、データ・ストアに対する更新の重複を阻止する
図2に、本発明の実施形態による分散データ処理システムを示す。図1と同様に、複数の分散並列リクエスタであるリクエスタ40、50、および60が、サービスを要求しており、サービスのビジネス・ロジックは、HADBからのデータ・アクセスを必要とする。しかし、図2の解決策では、要求は、並列に配置された複数のメッセージ・ディスパッチャ20、22、24、および26に関連する複数の関連するキュー80、82、84、および86のうちの2つ以上にまたがって複製される。図1のリクエスタは、メッセージを単一のメッセージ・ディスパッチャ20の入力キューに置くが、図2では、メッセージは、レプリケータ70を介する分配のためにエンキューされる。レプリケータ70は、N個の並列メッセージ・ディスパッチャのセットの選択されたサブセットkにメッセージを複製するという限定された役割を満足し、ここで、1<k=Nである。特定の実施態様では、kが2であり、もう1つの実施態様では、kが3である。
図2に示されているように、レプリケータ70は、すべての要求がリクエスタ40、50、および60によって送られる、受け取るコンポーネントとすることができる。もう1つの実施形態(後で図3を参照して説明する)では、レプリケータ機能を、リクエスタのシステムで、またはネットワーク内の他所の中間プロキシ・サーバで実施することができる。
図2の実施形態によれば、レプリケータ70による要求の分配は、各メッセージを少なくとも2つのメッセージ・キュー(80、84)に置くkウェイ・ファン・アウト分配であるが、例外に関しては下の説明を参照されたい。図示の実施形態では、各メッセージ・ディスパッチャが単一のキューに関連付けられ、たとえば、メッセージ・ディスパッチャ20は、キュー80に関連付けられる。代替実施形態は、キューとメッセージ・ディスパッチャとの間のより複雑な関連付けを可能にする。レプリケータによる特定のk個のキューの選択は、セットN内からのラウンドロビン割振りほどの単純なものとすることができるが、作業負荷平衡化技法を使用する他の選択を実施することができる。
本発明の一実施形態で、数k(ならびに特定のk個のキューのどれを選択するか)は、メッセージごとの基礎で決定され、比較的高価値の緊急のメッセージについては大きい値のkを、低価値のメッセージについては小さい値のkを選択する。特定の実施形態は、メッセージの複製に対する例外を提供し、識別可能に低価値のまたは非緊急のメッセージについて単一のメッセージ・ディスパッチャ(k=1)の選択を可能にする。したがって、これらのメッセージは、従来技術と同様に処理され、本発明からは利益を得ないが、他のメッセージへの本発明の適用を妨げない。
短く図3を参照すると、これは、分散複製機能の異なる実施態様によって図2とは異なる。各リクエスタは、めいめいのレプリケータ70、71、および72のサービスを利用し、レプリケータ70、71、および72は、個々のリクエスタ40、50、および60にローカルとし、そのリクエスタ40、50、および60専用とすることができ、あるいは、分散ネットワーク内のある中間位置に配置することができる。レプリケータごとに、複製要求を送るべきキューの個数kおよびk個のキューの特定のセットの選択は、動的に決定することができ、あるいは、図3によって暗示されるように事前定義とすることができる。
図2と図3との両方の実施形態では、メッセージ・ディスパッチャ(20、22、24、26)のそれぞれが、要求ディスパッチャ機能と、HADB 10に更新を適用できるビジネス・ロジック(30、32、34、36)とを実施する。第1の実施形態では、HADBは、メッセージ・ディスパッチャによって、単一のシステムとみなされ、効率または可用性に関するすべてのHADB内部セグメンテーションは、リクエスタおよびメッセージ・ディスパッチャに不可視である。そのようなシステムでは、メッセージ・ディスパッチャは、その入力キューからメッセージを取り出し、ビジネス・ロジックを呼び出し、主張テーブル内のエントリの挿入を要求する責任を負うが、HADB内のルーティングは、メッセージ・ディスパッチャの責任ではない。上で注記し、下でより詳細に説明するように、「主張テーブル」は、要求処理コンポーネントが処理する責任があると主張したサービス要求を識別するサービス要求識別子のリポジトリである。HADB構造が外部リクエスタから不可視である解決策、およびHADB内部特徴が要求されたHADBセグメントを識別する責任を負う解決策は、当技術分野で周知である。ビジネス・ロジックは、通常、アプリケーション固有であり、たとえば、商品またはサービスの注文を処理し、その注文を反映するためにHADBに適用すべき特定の更新命令を生成する。複数のディスパッチャへのメッセージの複製のゆえに、メッセージ・ディスパッチャ(20、22、24、26)およびその入力キュー(80、82、84、86)は、下で説明するように、高可用性特徴を実施するのに必要ではない。
HADB 10は、HADBビジネス・データ90に加えて、主張テーブル100を含む。主張テーブル100は、要求識別子(メッセージ識別子または別の要求識別子など)を含む単一のキー列を有するデータベース・テーブルである。メッセージ・ディスパッチャのうちの1つだけが、任意の特定の要求識別子について主張テーブルにエントリを挿入することを許可される。主張マネージャ110は、主張テーブル100に関連し、主張テーブルを更新できる前にそのテーブルを検査する責任を負う。本発明の現在の実施形態では、レプリケータ70、メッセージ・ディスパッチャ20、ビジネス・ロジック30、および主張マネージャ110の機能が、ソフトウェアで実施されるが、これらの論理動作を、電子回路を使用するなど、ハードウェアで実施することができる。
主張テーブルには、サービス要求に対する責任を成功裏に主張した時刻および主張者のアイデンティティなどの追加情報をも含めることができる。これは、本発明の動作に必須ではないが、システム挙動に関する貴重な診断情報および統計情報を提供することができる。
実際には、主張マネージャの動作は、メッセージ・ディスパッチャの分散プロセッサ内で実行される主張マネージャ固有コードと、HADB内で動作する包括的データベース・ロック・コードとの間で区分される可能性が高い。これを、後でより詳細に示す。
一実施形態で、メッセージ・ディスパッチャ機能およびビジネス・ロジックは、J2EEアプリケーションがJava (R) Messaging Service(JMS)メッセージを非同期に処理することを可能にする、JMSを実施するEnterpriseJava (R) Beans(EJB)であるMessage-Driven Beans内で実施される。この実施形態では、メッセージ・ディスパッチャを動作させるアプリケーション・サーバは、JMSメッセージを多数の分散リクエスタ(J2EEアプリケーション・クライアントまたは他のJMSアプリケーションもしくはJMSシステム)から受け取るJ2EEアプリケーション・サーバである。単一のMessage-DrivenBeanが、複数のクライアントからのメッセージを処理することができる。主張マネージャ110のロジックは、Message-Driven Beansのメソッドを呼び出すEJBコンテナの関数として実施することができる。メッセージが到着する時に、コンテナは、まず、主張マネージャ110ロジックを呼び出して、メッセージが、既に処理されているメッセージの複製ではないことを保証する。次に、コンテナは、Message-DrivenBeanのメソッドを呼び出し、このメソッドは、特定のJMSメッセージ・タイプを識別し、アプリケーション固有ビジネス・ロジックに従ってそのメッセージを処理する(標準J2EE解決策と同様に)。このアプリケーション固有ビジネス・ロジックは、メッセージ内の情報を処理して、特定のデータベース更新命令を生成し、このデータベース更新命令は、その後、HADBに送られる。Java(R)およびJava(R)ベースの商標は、SunMicrosystems, Inc.社の商標である。
代替実施形態では、メッセージのディスパッチが、従来のメッセージング・プログラムがメッセージGET動作を実行することによって実施される。この場合に、主張マネージャ110は、メッセージング・システムの一部になり、主張テーブル100は、メッセージ・ストアへのHADB拡張であるが、メッセージ・ストアの残りは、異なるテクノロジを使用して実施することができる。
潜在的に多数のリクエスタ40、50、および60のいずれもが、レプリケータ70を介して要求メッセージを送ることによってサービスを要求することができる。各メッセージは、使用可能なキュー80および84のサブセットkで複製され、エンキューされる。関連するk個のメッセージ・ディスパッチャ(20、24)のいずれもが、複製メッセージに関する次の動作を実行することができる。これらの動作を、図4、5、6、7、および8を参照して説明する。メッセージ・ディスパッチャのうちの1つによる要求メッセージの受取時に、HADBトランザクションが開始され210、その後、現在のメッセージ・ディスパッチャ24が、そのキュー84から第1のメッセージを取り出す220。これらのステップを、図6、7、および8に示す。HADBのビジネス・データおよび主張テーブルに対する更新(下で説明する)は、同一のHADBトランザクション内で行われて、主張テーブルとビジネス・データとの両方が成功裏に更新され、あるいは、更新が不成功の場合には両方がバック・アウトされることを保証する。
メッセージ・ディスパッチャ24は、このメッセージに対する主張をHADB 10の主張テーブル100に挿入することを試み230、具体的には、一意の要求識別子を主張テーブル内に新しい行として挿入することを試みる。主張が挿入される前に、要求識別子のスキャンが実行される240(主張テーブルの行のすべてのスキャンに対応する論理スキャンであるが、テーブルの完全な物理的スキャンの必要を避けるために主張テーブルのインデックスに対して実行される)。このスキャンは、すべての一致する要求識別子を識別する。図5、6、および8に示されているように、試みられる主張は、別のメッセージ・ディスパッチャが主張テーブル内にこの要求識別子を既に入力していると判定される250場合には成功しないが、図4、6、および7に示されているように、主張テーブル内に一致するエントリがない場合には、主張は成功する。主張テーブル100への主張の成功の入力260の時に、HADBは、他のメッセージ・ディスパッチャ20、22、26による変更を阻止するために主張テーブルのこの行をロックする270。
取り出されたメッセージのコピーは、メッセージ・ディスパッチャのキュー84内に残るが、メッセージ状況は、主張テーブルを更新するアクションによって、「受取済み」状況(すなわち、メッセージが、キュー上で使用可能であり、取出しの準備ができている)から「取り出されたが未確定」状況(すなわち、メッセージが処理のためにキューから取り出されたが、メッセージの処理がまだコミットされていない)に暗黙のうちに変更される。
図4、6、および7を参照すると、新しい要求識別子を主張テーブル100に挿入することを試みる第1のメッセージ・ディスパッチャ24(k個のディスパッチャのセットからの)が、成功する。主張テーブルは、その要求識別子を含む新しい行130を挿入すること260によって拡張され、この第1のディスパッチャは、標準HADBロッキング機構を使用して主張テーブルのその行に対するロックを入手する270。具体的に言うと、HADBは、主張マネージャ110からの要求に応答して主張テーブルに対するロックを実施し、どのメッセージ・ディスパッチャ24がロックされた行に関連するかのレコードを維持する。行ロックは、第1のメッセージ・ディスパッチャのメッセージが処理されつつある間に(すなわち、下でより詳細に説明するように、HADBトランザクションおよびメッセージ・トランザクションのコミットまたは打切りまで)、他のメッセージ・ディスパッチャ20、22、26による変更を阻止する
主張テーブルへの新しい入力は、テーブルが現在その特定の要求識別子のエントリを含まない場合に限って、主張マネージャ110によって許可され、したがって重複するテーブル入力は可能ではない。主張マネージャ110が、一致する要求識別子を有する主張テーブル内のエントリを見つける240、250場合には、図5、6、および8に示されているように、第1のメッセージ・ディスパッチャ24によって入手された主張エントリは、変更がすべての他の要求ディスパッチャのために行われるのを阻止する
第1のメッセージ・ディスパッチャ24のためにロックされるべき一致する主張テーブルの行130が見つかる場合290には、異なるメッセージ・ディスパッチャの、主張テーブルに重複エントリを挿入する要求は、メモリ内に保持されて、一致するエントリを保持している主張テーブルの行のアンロックを待つ300。第1のメッセージ・ディスパッチャの主張テーブルの行130は、対応するHADBトランザクションおよびメッセージ・トランザクションの結果に応じて、アンロックされる前に削除されるかコミットされる場合があり、したがって、この段階では、主張テーブルを更新する後続の試みが成功するのか失敗するのかを予測することは不可能である。これが、重複する主張要求が再試行を可能にするためにメモリ内に保持される場合がある理由である。
主張テーブルを更新する要求がメモリ内で保持されている間に、メッセージ・ディスパッチャ20の入力キュー上のメッセージのコピーは、今や、暗黙の状況「取り出されたが未確定」を有する。HADBは、この複製要求のデータ更新の処理を開始してはいないが、同一の要求のもう1つの複製が処理されつつあり、したがって、現在の複製の主張要求は、その処理の結果を待つためにメモリ内で保持される。したがって、それに関してHADB更新が試みられるメッセージのすべての複製が、今や、同一の暗黙の状況「取り出されたが未確定」を有するが、これらは、そのめいめいのメッセージ・ディスパッチャのキュー80、82、84、86上で未コミットのままになる。メッセージ・ディスパッチャ20、22、24、26が、明示的な状況情報を書き込む必要は全くない。というのは、暗黙の状況が、主張テーブル100から簡単に判定されるからである。複製メッセージを取り出し、処理する試みが行われる場合に、状況が簡単に判定され、状況は、そのような取出しおよび更新が試みられるまでは重要ではない。
代替案では、一致する主張テーブル行が、既にコミットされ、アンロックされている場合には、主張テーブルに重複エントリを挿入するすべての後続の試みが、障害を発生しなければならない。この場合に、障害レポートが、主張テーブルへの重複エントリの挿入を試みているメッセージ・ディスパッチャに返され310、そのメッセージ・ディスパッチャは、その入力キューから対応するメッセージを削除する320。
テーブル全体または関連する主張テーブル・エントリを含むページに対する、より粒度の大きいロックではなく、行固有ロックが、主張テーブルに対して入手される。というのは、要求の複製が、主張テーブルを更新しようとする頻繁な衝突する試みがある可能性を高くするからである。より粒度の小さい行ロックは、より粒度の大きいページ・ロックと比較して、延期されなければならない要求の個数を減らし、ページ・ロックが実施される場合に発生するはずの異なるメッセージの間の衝突を回避する。主張テーブル・レベルでの頻繁な衝突の可能性にもかかわらず、主張要求の処理は、高可用性システム内でほとんど処理を必要とせず、具体的には、メッセージ・ディスパッチャ機能およびビジネス・ロジックのすべてが高可用性システム内で実施される場合より少ない性能コストを伴うものとすることができる。
また、本発明の一実施形態は、レプリケータ70によって生成される複製のタイミングにわずかな「よろめき」を導入することによって、同一メッセージの複数の複製の間の衝突を減らす。通常、すべてのメッセージ・ディスパッチャが、同一のレートで動作している場合に、最初に解放される複製は、第2の複製をスケジューリングする試みが行われる前に完全に処理される。第1のディスパッチャが一時的に動作不能である場合には、第2の複製は、それでも、タイムリーな形で処理される。両方の複製を処理する同時の試みがある場合があるが、そのような場合の回数は、減らされる。
上で注記したように、衝突する更新の阻止は、HADBが、一致する主張テーブル・エントリを識別すること240、250に応答して、主張テーブルを更新する新しい要求を一時的に格納することを伴う場合がある(すなわち、主張要求が、メモリ内のキューに保持される場合がある)。主張要求は、現在処理されつつあるサービス要求の結果(または、タイムアウトが先に発生する場合にはタイムアウト330)を待ち300、その後に限って、新しい主張要求を受け入れるのか拒否するのかを判断する。メモリ内に保持される主張要求は、「アンロック済み」信号が主張マネージャから受け取られるまで、またはタイムアウトまで(いずれであれ先に発生した方)残る。タイムアウトには、たとえば事前定義の遅延期間の後に、タイムアウトしたメッセージ・ディスパッチャのために主張テーブルを更新する試みの繰返しを続けることができる。「アンロック済み」信号は、主張要求に関するすべての一致する要求識別子を識別する250ための主張テーブル100の繰り返されるスキャン240を促す。
主張テーブル更新が成功する260時に、ロックが、主張テーブルの関連する行に対して入手され270、ロックが、HADBマネージャ120がページ・ロックを入手する図4に概略的に示されているように、HADBの関連する部分に対して入手される(たとえば、指定されたサーバ上のデータベース行またはページ140をロックする)。両方のロックが、HADB内で使用可能な標準機構を使用して実施される。主張テーブル100の成功の更新は、HADBマネージャ120がHADB内のHADBビジネス・データ90を更新することの先行条件であり、1つのメッセージ・ディスパッチャ24だけが、各要求について主張テーブルを更新することができる。HADBビジネス・データ90の更新は、HADB内に衝突するロックがない時に限って発生し得る。これは、更新要求のkウェイ複製にかかわらず、キュー・データのそれぞれにかわからずに、複製された要求ごとのHADBビジネス・データの1回のみの更新を保証し、メッセージ・ディスパッチャおよびビジネス・ロジックは、HADBの高可用性システムの外部で実施される。
上で注記したように、HADBの関連部分の識別は、HADB自体の中でまたはメッセージ・ディスパッチャの機能として(どちらの場合でも、通常のデータ・アクセス機構を使用して)実行することができる。HADBのロックされたページ140への書き込みアクセスは、現在、現在のメッセージ・ディスパッチャ24に関連するビジネス・ロジック34用に予約される(いくつかの実施態様では、ロックは、排他的読み取りアクセスをも予約する)。メッセージ・ディスパッチャ24内のビジネス・ロジック34が実行されて、要求を処理し350、HADBに対する必要な更新のすべてを判定する。次に、判定された更新が、HADBビジネス・データ90に適用される360。
たとえば、ビジネス・ロジックは、商品またはサービスに関する注文を指定するメッセージを処理し、注文のデータベースを更新することができる。もう1つの例の要求は、おそらくは製品の準備または配送の進行状況を検査する、既存の注文に関連する状況情報の取出しに関する要求とすることができる。多数の他のビジネス・アプリケーションを、本発明を使用して実施することができる。
要求の処理350、360が成功の場合に370、HADBに対するすべての変更(主張テーブル・エントリ更新およびビジネス・データ更新を含む)がコミットされる380。次に、HADBトランザクションのコミットが、メッセージ・ディスパッチャ・システムに確認され、このメッセージ・ディスパッチャ・システムは、次に、処理されたメッセージを削除する320。
1つの成功のメッセージ・ディスパッチャによるメッセージ・トランザクションのコミットにもかかわらず、そのメッセージの複製は、k個のメッセージ・ディスパッチャ20、22、26のうちの他の1つのキュー80、82、86上に、ある期間の間残る場合がある。そのメッセージの各残っている複製は、今や、コミット済みという暗黙の状況を有し、単にそのめいめいのキューからの削除を待つ。
要求の成功の処理350、360に続いて、要求の処理がコミットされた390時に、同一要求の別の複製に関する主張テーブル内の主張の挿入のすべての新しい試みが、拒否される。この場合に、要求メッセージの一意の要求識別子と主張テーブル内の要求識別子のセットとの間の比較が、一致を識別し、一致する要求は、今や、アンロックされた主張テーブル・エントリによって反映される、「コミット済み」状況を有する。その状況は、そのメッセージを、今や、重複するエントリを主張テーブルに追加することを不成功に試みているめいめいのメッセージ・ディスパッチャ20のキュー80から削除しなければならないことを確認するのに十分である。
メッセージの他の複製をも削除しなければならないが、コミットされた要求メッセージに関する最終的な削除命令は、すべての複製の瞬間的な削除を要求はしない。コミットされたHADB更新は、メッセージ取出しをコミットする(すなわち、すべてのメッセージ・ディスパッチャの入力キューからそのメッセージを削除する)最終的な命令として有効であるが、特定の入力キューの実際の削除は、対応するメッセージ・ディスパッチャが主張テーブルに主張を入力することを試みるまで延期することができる。
上で説明した、第1のメッセージ処理が進行中である(まだコミットされていない)間の、重複する主張要求のメモリへの保存、ならびに第1のメッセージ処理が成功の場合の重複する主張要求の拒否および対応する複製メッセージの削除は、比較的わずかな処理オーバーヘッドを伴い、具体的には、高可用性システムおよびHADBでの高価な処理を最小にする。
勝つ複製の成功の処理および削除は、HADBとメッセージ・ストアとの間の高価な2フェーズ・コミット動作を伴わない。メッセージ・ディスパッチャが、勝つ複製メッセージのコミット動作380とメッセージ削除動作320との間に障害を発生する場合には、主張機構は、負ける複製の実行を阻止するのと正確に同一の形で、勝つ複製メッセージの再実行を阻止する。単一インスタンス・メッセージの再実行を阻止する機構が、既に当技術分野で既知である(時々、「one-and-a-half phase」コミットと称する)ことを了解されたい。
上で観察したように、本発明が使用されるシステムにおいてさえ、レプリケータ70が、ある種の低価値メッセージについて本発明を利用しないことを選択する場合がある。これらのメッセージが、複製されないものとしてレプリケータによってタグ付けされ、特殊な形で処理されるかもしれない。他の実施形態では、低価値の非緊急要求メッセージは、one-and-a-half phaseコミットの利益を達成するために、上で説明した主張機構を使用して処理される。
代替実施形態では、主張テーブルのロックされた一致する行の識別が、主張要求の明示的拒絶を伴うめいめいのメッセージ・ディスパッチャへの応答をトリガすることができる(上で説明したメモリへの主張要求の保存ではなく)。これは、データベースが「presumed commit」ロッキング戦略を使用する場合に発生する可能性がある。この明示的拒否は、主張テーブルを更新する試みの後続の再試行まで、複製メッセージをめいめいのメッセージ・ディスパッチャのキューに残すはずであり、これは、主張テーブルのロックされた行を更新する要求が一時的にメモリに保存される実施形態より多くの処理を伴う可能性が高い。
上で説明した実施形態のいずれにおいても、主張テーブルを更新する試みは、要求メッセージの第1の複製の処理がまだ進行中である(すなわち、その処理がまだ完了しておらず、まだ失敗する可能性がある)間は、拒否される可能性がある。したがって、拒否される主張要求に対応する要求メッセージを保持するメッセージ・ディスパッチャは、そのメッセージ・ディスパッチャがその要求を削除する暗黙の命令(すなわち、一致する主張テーブル・エントリがアンロックされていることの判定に応答する主張テーブル更新障害レポート(これが、メッセージ処理が成功裏に完了し、コミットされたことを暗示するので))を受け取らない限り、その後に主張テーブルの更新を再試行することができる。そのような後続の再試行は、事前定義の遅延期間の後に実行することができ、あるいは、再試行の頻度を、現在のシステム・アクティビティに依存するものとすることができる。
メッセージ処理中に障害を経験する場合には、HADBトランザクションを打ち切らなければならない400、410。この状況では、主張テーブル・エントリが削除され、主張テーブル行がアンロックされる410。障害の性質に応じて、メッセージ・ディスパッチャは、[a]後に再び試みられる処理のために複製メッセージを入力キューに残すこと、[b]複製メッセージを送達不能キューに移動すること、または[c]複製メッセージを削除し、オリジナル・リクエスタに障害通知を送ることを含むさまざまな処置を講じることができる。その代わりに、障害を発生するのがメッセージ・ディスパッチャ自体である場合があり、その場合には、システムは、HADBトランザクションを暗黙のうちに打ち切り(未確定の主張テーブル・エントリを除去することを含む)、複製メッセージは、後続再試行のために入力キューに残る。障害処理のこれらの例は、当技術分野で既知である。
特定の最適化が、本発明の一実施形態で、HADB処理オーバーヘッドを減らすために実施される。新しいHADBトランザクションが開始されたが、特定の要求の複製が既に処理されているので主張テーブル更新が不成功であった場合に、新しいHADBトランザクションは、終了されない。そうではなく、次の要求メッセージが、第1のHADBトランザクション内で特定のメッセージ・ディスパッチャの入力キューから取り出される。これを、図8に示す。次に、メッセージ・ディスパッチャは、この、次の要求メッセージの主張テーブル・エントリの追加(テーブルへの要求識別子の入力)を試み、前に説明した理由のうちの1つのゆえに成功するか失敗するかのいずれかになる。この形で、HADBの1回のみの更新の達成に用いられるトランザクション処理機構が、処理オーバーヘッドを減らすために最適化される(主張テーブルにエントリを追加する試みごとにトランザクションを開始し、終了することを要求される解決策と比較して)。
図9の表1は、HADB内のデータへのアクセスを要求するサービスに関する要求の処理に対する複数の代替手法の処理オーバーヘッドの一部(トランザクションの個数およびどのリソースが用いられるか)を表す。高可用性システム内で完全に実施される解決策は、キュー、ビジネス・ロジック、およびHADBと共に、すべてが同一システム内で実施され、高可用性システム内の2つのトランザクションを用いる。メッセージ挿入トランザクションは、メッセージのデータのログ記録を含み、もう1つの高可用性システム・リソースと調整することができる。これらのトランザクションの両方が、高可用性システム・リソースに関するかなりのオーバーヘッドを伴う。これは、表1の左側の解決策(A)として示されている。
高可用性システムの外部でキューおよびビジネス・ロジックを実施する解決策(B)は、高可用性システム内のすべてのキュー管理アクティビティを回避する。しかし、通常の手法は、たとえば上で述べた遅延された孤立メッセージ問題のゆえに、1回のみのメッセージ処理の所望の保証を実現しないはずである。また、メッセージ処理トランザクションは、HADBリソースと外部キューイング・システムとの間の調整を伴う可能性が高く、これは、内部的に調整されるトランザクションより高価である。この解決策(B)は、表1の中央の列で表される。
本発明の実施形態は、表1の右側の解決策(C)として表される。これは、全体としてより多数の動作を伴う可能性が高く、したがって、直観に反するが、これらの動作のほとんどは、高可用性システムに影響しない。1つのトランザクションだけが、高可用性システム内で必要であり、このトランザクションは、同一HADB内に保持される他のデータと調整され、同一の主張マネージャ110およびHADBマネージャ120を使用している。また、キュー上の潜在的に大量のデータが、高可用性システムには保存されないので、これが、高可用性システムでのログ記録を節約する。
上で詳細に説明した実施形態では、メッセージ・ディスパッチャおよび関連するビジネス・ロジックは、HADB内のデータの編成を認識しない。代替実施形態では、メッセージ・ディスパッチャまたは関連するビジネス・ロジックのいずれかが、HADBセグメンテーションおよびHADB構造の認識を伴って実施され、適当なHADBセグメントへの最も効率的な経路を保証するルーティング/選択ロジックを含む。そのようなルーティングおよび選択ロジックは、当技術分野で周知である。そのような実施形態では、主張マネージャが、アプリケーション・データ・セグメントと主張テーブル・セグメントとの間のより高いアフィニティのために主張テーブルをセグメント化することができる。
もう1つの例の実施形態では、メッセージが、より効率的なメッセージ処理のために、各メッセージ・ディスパッチャによってバッチで処理される。このバッチ化は、2つ以上のメッセージ処理コンポーネントが主張テーブルに衝突する主張を入力することを試みる可能性を高めるが、衝突する主張の試みの処理は、比較的低い処理コストである。具体的に言うと、衝突する主張の試みの、HADBに対する影響は、少ない。この実施形態によるメッセージ・ディスパッチャによって実行される動作を、下に表す。
メッセージ・バッチに対するループ
メッセージ・トランザクションを開始する
[メッセージに関するループ]
HADBトランザクションを開始する
主張が成功するまでループする
メッセージを得る
主張をHADB主張テーブルに挿入することを試みる
主張の試みが失敗する場合には、次のメッセージの主張を試みるためにループする
主張が成功する場合には、継続する
ビジネス・ロジックを実行し、HADBを更新する
HADBをコミットする
[次のメッセージにループする]
メッセージ(1つまたは複数)をコミットする
次のメッセージ・バッチにループする
上で説明した実施形態は、主張テーブルにエントリを挿入する試みの失敗に応答して、通常処理中にサービス要求メッセージの重複を削除する機構を含む。この機構を、さらなる機構によって増補することができる。たとえば、成功するメッセージ・ディスパッチャが、その成功について他のメッセージ・ディスパッチャに通知することができ、これらの他のメッセージ・ディスパッチャは、その後、メッセージのそのメッセージ・ディスパッチャの複製を削除することができる。さらに、主張テーブルをクリーン・アップする機構を設けることができ、このクリーン・アップには、メッセージ・ディスパッチャの入力キューからの成功して処理されたメッセージの関連する複製のクリーン・アップが付随しなければならない。
多数のメッセージが、1回のみの処理を必要とはしない。たとえば、単純な読み取り専用データベース照会を要求するメッセージは、データ保全性を犠牲にせずに重複させることができる。本発明は、メッセージの1回のみの実行を保証するコストに関連する問題を軽減するが、それでも、この最適化された1回のみの処理でさえ、それに関する必要を避けることが好ましい可能性がある。当技術分野で既知の通り、不必要な1回のみの処理を回避する方法は、メッセージ内での必要なサービス品質の明示的なタグ付けと、非永続メッセージが1回のみの処理のオーバーヘッドをこうむる必要がないなどの仮定の使用とを含む。メッセージ・ゲット・オプションの1つが「syncpoint if persistent(永続ならば同期点)」であるIBM Corporation社のWebSphere MQ製品など、一部のシステムは、明示的サポートを含む。
本発明のさまざまな実施形態を、本発明を異なる実施形態でどのように実施できるかの詳細な例示を提供するため、および本発明の特定の実施形態の利益のいくつかを強調するために上で説明した。しかし、本発明は、上で説明した特定の例示的実施形態には限定されず、当業者は、添付の特許請求の範囲に示された本発明の範囲に含まれるさまざまな修正形態を思い浮かべるであろう。
当技術分野で既知のものなど、単一メッセージング・システムが要求メッセージを処理し、更新命令をデータベースに送る、データ処理システムを示す概略図である。 本発明の実施形態による分散データ処理システムを示す概略図である。 本発明のもう1つの実施形態による分散データ処理システムを示す概略図である。 本発明の実施形態による、主張テーブルを更新する要求ディスパッチャを示す概略図である。 主張テーブルの更新を試み、拒否される要求ディスパッチャを示す概略図である。 本発明の実施形態による方法を示す概略流れ図表現である。 要求メッセージが成功して処理される、本発明の実施形態による方法のステップのシーケンスを示す図である。 重複メッセージがデータベースの更新を許可されない、方法のステップのシーケンスを示す図である。 サービス要求の処理に対するさまざまな代替手法に関する相対処理オーバーヘッドを示す図である。
10 高可用性データ・ストア(HADB)
12 サーバ
14 サーバ
16 サーバ
20 メッセージ・ディスパッチャ
22 メッセージ・ディスパッチャ
24 メッセージ・ディスパッチャ
26 メッセージ・ディスパッチャ
30 ビジネス・ロジック
32 ビジネス・ロジック
34 ビジネス・ロジック
36 ビジネス・ロジック
40 リクエスタ
50 リクエスタ
60 リクエスタ
70 レプリケータ
71 レプリケータ
72 レプリケータ
80 キュー
82 キュー
84 キュー
86 キュー
90 HADBビジネス・データ
100 主張テーブル
110 主張マネージャ
120 HADBマネージャ
130 行
140 ページ

Claims (18)

  1. データ・ストアと少なくとも1つのサービス・リクエスタとを含むデータ処理環境内で使用される、サービス要求を管理する方法であって、
    リクエスタのサービス要求を複数の要求処理コンポーネントのうちの少なくとも2つに複製するステップであって、前記複数の要求処理コンポーネントのそれぞれが、通信経路内で前記リクエスタと前記データ・ストアとの間に配置される、ステップと、
    第1要求処理コンポーネントが前記サービス要求に関する責任を主張するステップと、
    前記サービス要求に関する責任を成功裏に主張しなかったすべての要求処理コンポーネントが前記サービス要求を処理するのを阻止するステップと、
    前記第1要求処理コンポーネントが前記データ・ストア内のデータにアクセスすることを含めて前記主張されたサービス要求の前記第1要求処理コンポーネントの複製を処理するステップと
    を含む方法。
  2. 責任を主張する前記ステップが、前記サービス要求の識別子を前記データ・ストア内のリポジトリに入力するステップを含み、前記方法が、前記複数の要求処理コンポーネントのいずれもが前記サービス要求の重複する識別子を前記リポジトリに入力するのを阻止することをさらに含む、請求項1に記載の方法。
  3. 前記データ処理環境が、複数の分散サービス・リクエスタを含み、前記データ・ストアが、高可用性データ処理システムで動作するデータベースを含む、請求項1または2に記載の方法。
  4. 前記要求処理コンポーネントが、サービス要求に応答して前記データ・ストア内のデータに対する更新を要求するビジネス・ロジックを含み、すべての要求処理コンポーネントが前記サービス要求を処理するのを阻止する前記ステップが、前記めいめいの要求処理コンポーネントのビジネス・ロジックの実行を阻止するステップを含む、請求項1ないし3のいずれか一項に記載の方法。
  5. 前記サービス要求の完全な処理が、前記データ・ストア内のデータの更新を必要とし、前記サービス要求の処理を阻止する前記ステップが、前記データ・ストア内のデータの更新を阻止することによって完了した処理を阻止することを含む、請求項1ないし3のいずれか一項に記載の方法。
  6. 前記サービス要求の処理を阻止する前記ステップが、前記データ・ストア内のデータへの読み取りアクセスと書き込みアクセスとの両方を阻止することによって完了した処理を阻止することを含む、請求項5に記載の方法。
  7. 前記要求処理コンポーネントが、メッセージング・システムであり、前記複製されたサービス要求が、前記メッセージング・システムのうちの少なくとも2つの入力キューにエンキューされたメッセージであり、識別子を入力する前記ステップが、第1メッセージング・システムの入力キューからのメッセージの成功の取出しに応答して、前記第1メッセージング・システムのために実行される、請求項2に記載の方法。
  8. 前記要求処理コンポーネントが、メッセージング・システムであり、前記複製されたサービス要求が、前記メッセージング・システムのうちの少なくとも2つの入力キューにエンキューされたメッセージであり、前記複数の要求処理コンポーネントのいずれもが重複する識別子を入力するのを阻止する前記ステップが、メッセージ取出し動作が以前に主張されたサービス要求に関するすべてのメッセージを取り出すのを阻止することを含む、請求項2に記載の方法。
  9. 識別子を入力する前記ステップが、前記複製サービス要求を処理する前記ステップが完了するまで前記識別子をロックするステップを含み、いずれかの要求処理コンポーネントが重複する識別子を前記リポジトリに入力するのを阻止する前記ステップが、前記ロックを検査することと、前記ロックが解放されるまで識別子を入力する試みを延期するか拒否することとを含む、請求項2に記載の方法。
  10. 前記リポジトリ内のアンロックされた識別子の識別が、前記識別されたサービス要求が成功裏に処理されたことの確認として認識され、前記リポジトリに重複する識別子を入力することを試みるすべての要求処理コンポーネントが、前記めいめいの要求処理コンポーネントの前記サービス要求の複製を削除することによって前記アンロックされた識別子に応答する、請求項9に記載の方法。
  11. 前記リポジトリが、各テーブル行が前記識別されたサービス要求の責任に対する主張に対応する単一のサービス要求識別子を含むデータベース・テーブルである、請求項ないし10のいずれか一項に記載の方法。
  12. 前記データ・ストアが、前記データベース・テーブルを含むデータベースであり、前記主張されたサービス要求の前記複製の成功の処理の影響が、前記データ・ストアに対する更新であり、前記成功の処理が、前記要求を処理する前記ステップおよび前記データ・ストアを更新する前記ステップの単一フェーズ・コミットを含む、請求項11に記載の方法。
  13. リクエスタのサービス要求の前記複製することが、前記サービス要求の前記複製を時間的に分離することを含む、請求項1ないし12のいずれか一項に記載の方法。
  14. データ・ストアと、
    複数の要求処理コンポーネントであって、前記複数の要求処理コンポーネントのそれぞれが、通信経路内で少なくとも1つのサービス・リクエスタと前記データ・ストアとの間に配置される、複数の要求処理コンポーネントと、
    サービス・リクエスタのサービス要求を前記複数の要求処理コンポーネントのうちの少なくとも2つに複製するレプリケータと、
    前記サービス要求の責任を成功裏に主張しなかったすべての要求処理コンポーネントが前記要求を処理するのを阻止する機能と、第1要求処理コンポーネントのために前記サービス要求の責任を主張する機能とを含む主張マネージャと
    を含むデータ処理システム。
  15. 責任を主張する前記機能が、前記データ・ストアのリポジトリ内に前記サービス要求の識別子を挿入する機能を含み、前記主張マネージャが、前記複数の要求処理コンポーネントのいずれもが重複するサービス要求識別子を前記リポジトリに入力するのを阻止する機能をさらに含む、請求項14に記載のデータ処理システム。
  16. データ・ストアと少なくとも1つのサービス・リクエスタとを含むデータ処理環境内での動作を制御するコンピュータ・プログラムであって、コンピュータに、
    リクエスタのサービス要求を複数の要求処理コンポーネントのうちの少なくとも2つに複製するステップであって、前記複数の要求処理コンポーネントのそれぞれが、通信経路内で前記リクエスタと前記データ・ストアとの間に配置される、ステップと、
    第1要求処理コンポーネントが前記サービス要求に関する責任を主張するステップと、
    前記サービス要求に関する責任を成功裏に主張しなかったすべての要求処理コンポーネントが前記要求を処理するのを阻止するステップと、
    前記第1要求処理コンポーネントが前記データ・ストア内のデータにアクセスすることを含めて前記主張されたサービス要求の前記第1要求処理コンポーネントの複製を処理するステップと
    を実行させるためのコンピュータ・プログラム。
  17. データ・ストアを含むデータ処理環境内で使用される、サービス要求を管理する方法であって、
    データ・ストア・トランザクションの外部で、複数のメッセージ処理コンポーネントのめいめいの入力キューにサービス要求の複数の複製をエンキューするステップと、
    データ・ストア・トランザクション内で、第1メッセージ処理コンポーネントが、前記データ・ストア内のデータにアクセスすることを含む前記サービス要求の第1複製を取り出し、前記サービス要求の前記第1複製を処理すると同時に、前記第1メッセージ処理コンポーネントが障害を経験しない限り、前記第1メッセージ処理コンポーネント以外の前記複数のメッセージ処理コンポーネントのいずれもが同一のサービス要求の他の複製を処理するのを阻止するステップと
    を含む方法。
  18. 前記第1メッセージ処理コンポーネントが前記サービス要求を成功裏に処理することに応答して前記データ・ストア・トランザクションの単一フェーズ・コミットを実行することと、前記コミットされたデータ・ストア・トランザクションの識別に応答して前記サービス要求の複製を削除することとをさらに含む、請求項17に記載の方法。
JP2009530828A 2006-10-05 2007-09-13 要求処理のデータ処理システムおよび方法 Active JP5241722B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0619644.8A GB0619644D0 (en) 2006-10-05 2006-10-05 Data processing system and method of handling requests
GB0619644.8 2006-10-05
PCT/EP2007/059651 WO2008040621A1 (en) 2006-10-05 2007-09-13 Data processing system and method of handling requests

Publications (2)

Publication Number Publication Date
JP2010506277A JP2010506277A (ja) 2010-02-25
JP5241722B2 true JP5241722B2 (ja) 2013-07-17

Family

ID=37453991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009530828A Active JP5241722B2 (ja) 2006-10-05 2007-09-13 要求処理のデータ処理システムおよび方法

Country Status (7)

Country Link
US (1) US9767135B2 (ja)
EP (1) EP2082338A1 (ja)
JP (1) JP5241722B2 (ja)
KR (1) KR20090055608A (ja)
CN (1) CN101512527B (ja)
GB (1) GB0619644D0 (ja)
WO (1) WO2008040621A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5385545B2 (ja) * 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US8793691B2 (en) * 2010-04-15 2014-07-29 Salesforce.Com, Inc. Managing and forwarding tasks to handler for processing using a message queue
WO2012162969A1 (zh) * 2011-09-01 2012-12-06 华为技术有限公司 一种分布式队列消息读取方法及设备、系统
JP5874399B2 (ja) 2012-01-05 2016-03-02 株式会社リコー 処理装置
CN103310334B (zh) * 2012-03-16 2016-12-28 阿里巴巴集团控股有限公司 一种业务处理的方法及装置
CN104145260B (zh) * 2012-03-26 2016-08-10 华为技术有限公司 一种分布式作业系统的业务处理方法、执行单元和系统
CN104423982B (zh) * 2013-08-27 2018-03-06 阿里巴巴集团控股有限公司 请求的处理方法和处理设备
CN103455604A (zh) * 2013-09-03 2013-12-18 北京京东尚科信息技术有限公司 一种防止重复处理数据的方法及装置
US10795910B2 (en) 2013-12-31 2020-10-06 Sybase, Inc. Robust communication system for guaranteed message sequencing with the detection of duplicate senders
GB2533086A (en) 2014-12-08 2016-06-15 Ibm Controlling a multi-database system
CN107301179A (zh) * 2016-04-14 2017-10-27 北京京东尚科信息技术有限公司 数据库读写分离的方法和装置
US11086689B2 (en) * 2016-06-22 2021-08-10 Atos Convergence Creators Gmbh Method for automatically and dynamically assigning the responsibility for tasks to the available computing components in a highly distributed data-processing system
CN108921532A (zh) * 2018-06-28 2018-11-30 中国建设银行股份有限公司 交易请求处理方法、装置及服务器
CN111866191B (zh) * 2020-09-24 2020-12-22 深圳市易博天下科技有限公司 消息事件的分发方法、分发平台、系统及服务器
CN113220730B (zh) * 2021-05-28 2024-03-26 中国农业银行股份有限公司 业务数据的处理系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335325A (en) * 1987-12-22 1994-08-02 Kendall Square Research Corporation High-speed packet switching apparatus and method
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
EP0676354B1 (de) * 1994-04-08 2000-08-16 Ferag AG Verfahren und Anordnung zum Verpacken von Druckprodukten
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US6247056B1 (en) * 1997-02-03 2001-06-12 Oracle Corporation Method and apparatus for handling client request with a distributed web application server
JP3036487B2 (ja) * 1997-10-14 2000-04-24 日本電気株式会社 地球センサ
US6058389A (en) * 1997-10-31 2000-05-02 Oracle Corporation Apparatus and method for message queuing in a database system
US6594651B2 (en) * 1999-12-22 2003-07-15 Ncr Corporation Method and apparatus for parallel execution of SQL-from within user defined functions
US7136857B2 (en) * 2000-09-01 2006-11-14 Op40, Inc. Server system and method for distributing and scheduling modules to be executed on different tiers of a network
US6922792B2 (en) * 2000-10-27 2005-07-26 Eternal Systems, Inc. Fault tolerance for computer programs that operate over a communication network
US7206964B2 (en) * 2002-08-30 2007-04-17 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on semi-active or passive replication
US7305582B1 (en) * 2002-08-30 2007-12-04 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on active replication
US7243351B2 (en) * 2002-12-17 2007-07-10 International Business Machines Corporation System and method for task scheduling based upon the classification value and probability
US7334014B2 (en) * 2003-01-03 2008-02-19 Availigent, Inc. Consistent time service for fault-tolerant distributed systems
US20040225546A1 (en) * 2003-05-09 2004-11-11 Roland Oberdorfer Method and apparatus for monitoring business process flows within an integrated system
US7523130B1 (en) * 2004-01-28 2009-04-21 Mike Meadway Storing and retrieving objects on a computer network in a distributed database
US7376890B2 (en) * 2004-05-27 2008-05-20 International Business Machines Corporation Method and system for checking rotate, shift and sign extension functions using a modulo function
US7797342B2 (en) * 2004-09-03 2010-09-14 Sybase, Inc. Database system providing encrypted column support for applications
JP4319971B2 (ja) * 2004-11-22 2009-08-26 株式会社日立製作所 セッション情報管理システム、セッション情報管理方法およびそのプログラム
US7792342B2 (en) * 2006-02-16 2010-09-07 Siemens Medical Solutions Usa, Inc. System and method for detecting and tracking a guidewire in a fluoroscopic image sequence

Also Published As

Publication number Publication date
CN101512527B (zh) 2013-05-15
US20090300018A1 (en) 2009-12-03
CN101512527A (zh) 2009-08-19
GB0619644D0 (en) 2006-11-15
EP2082338A1 (en) 2009-07-29
KR20090055608A (ko) 2009-06-02
WO2008040621A1 (en) 2008-04-10
JP2010506277A (ja) 2010-02-25
US9767135B2 (en) 2017-09-19

Similar Documents

Publication Publication Date Title
JP5241722B2 (ja) 要求処理のデータ処理システムおよび方法
US10942823B2 (en) Transaction processing system, recovery subsystem and method for operating a recovery subsystem
US7716181B2 (en) Methods, apparatus and computer programs for data replication comprising a batch of descriptions of data changes
US6988099B2 (en) Systems and methods for maintaining transactional persistence
US10360113B2 (en) Transaction recovery in a transaction processing computer system employing multiple transaction managers
US8271448B2 (en) Method for strategizing protocol presumptions in two phase commit coordinator
US8868514B2 (en) Transaction support for distributed data
US6442552B1 (en) Method and apparatus for implementing three tier client asynchronous transparency
US8341125B2 (en) Transaction log management
US20130110781A1 (en) Server replication and transaction commitment
US8073962B2 (en) Queued transaction processing
US7203863B2 (en) Distributed transaction state management through application server clustering
US9104471B2 (en) Transaction log management
US8336053B2 (en) Transaction management
Son Replicated data management in distributed database systems
US20130138614A1 (en) Two-phase data locking transaction processing with distributed partitions and mirroring
US6948093B2 (en) Data processing arrangement and method
US7228455B2 (en) Transaction branch management to ensure maximum branch completion in the face of failure
US7281153B2 (en) Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
EP0817019B1 (en) Method of stratified transaction processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130402

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5241722

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150