JP5296615B2 - 分散トランザクション回復システムおよび方法 - Google Patents
分散トランザクション回復システムおよび方法 Download PDFInfo
- Publication number
- JP5296615B2 JP5296615B2 JP2009151110A JP2009151110A JP5296615B2 JP 5296615 B2 JP5296615 B2 JP 5296615B2 JP 2009151110 A JP2009151110 A JP 2009151110A JP 2009151110 A JP2009151110 A JP 2009151110A JP 5296615 B2 JP5296615 B2 JP 5296615B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- application
- log
- shared
- application server
- 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
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims description 41
- 238000012217 deletion Methods 0.000 claims description 21
- 230000037430 deletion Effects 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 20
- 238000002360 preparation method Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- HRANPRDGABOKNQ-ORGXEYTDSA-N (1r,3r,3as,3br,7ar,8as,8bs,8cs,10as)-1-acetyl-5-chloro-3-hydroxy-8b,10a-dimethyl-7-oxo-1,2,3,3a,3b,7,7a,8,8a,8b,8c,9,10,10a-tetradecahydrocyclopenta[a]cyclopropa[g]phenanthren-1-yl acetate Chemical class C1=C(Cl)C2=CC(=O)[C@@H]3C[C@@H]3[C@]2(C)[C@@H]2[C@@H]1[C@@H]1[C@H](O)C[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 HRANPRDGABOKNQ-ORGXEYTDSA-N 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- JHALWMSZGCVVEM-UHFFFAOYSA-N 2-[4,7-bis(carboxymethyl)-1,4,7-triazonan-1-yl]acetic acid Chemical compound OC(=O)CN1CCN(CC(O)=O)CCN(CC(O)=O)CC1 JHALWMSZGCVVEM-UHFFFAOYSA-N 0.000 description 2
- 101000884714 Homo sapiens Beta-defensin 4A Proteins 0.000 description 2
- 101001048716 Homo sapiens ETS domain-containing protein Elk-4 Proteins 0.000 description 2
- 101001092930 Homo sapiens Prosaposin Proteins 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 102100022483 Sodium channel and clathrin linker 1 Human genes 0.000 description 2
- 239000002253 acid Substances 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000008929 regeneration Effects 0.000 description 2
- 238000011069 regeneration method Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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
- G06F11/202—Error 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 where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2033—Failover techniques switching over of hardware resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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
- G06F11/202—Error 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 where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2025—Failover techniques using centralised failover control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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
- G06F11/202—Error 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 where processing functionality is redundant
- G06F11/2035—Error 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 where processing functionality is redundant without idle spare hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
1. アプリケーションが、トランザクションをコミットするようアプリケーションサーバに求める。
2. アプリケーションサーバは、トランザクションを完了すべきことをTMに通知する。
3. TMは、トランザクション完了の第1フェーズを開始する。TMは、トランザクションを準備するよう第1リソースマネージャ(RM)に求める。
4. 第1RMはコミットすることができ、この意向を独自のトランザクションログに書き込むことができると仮定する。第1RMは、準備コールから戻り、TMに成功を伝える。
5. 第2のRMについても同じことが行われる。
6. TMは準備成功のリターンコードのみを受け取ると仮定するので、TMは、完了トランザクションのコミットを決定する。TMは、RMに働きかける前に、コミットの決定を独自のTLOGに書き込む。書き込み操作後、TMは、書き込み直後にクラッシュしたとしても、このトランザクションをコミットしようと試みる。
7. 第1RMは、コミットするよう求められる。通常、第1RMは、準備時間中にTMに与えた約束を履行して、何の問題もなくコミットすべきである。
8. 第2のRMは、コミットするよう求められる。
1. TM 132aが問題のあるトランザクション(例えば、2PCコミットプロトコルの第2のフェーズ中に障害を起こしたトランザクション)に遭遇した場合、TM 132aは、このトランザクションをPTL 308aに追加し、アプリケーション要求へのサービスを続行する。
2. クラスタノードの1つ302bがクラッシュした場合、クラスタインフラストラクチャは、他のすべてのクラスタノードの「トランザクションログ獲得」フラグを真に設定する。(例えば、唯一の他のノード302aしか示されていないので、TL獲得フラグ306aがこれに相当する)。これが、他のすべてのPTLプロセッサ(例えば、唯一の他のノード302aしか示されていないので、PTLプロセッサ134aがこれに相当する)に、親喪失トランザクションログへの排他的アクセスを獲得し、それらの内容をそれぞれのPTL(やはり、唯一の他のノードしかないので、PTL308aがこれに相当する)にコピーしようと試みるサイクルを開始するよう命令する。
・ ノードm 302aのTM 132aが、このノードm 302aの直近の起動時に生成されたTLog n 320aに書き込む。ラベル「n」は、ラン識別子(run identifier)と呼ばれることがある。
・ ノードm 302aのPTLプロセッサ134aは、このノードの直近のランおよびそれ以前の2つのランからトランザクションを解決する。これは、ノードm 302aのTLog n-1 320bおよびn-2 320cへの読み取り/書き込みアクセスとして示されている。
・ ノードm 302aのPTLプロセッサ134aは、node m+1 302bの直近のランからトランザクションを解決する。これは、ノードm+1 302bのTLog n-1 322bへの読み取り/書き込みアクセス矢印によって示されている。
・ ノードm+1 302bのTM 132bが、直近の起動時に新たに生成されたノードm+1 302bのTLog n 322aに書き込む。
・ ノードm+1 302bのPTLプロセッサ134bは現在、直近のラン以前のランからトランザクションを解決する。これは、ノードm+1 302bのTLog n-2 322cへの矢印によって示されている。
以下のセクションは、上述された構造およびプロセスに関するさらなる詳細を提供する。付加的な詳細についての背景を提供するために、説明が重複することもある。
アプリケーションサーバにはトランザクションおよびそれらの回復の面倒をみる4つの注目すべき構成要素が存在する。これらは、トランザクションマネージャ(TM)と、トランザクションログ(TLOG)と、保留トランザクションリスト(PTL)と、PTLプロセッサ(PP)とを含む(例えば図3を参照)。
トランザクションマネージャは、2PCプロトコルの異なるフェーズ中にリソースマネージャ(RM)が提供できる複雑なリターンコードを処理しなければならない。XAリソースインタフェースを実施する異なるリソースマネージャが、ある状況においてどのリターンコードを選択すべきかについて異なる解釈をもつことができる一実施形態では、さらなる複雑さが追加される。その上、トランザクションに関する異なる仕様は、時として曖昧または不完全である。
準備フェーズ前は、エラーハンドリングは、準備後ほど複雑ではない。互いに連絡を失っていても、関与するすべての当事者がトランザクションの各自の部分をロールバックするので、非一貫性は比較的短時間しか存続しないことが期待できる。それにも関わらず、そのフェーズ中のJTA XAResourceインタフェースの異なる動作について精査の必要がある。
一実施形態によれば、接続は常にトランザクションに固定されるべきである。そのため、使用されるフラグの唯一の値はTMNOFLAGSである。一代替実施形態によれば、接続は、end(TMSUSPEND)およびstart(TMJOIN)を用いて、中断および再開することができる。これは、より少ない接続の使用をもたらすが、パフォーマンスにマイナスの影響を与えることもある。さらなるリスクは、いくつかのRMが適切なトランザクション中断メカニズムを実施できないことである。
一実施形態によれば、TMSUCCESSのみが使用される。一代替実施形態によれば、TMがロールバックを決定した場合にend(TMFAIL)をコールすることが最適化となる。これは、関与するRM上でのさらなるロールバックコールを不要にする。すべてのRMがこの最適化をサポートするかどうかが明らかでなく、僅かな比率のトランザクションしかロールバックされないので、いくつかの実施では、代替実施形態は望ましくないことがある。
一実施形態によれば、RMがRDONLYを返した場合、それは即座にトランザクションから除外される。このブランチのためのエントリはTLOGに書き込まれない。RDONLY結果は、コミットに対する賛意表明(vote)ではなく、ロールバックに対する賛意表明でもない。
一実施形態によれば、onePhaseが真に設定された場合、トランザクションはローカルトランザクションのように扱われる。そのため、TLOGへの書き込みは行われない。onePhaseが偽に設定された場合、非常に複雑なエラー結果を有する本格的な2PCトランザクションを我々は有する。以下のセクションは、これらの可能なエラーがどのように扱われるかについてより詳細に説明している。
一実施形態によれば、コミットフェーズ中、TMは、トランザクションに参加しているすべてのRMに呼び掛け、それらにコミットするよう求める。一実施形態によれば、これは、並列方式ではなく、順次方式で行われる。一代替実施形態によれば、より短いトランザクション待ち時間をもたらすために並列手法が使用できるが、並列手法は、異なるRMコミットリターン結果を同期させるための付加的なオーバヘッドを伴う。TMアーキテクチャの背後の1つの注目すべき側面は、トランザクションスループットは最大に達し、トランザクション待ち時間は最小に達しないことである。
・ 「[XAER_NOTA] 指定されたXIDがリソースマネージャに知られていない」。これは管理者がこの保留トランザクションを人的にコミットまたはロールバックすると決定した場合とすることができる。
・ 「[XAER_INVAL] 無効な引数が指定された」。これはRMまたはRM XAドライバ内のエラーを指し示す。
・「[XAER_PROTO] ルーチンが不適切なコンテキストで呼び出された」。これはTM実施におけるエラーを指し示す。
・ 「[XAER_ASYNC] TMASYNCがフラグに設定され、未解決の非同期動作の最大数が超過されたか、またはTMUSEASYNCがリソースマネージャのxa_switch_t構造のフラグ要素に設定されていない」。Java(登録商標)は、非同期トランザクションの概念をサポートしないので、これはRMまたはRM XAドライバ内のエラーを指し示す。
・ リターンコードが他のものである場合、それはDTP XA仕様では言及されていないコードである。これは起こってはならない。
ブランチの1つが準備フェーズ中のロールバックに賛意を表明した場合、TMは、完了トランザクションをロールバックしようと試みる。そうするため、一実施形態によれば、TMは、順次方式ですべての参加RMにわたってループする。これらのRMの1つがエラーを返した場合、それによってTMが他のRMをロールバックし続けることを止めることはない。XA_OK以外のすべてはエラーとみなされ、それはXAリターンコードまたは別の例外とすることができる。
・ 「[XAER_NOTA] 指定されたXIDがリソースマネージャに知られていない」。これは管理者がこの保留トランザクションを人的にコミットまたはロールバックすると決定した場合とすることができる。
・ 「[XAER_INVAL] 無効な引数が指定された」。これはRMまたはRM XAドライバ内のエラーを指し示す。
・ 「[XAER_PROTO] ルーチンが不適切なコンテキストで呼び出された」。これはTM実施におけるエラーを指し示す。
・ 「[XAER_ASYNC] TMASYNCがフラグに設定され、未解決の非同期動作の最大数が超過されたか、またはTMUSEASYNCがリソースマネージャのxa_switch_t構造のフラグ要素に設定されていない」。Java(登録商標)は、非同期トランザクションの概念をサポートしないので、これはRMまたはRM XAドライバ内のエラーを指し示す。
・ リターンコードが他のものである場合、それはDTP XA仕様では言及されていないコードである。これは起こってはならない。
アプリケーションサーバ内のPTLプロセッサは、回復時にXAリソースマネージャを再生成するタスクを有する。このジョブに必要とされるすべての情報は、一実施形態によれば、トランザクションログに保存される。これは、セキュリティ証明書と、リソースマネージャ固有の他のプロパティを含む。
・ 汎用Javaコネクタリソース-特にアウトバウンドリソースアダプタ: コネクタコンテナ(別名、コネクタサービス)は、これらのRMのライフサイクルに責任を負う。これはコンフィグレーションデータの配備および管理を含む。
・ データソース:データソースコンテナ(別名、DBPoolサービス)は、システムデータソースに責任をもち、すべてのカスタムデータソースの配備、コンフィグレーション、およびライフサイクルに責任を負う。データソースは、JDBC(Java(登録商標)データベースコネクティビティ)コネクタUI(ユーザインタフェース)を介して、またはdata-source.xmlリソースファイルの配備を通して生成することができる。その上、javax.sql.DataSourceインタフェースを提示するJavaコネクタリソースアダプタを配備することも可能であるが、この種のRMは、DBPoolサービスによっては管理されず、コネクタサービスによって管理される。DBPoolサービスは、その上、データソースエイリアスの管理も担当するが、これらのエイリアスは、本当のデータソースオブジェクトへの参照に過ぎない。他のRMコンテナに関しても同様に、同じエイリアス概念が存在する。
・ JMS(Java(登録商標)メッセージングサービス)キュー/トピックコネクションファクトリ。JMSコンテナ(別名、JMSコネクタサービス)は、これらのリソースの管理に責任を負う。JMSファクトリのコンフィグレーションデータは、JMSプロバイダからではなく、JMSコネクタサービスから取得される。
アプリケーションサーバのトランザクション挙動は、いくつかのトランザクションサブシステムの対話の結果である。すべてのシステムが一緒になって、トランザクションハンドリングおよび回復を組織化する。
トランザクションログは、データベースまたはファイルシステム内に配置することができる。ファイルシステムが選択された場合、共用ファイルシステムとすることが我々に強く推奨される。ファイルシステムが共用されていなくても、トランザクション回復は機能するが、オンザフライ回復能力はもたない。次のセクションは、それについてより詳細に説明する。
何の問題もなく実行している場合、TMはTLOGにエントリを追加している。もちろん、典型的なトランザクションは、非常に短時間だけアクティブであり、その後は削除することができ、それについての記憶を維持する必要はない。
・ TMは直近の起動時に生成したTLOGのための削除対象リストを有する。TMはトランザクションを終了させると、それをこのリストに追加する。
・ PTLプロセッサは、以前の起動に由来するTLOG上で機能することができる。PTLプロセッサは、これらのTLOGの各々のための削除対象リストを維持する。
・ PTLプロセッサは、その上、TMが問題のあるトランザクションをPTLに送った場合、現在アクティブなTLOGのトランザクション上で機能することができる。そのため、PTLプロセッサは、アクティブTLOGの対象リストにも同様にエントリを追加する。
・ TLOGがDBMSベースである場合、レコードは単一のDELETE SQLステートメントを用いて削除される。
・ TLOGがファイルシステムベースである場合、TLOGに追加される1つまたは複数の相殺削除ステートメントが存在する。これらのエントリは、例えば「501から1012までのトランザクションを削除する」といった範囲を使用する。トランザクションを識別する唯一の番号は、トランザクションシリアル番号である。完了XIDは必要とされない。
PTLプロセッサは、保留トランザクションを一貫性のある状態にする責任を負う。現在いくつかの利用不可能なRMが存在する場合、このタスクは時間が掛かることがあり、継続的なリトライの試みを必要とする。そのため、PTLプロセッサは、それ独自のスレッドで動作する。
TMは、即座に処理できないトランザクションに関する問題に遭遇した場合、トランザクションをPTLに追加し、呼元アプリケーションに例外を返す。
PTLプロセッサは、最初のエントリから最後のエントリまでPTLを継続的にループする。最初のエントリから再び開始する場合、「トランザクションログ獲得フラグ」が設定されているかどうかをチェックする。
○ 最初に、PTLプロセッサ(PP)は、このTLOGに属するRMエントリを読み、それらに対してrecoverをコールする。
○ このPPがあるRMにうまく対処し終えた場合、PPは、その結果をメモリ内回復結果リストに保存する。1つのRMが利用可能でない場合、PPは、このRMに関するNULLエントリを回復結果リストに保存する。NULLエントリは空リストではない。空リストは、RMが利用可能であり、保留トランザクションをもたないことを意味する。
○ recoverコールのこの初期シーケンスの後、PPは、ステージング領域内のエントリを1つずつ処理する。PPは、エントリのXIDと、このトランザクションに関与したRMのすべてのIdを再構成する。
このXIDは、回復結果リスト内のすべてのXIDと比較される。いくつかの可能な結果が存在する。
* TLOGエントリのXIDが回復結果リストのいずれにも存在しない。これはRMのいずれにも保留トランザクションが存在しないことを意味する。そのため、トランザクションを単純に忘れることができる。トランザクションはこのTLOGの削除対象リストに追加される。
* 関与するRMの1つのRMエントリがヌルであるのは、RMが現在アクセス可能でないことを意味する。そのため、この時点では、特定のトランザクションがこの現在利用不可能なRMにおいてまだ保留中かどうかを決定することはできない。そのため、トランザクションはPTLに追加される。
* XIDが、関与するRMの回復結果リストの一部または全部に存在する。そのため、PTLプロセッサは、これらの保留RMに対してこのXIDを解決しようと試みる。それが成功した場合、トランザクションは終了し、削除対象リストに追加される。成功しなかった場合、トランザクションはPTLに追加される。
○ このTLOGに属するが、このTLOGの部分ではないXIDが回復結果リスト内に存在する場合、PPは、これらのRMにおいてブランチをロールバックする(これは推定アボート戦略である)。
○ 現在利用不可能なRMのPTLにもはやエントリが存在しなくても、PTLプロセッサが、このRMに対してrecoverをコールしようと試みることに気を配らなければならない。この現在利用不可能なRMにはロールバックされる必要があるトランザクションがまだ存在することが可能である。
PTLプロセッサは、他のマシン上の他のTMに由来するトランザクションログも含む、すべてのトランザクションログのロケーションを知っている。ファイルシステムベースのログの場合、このロケーションは、単なる共用フォルダである。PTLプロセッサコントローラ内の「トランザクションログ獲得フラグ」が真に設定された場合、PTLプロセッサは、すべての利用可能なトランザクションログを獲得しようと試みる。これを行う際、PTLプロセッサは、他のノード上に存在するPTLプロセッサと競争する。各トランザクションログは、ただ1つのオーナを有する。これは、トランザクション回復に関連して一般に見出され得るクラスタにおけるシングルトンパターンを実施する。
・ PPコントローラがクラスタノード喪失イベントに同意(subscribe to)する。ノードが失われた場合、フラグがスイッチオンされる。これがトリガとなって、すべてのノード上のすべてのPTLプロセッサは、親喪失ログを獲得しようとする。ここで問題となるのは、通常のシャットダウンも同様にこのイベントをトリガすることであり、そのため、PPコントローラは、フラグを真に設定する前にシャットダウンがローカルノード上で開始されないよう保証しなければならない。
・ クラスタノード喪失イベントに依存したくない場合、追加的にjava.util.timerを使用して、事前定義された時間設定可能な時間間隔でフラグを真に設定することが可能である。
略述されたように、PTLプロセッサはTLOG獲得競争を行っている。単一のTLOGが決して2つのオーナをもたないことはどのように保証されるのか?
・ ファイルシステムベースのログの場合、同期は容易である。PTLプロセッサは、一致するFileChannelに対してtryLockメソッドをコールする。それがロックを獲得すると、それ以外のものは失敗する。ノードがクラッシュした場合、オペレーティングシステムがファイルからロックを解除する。
・ TLOGがDBMS内に存在する場合、TLOGテーブルが存在する。各論理TLOGに対して、1つのレコードがテーブル内に存在する。このレコードは、オーナと、時間リース(time-lease)カラムを含む。PPがTLOGを所有する場合、PPは、このテーブル内に、自身をオーナとして指定し、TLOGを所有する期限であるGMT時刻の時間を供給する、リースエントリを作成する。TLOGを保有し続けることを望む場合、PPは、リース時間が終る前に、このエントリを更新(renew)しなければならない。別のPPが期限切れのTLOGオーナエントリを発見した場合、そのPPは、オーナが死んだものと見なす。ここで問題なのは、このリースベースの手法が待ち時間を導入することである。
○ TMがTLOGのオーナであり、10設定可能量(例えば、10分)の間、それを保有する。
○ TMがクラッシュし、ノード喪失イベントが発行される。
○ 別のノード上のPPがログをスキャンし、このログがまだ保有されていることを知る。そのため通常の場合、現在ではTLOGの面倒をみるオーナはもはや存在しないが、PPはそれの責任を負うようになろうとは試みない。これはオンザフライ回復を遅延させる。
○ 一実施形態による1つの解決策は、クラッシュノードのIdをPPコントローラが知ることである。そのため、クラッシュノードがTLOGのオーナである場合、リースはもはや有効とすることができない。この実施形態の1つの難点は、クラッシュノードがすでに再開されており、そのため、現実にはTLOGが、新しいTLOG、またはクラッシュノードのPPがすでに面倒をみているTLOGである場合である。
トランザクションコンポーネントの組織化を説明するため、ここにクラスタ起動中に実行される一連の事柄を示す。
・ 最初にノード上のTMが開始する。TMは、新しいトランザクションログを生成し、それを排他的に使用する。
・ その後、「TL獲得フラグ」フラグが真に設定される。これがこのノード上でPTLプロセッサを開始させる。
・ PTLプロセッサが、獲得できた第1親喪失トランザクションログをオープンする。PTLプロセッサは、このログ内で使用されていたすべてのRMを読み込む。RM情報は通常のTLOG内に混合されておらず、特別なエンティティとして(実際には別個のファイルまたは別個のテーブルとして)利用可能であるので、これは簡単である。
・ PTLプロセッサが、RMを再生成するのに必要とされるXAResourceファクトリのリストを生成する。例えば、5つのデータソースと、3つのJCA(J2EEコネクタアーキテクチャ)アダプタが存在することができ、そのため、1つのJDBC XAResourceファクトリと、1つのJCA XAResourceファクトリが必要とされる結果となる。
・ この時間の間、サーバも同様に、サーバインフラストラクチャに属するXAResourceファクトリを独立に開始する。XAResourceファクトリが要求を受け取る準備ができている場合、XAResourceファクトリは自身をTMに登録する。そのため、TMはすべての利用可能なXAResourceファクトリを知る。
・ PTLプロセッサは、TMを用いて、すべての必要なXAResourceファクトリがすでに開始されているかどうかをチェックする。開始されていない場合、PTLプロセッサはしばらく待ってから、再度試みる。必ずしもすべてのRMが起動していなくても、すでにいくつかのトランザクションを回復することは可能である(後で本文書中で説明される)。
・ PTLプロセッサは、XAResourceファクトリを使用して、関与するすべてのRMを再生成する。
・ PTLプロセッサは、すべてのRMに対してrecoverをコールし、結果をメモリ内に保存する。
・ PTLプロセッサは、TLOG内の各エントリを読み込み、recoverの結果と比較し、PTLにデータ投入を行う。
・ PTLプロセッサは、次のTLOGをオープンしようと試み、上記の最後のステップを繰り返す。
2.6.1 準備前のXAトランザクションタイムアウト
JTAを使用してトランザクションタイムアウトを定義するのに異なる可能性が存在する。そのうちの1つは、現在のjavax.transaction.UserTransactionインスタンスに対してbeginをコールする前に、同じインスタンスに対してsetTransactionTimeoutメソッドをコールすることである。
トランザクションが準備状態に達した場合、トランザクションは、XAトランザクション放棄時間の範囲内で完了されなければならない。このタイムアウトは、システムワイドな設定として設定され、典型的なデフォルト値は20時間である。TMがこの時間内にトランザクションを一貫性のある状態にすることができない場合、TMは、その特定のトランザクションを放棄し、発見的結果を有するトランザクションを記録する(トランザクションステータスはHEURHAZである可能性がきわめて高い)。
3.1 序論
XIDは、トランザクションブランチを標識付けるためにTMがRMに渡す識別子である。RMは、このXID下の作業のその回復可能な部分を実行する。システムがクラッシュした場合、TMは後の時点でRMにその保留トランザクションについて尋ねる。RMはXIDを返すので、TMは、TMがこのXIDの発行元であるかどうか、後でこのトランザクションの回復に責任を負うかどうかを認識できなければならない。
PTLプロセッサは、1組のトランザクションログに属するトランザクションを回復することに責任を負う。これらのトランザクションログは、TMの以前の開始に由来することができる。しかし、同様に、現在生成されるトランザクションログも、PTLプロセッサが面倒をみなければならないある1組のトランザクションを定義する。では、プロセッサは、それが責任を負う1組のTLOGにRM内の保留トランザクションが属するかどうかをどのようにして決定できるのか? 答えは簡単である。
・ 最初に、PTLプロセッサは、フォーマットIDが「SAP1」であるかどうかをチェックする。そうである場合、PTLプロセッサは、トランザクションを生成したのがSAP NW(NetWeaver) JS(Javascript) TMであることを知る。
・ その後、PTLプロセッサは、XIDに符号化されたTLOGバージョンが、PTLプロセッサが現在責任を負うTLOGバージョンのXIDと等しいかどうかを比較する。TLOGバージョンは、以下の部分、すなわち、システムIDと、ノードIDと、TM起動時間から成る。システムIDは、システムを識別する。ノードIDは、クラスタ内のノードを一意的に識別する。インスタンスIDは、このIDにすでに混合されており、別個に追加される必要はない。TM起動時間は、GMT時刻のTMの起動日付/時間である。粒度はミリ秒である。1ミリ秒以内にTMを2回起動することは不可能であると見なされている。代替実施形態は、これらのパラメータを調整することができる。
XID構造の異なる部分は、フォーマットIDと、拡張グローバルトランザクションIDと、ブランチ修飾子を含む。フォーマットIDは、(一実施形態によれば)「SAP1」である。「1」は、代替実施形態では、バージョン情報で置き換えることができる。ブランチ修飾子は、TLOG内でRMを一意的に識別する。
この番号は、TLOG内でトランザクションを一意的に識別する。TLOGがDBMSデータである場合、シーケンス番号は、インデックスカラムである。番号は、TMが起動する場合にゼロから開始し、止まることなく増加する。毎秒10000個のトランザクションが存在する場合、8バイトの長さは、数百万年の耐用時間をサポートするのに十分である。番号間のギャップが許される。
このアトリビュートは、もっぱら情報用である。TMがトランザクションを生成した場合にGMT時刻の時間が設定される。トランザクション生成時間は、問題の根本原因を識別するためにログのどの部分に目を通すべきかについてのヒントをデータベース管理者に与えるので、トランザクションが問題を有する理由を彼らが見出すのに役立てることができる。
フォーマットはGMTであり、このアトリビュートは、トランザクションが生成された場合に設定される。後でこの時間を見つけた場合、PTLプロセッサは、いつトランザクションを放棄できるかを知る。これは関与するRMのたとえ一部にしろ、または全部に連絡が付かない場合である。現在時間が放棄時間より後である場合、トランザクションを放棄すること、トランザクションのためにPTLプロセッサが有しているすべてのメモリを消去することは、PTLプロセッサの自由である。
完了トランザクション名をGTRIDに保存することは、XIDを破裂させる。それの代わりに、トランザクション名テーブル内のエントリを指し示す僅か4バイトの整数値が保存される。
いくつかのJava EE仕様は、リソース参照を定義することを可能にする。これは、res-sharing-scope要素の定義を含む。ブランチ反復子は、与えられたリソースマネージャ接続ファクトリ参照を通して獲得された接続が共用できるかどうかを指定する。この要素の値は、指定された場合、以下の2つのうちの一方、すなわち、共用可能または共用不可能でなければならない。デフォルト値は共用可能である。ここでEJB配備ディスクリプタからの一例を示す。
<resource-ref>
<res-ref-name>jdbc/CustomerDBMS</res-ref-name>
<res-type>javax.sgl.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>
・ トランザクションが、tx4711というXIDを与えられてTMによって開始される。
・ アプリケーションが、RMへの新しい接続を取得する。この接続に対して、関連付けられたXAリソースインスタンスが常に存在する。このインスタンスをXAResource1と呼ぶことにする。TMが、接続をXID 4711と関連付ける。
XAResource1.start(tx4711);
・ 今度は、アプリケーションが、同じRMへの第2の接続を生成する。この接続に関連付けられたXAリソースをXAResource2と呼ぶことにする。通常、TMは以下のコードを発行する。
XAResource2.start(tx4711);
グローバルトランザクションIDは、アプリケーションサーバ内、例えば、TMおよびPP内でのトランザクションの表現である。このIDはその上、TLOG内でトランザクションを識別する。
4.1 トランザクションログのエンティティ
トランザクションログは、トランザクション回復を達成するために必要とされる異なるエンティティを保存する。これらのエンティティは、TLOGエンティティと、TLOGエントリエンティティと、トランザクション名エンティティと、RMエンティティと、メモリ内エンティティを含む。
TLOGエンティティは、各論理トランザクションログに対して1つのインスタンスを有する(DBMSの場合は1つのレコードに変換される)。TLOGのオーナは、このインスタンスを更新し、オーナアトリビュートにオーナの識別情報を、保有の有効期限までleasedUntilアトリビュートにGMT時刻を供給することによって、完全なログを保有することができる。その時間の後、TLOGは誰からも利用可能と見なされる。
TMは、トランザクションを識別するグローバルトランザクションIDを生成する。このトランザクションに参加するすべてのRMはブランチであり、TMによって割り当てられたブランチIDを取得する。このブランチIDは、TMの全ライフタイムにわたって、すなわち、TMの起動からシャットダウンまで同じであり続ける。それまでTMに知られていなかった新しいRMをトランザクションが使用する場合、TMは、このRMをRMエンティティに追加する。ブランチIDの生成は、単にTMの内部カウンタを増加させることによって行うことができる。
・ RM a、b、cを含むトランザクションtx1が存在するとする。
・ PTLプロセッサは、完全なログにはRM a、b、c、dが含まれることを知っている。
・ そのため、回復シーケンスの開始時に、PTLプロセッサは、RM a、b、c、dに対してrecoverをコールする。しかし、RM dは一時的または永続的故障のために現在利用可能ではない。
・ RM dの利用不可能性にも関わらず、PTLプロセッサは、RM dが含まれていなかったことを確実に知っているので、tx1を回復することができる。
SAP TMは、人間に可読のトランザクション名を指定することを加えて可能にする。これは、回復サービスが後で問題を管理者に報告する必要がある場合に役立てることができる。「Xid 4711が発見的結果を有した」と報告する代わりに、メッセージを「トランザクション『注文記帳』が発見的結果を有する」とすることができる。トランザクション名は、「注文#12345」のようにトランザクションインスタンスに固有とすべきではなく、トランザクション分類子により近いものである。
すでに言及されたように、TMは、ライフタイム中にTMによって使用されたすべてのRMについて永続的エンティティを生成する。この情報は、回復時にXAリソースマネージャを再生成するのに十分でなければならない。これは、XAResourceFactoryIdが保存され、このタイプのXAResourceを生成できるリソースファクトリを指し示すことを暗示する。ファクトリはその上、再生成タスクを実行するために、名前と、プロパティと、証明書を取得する。TLOGがファイルシステムベースである場合、RMエンティティはそれ自体がファイルになる。RMエンティティは証明書を保存するので、それは暗号化される。
永続的エンティティに加えて、トランザクションのメモリ内表現と、RMにおけるトランザクションの表現が存在する。以下のシーケンスは、異なるエンティティにどのようにデータが投入されるかについて説明する。
・ 最初に、TMがグローバルトランザクションIDを生成する。
・ アプリケーションは、任意選択的にトランザクション名をトランザクションに割り当てることができる。アプリケーションは、最初のRMが接触される前にそれを行うべきである。
・ TMは、トランザクション名を内部トランザクション名キャッシュと比較することによって、トランザクション名がすでに知られているかどうかをチェックする。知られている場合、TMは、トランザクション名識別子としてキャッシュ内の位置を利用する。知られていない場合、TMは、トランザクション名を内部キャッシュに追加し、トランザクション名識別子を割り当て、トランザクション名をトランザクション名エンティティに書き込む。(このステップは、最初のxa_start()が行われるまで遅延させることができる)。
各分散トランザクションがトランザクションログに追加される。トランザクションが完了した場合、もはやメモリを維持する必要はなく、そのため、その特定のトランザクションは、削除対象とすることができる。ディスク/DBMSへの書き込み操作を削減するため、この削除は時期を遅らせて行われるべきである。この遅延手法(lazy approach)は、ログ内にすでに完了したトランザクションが存在するという結果をもたらし得る。PTLプロセッサ全体は、これが問題を引き起こさないように設計される。回復時、PTLプロセッサは、ログ内で完了トランザクションを発見し、どのRMも一致するXidを返さなかったことを見出す。そのため、PTLプロセッサは、このトランザクションをもはや何の関心も引かないものと仮定する。
TMは、完了トランザクションを追跡記録するメモリ内データ構造を有する。事前定義されたエントリ数(例えば100)を超えると、TMは、
DELETE FROM TLOG_ENTRIES WHERE XID IN (Xid1, Xid2, ..., Xid 100)
によってTLOGエントリテーブルに対して単一の削除操作を実行する。
TLOGがファイルシステムに基づく場合、新しいファイルのオーバフローに対処しなければならない。TMは、すべてのアクティブトランザクションおよび保留トランザクションについて知っているので、以下のオーバフロー手順は、ファイルが事前定義された設定可能なエントリ数(例えば1000)に達した場合に行われる。
・ 新しいトランザクションログファイルが生成される。
・ 新しいRMログファイルが生成される。
・ すべてのアクティブトランザクションおよび保留トランザクションが新しいログファイルにコピーされる。
・ これらのアクティブトランザクションおよび保留トランザクションによって使用されるすべてのRMが新しいRMログにコピーされる。
・ 旧いファイルを指し示すすべての内部データ構造が新しいファイルを指し示すように更新される。
・ 旧いファイル(TLOGおよびRMログ)が削除される。
大部分の利用シナリオでは、アプリケーションサーバは、そのトランザクションの完全な制御下にある。これに対する注目すべき例外は、リリース1.5以降のJavaコネクタアーキテクチャによって引き起こされる。この仕様では、リソースアダプタがインポートトランザクションをアプリケーションサーバに伝播でき、アプリケーションサーバおよびそれ以降の参加者が作業をインポートトランザクションの部分として行うことができることが定義される。
5.1.1 RMトランザクション放棄時間
JCA仕様は、JCAアダプタが同じトランザクションの部分としていくつかのインバウンド要求を行えるようにする。各要求について、アダプタは、要求の部分としてトランザクションタイムアウトを設定することができる。アダプタは、ExecutionContextを生成し、それに対してsetTransactionTimeoutメソッドをコールすることによって、これを達成する。ExecutionContextは、アダプタが生成したワーク(Work)インスタンスと一緒に、アプリケーションサーバのワークマネージャに送られる。
トランザクションブランチは、準備に達する前に、すでにタイムアウトすることができる。準備前のトランザクションブランチのロールバックは、完了トランザクションの発見的結果を決してもたらすべきではない。そのため一般に、準備前のトランザクションタイムアウトはトランザクション放棄タイムアウトより短いことが期待される。Javaコネクタ仕様はそのようなタイムアウトを定義しないので、一実施形態によれば、SAP独自仕様のタイムアウトが設定される。そのような定義は、システムワイドな設定またはアダプタ固有の設定とすることができる。
介在TMは、以下の情報を含む別個のトランザクションログを有する。
・ 外部TMの着信Xid。
・ 外部XidにマッピングされるアプリケーションサーバTMの内部Xid。
・ GMT時刻のトランザクション放棄時間。
・ トランザクションに参加するRMの、それらの賛意表明を含む識別情報。
・ 発見的に完了された場合の完了トランザクションの結果(HEURRB、HEURCOM、HEURMIX、HEURHAZ)。
多くのJava(登録商標) EE仕様のように、Java(登録商標)コネクタアーキテクチャは、クラスタ環境においてフェイルオーバおよび負荷分散に対処しない。アプリケーションのロジックと、企業情報システム(EIS)がアプリケーションに送信するメッセージの内容に応じて、2つの場合を区別することができる。
・ メッセージはすべてのクラスタノード上で処理される必要がある。株式の市場価格のクラスタノード内部表現を更新する株式相場メッセージをその一例とすることができる。
・ メッセージはクラスタ内の単一のノードだけが受信できる。新規顧客レコードを生成する要求をDBMSで受信する「新規顧客」イベントを一例とすることができる。
・ EISはすべての着信接続が論理的に同一であると仮定する。これは、おそらくピータ(アダプタ)がトーマス(EIS)にモバイル電話を使用して電話を掛ける状況と比較することができる。モバイル電話の蓄電池が空になったために接続が切断され、そのため、ピータは再び、今度はオフィスの電話を使用して電話を掛ける。自分が先程と同じピータであることをピータが明らかにしたので、トーマスはピータと話し続けることができる。
・ EISはすべての着信接続が異なると仮定する。上で与えられた例では、トーマスの電話に示された着信発呼者idが異なるので、トーマスは、オフィスの電話を使用して自分に電話を掛けているピータは異なるピータであると主張する。
・ トランザクションがまだ準備状態前だった場合、トランザクションは関与するバックエンドRMによって自動的にロールバックされる。さもなければ、共用トランザクションレジストリが必要とされる。
・ トランザクションが準備後である場合、介在TMのトランザクションログ内にエントリが存在する。ノード2は、ノード1上で開始されたトランザクションのためのcommit/rollback/recover要求を受信する。これを可能にするため、介在TMのトランザクションログが共用されなければならない。
2フェーズコミットトランザクション処理は、その物理I/Oのため、非XAスタイル処理と比べて非常に重い。その大部分は、単一のトランザクション内で必要とされる複数のディスクフォース(disk force)が存在するという事実による。一例として、関与する2つのRDMBSが存在し、すべてが同じディスクに書き込む、トランザクションを考える。
・ 準備時には、両RMが2つのディスクフォースを有する。各RMに1つ、合計で2つ。
・ コミットを決定した場合、TMはTLOGに書き込む。別のディスクフォース。
・ 両RMがコミットする。別の2つディスクフォース。
・ 後でTLOGエントリは除去されるが、これは再度のフォーシングなしに行われる。
・ 臨界スループットより下では、TLOGに対する更新を一緒にグループ化しても意味はない。ログへの各更新は、アプリケーションスレッド自体によって実行される。そのため、同期操作当たりのTLOGに対する更新の回数は1である。
・ 臨界スループットより上では、I/Oがボトルネックになる。ディスクまたはDBMSが処理できるより多くの、TLOGへの追加を望むアプリケーションスレッドが存在する。これは、システムが達成できる最大スループットに深刻な限界を導入する。
・ 低スループットモード:アプリケーションスレッド内でのTLOG更新。
・ TLOGバッチモード: TLOG更新は別個のスレッドで行われる。
・ TLOGバッチモードでは、各アプリケーションスレッドは、そのTLOG更新をバッファに追加する。
・ 別個のスレッドがバッファの内容を取得し、それをTLOGに書き込む。スレッドが書き込みを完了した場合、バッファに追加した多くのアプリケーションスレッドによってすでにバッファが満たされていることをスレッドは見出す。スレッドは再びバッファを取得し、待機しているアプリケーションスレッドを解放する。以降も同様である。
・ スレッドが戻って来て、バッファ内で待機しているエントリが存在しないこと、または1つしか存在しないことを知った場合、スレッドが本当は必要とされていないことをスレッドは知る。グループ化の要求は存在しない。スレッドはEmptyCycleカウンタを1だけ増加させる。
・ バッファが2つ以上のエントリで満たされているのをスレッドが見出した場合、スレッドはNonEmptyCycleを1だけ増加させ、EmptyCycleカウンタをゼロに設定し戻す。
・ EmptyCycleカウンタが事前定義されたエンプティサイクルの最大数(例えば100)を超えた場合、スレッドは低スループットモードに切り替え、自らを非活動化する。これはTLOGバッチサブシステムの出口基準である。バッチサブシステムが直ちには自らを非活動化しない理由は、ヒステリシス挙動(hysteresis behavior)を実施するためである。トランザクションシステムが臨界スループット周辺にある場合、トランザクションシステムは、TLOGバッチと低スループットモードの間を絶えず往復することはなく、低トランザクション要求を有するより長いタイムスパンが存在する場合に限る。
102 クライアント層
104 アプリケーション層
106 データベース層
108 ネットワーク
112 クライアント
114 アプリケーションサーバ
116 リソースサーバ
120 トランザクションログサーバ
130 共用トランザクションログ
132 トランザクションマネージャ
134 PTLプロセッサ
302 ノード
304 PTLプロセッサコントローラ
306 TL獲得フラグ
308 保留トランザクションリスト
320 トランザクションログ
322 トランザクションログ
1400 コンピュータシステムおよびネットワーク
1410 コンピュータシステム
1401 プロセッサ
1402 メモリ
1403 記憶装置
1404 ネットワークインタフェース
1411 入力装置
1412 ディスプレイ
1415 クライアント
1420 ローカルネットワーク
1430 インターネット
1431 サーバ
1432 サーバ
1433 サーバ
1434 サーバ
1435 サーバ
Claims (12)
- 分散コンピューティング環境におけるトランザクション回復のためのシステムであって、
共用トランザクションログを保存するトランザクションログサーバと、
分散トランザクションアプリケーションを実施し、前記分散トランザクションアプリケーションを使用してトランザクションを実行する場合に前記共用トランザクションログにアクセスする、複数のアプリケーションサーバと、
データを保存し、前記トランザクションに従って前記データにアクセスするために前記複数のアプリケーションサーバとともに動作する、複数のリソースサーバと、を備え、
前記複数のアプリケーションサーバ、前記複数のリソースサーバ、および前記トランザクションログサーバが、ネットワークを介して接続された複数のハードウェア装置によって実施され、
前記複数のアプリケーションサーバのうちの1つのアプリケーションサーバが故障アプリケーションサーバになった場合、それまでは前記故障アプリケーションサーバによってアクセスされていた前記共用トランザクションログ部分に対する責任をアクティブアプリケーションサーバが引き受け、
前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
複数の保留トランザクションを保存する保留トランザクションリストと、
前記共用トランザクションログおよび前記保留トランザクションリストにアクセスする保留トランザクションリストプロセッサと、
を備え、
前記共用トランザクションログが、複数の論理トランザクションログを含み、前記複数の論理トランザクションログの各々が、前記複数のアプリケーションサーバの対応する1つ、および対応するラン識別子に関連付けられる、システム。 - 前記トランザクションログサーバが、ファイルシステムおよびデータベース管理システムの一方を含む、請求項1に記載のシステム。
- 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記トランザクションを実行するトランザクションマネージャと、
前記共用トランザクションログにアクセスする保留トランザクションリストプロセッサと、
を備える、請求項1に記載のシステム。 - 前記複数のアプリケーションサーバのうちの第1アプリケーションサーバが、
前記第1アプリケーションサーバに対応する前記共用トランザクションログの第1部分にアクセスし、それまでは前記故障アプリケーションサーバによってアクセスされていた前記共用トランザクションログの前記部分にアクセスする、保留トランザクションリストプロセッサ
を備える、請求項1に記載のシステム。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログから削除されるエントリを保存する削除対象リストと、
トランザクションマネージャが完了トランザクションを完了したときに前記完了トランザクションを前記共用トランザクションログから前記削除対象リストに追加し、前記削除対象リストが定められたサイズに達したときに前記共用トランザクションログからの前記削除対象リスト内の前記エントリを削除する、トランザクションマネージャと、
を備える、請求項1に記載のシステム。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログに対するグループ更新を実行するトランザクションマネージャ
を備える、請求項1に記載のシステム。 - 分散コンピューティング環境におけるトランザクション回復のコンピュータ実施方法であって、
トランザクションログサーバを用いて共用トランザクションログを保存するステップと、
複数のアプリケーションサーバを用いて分散トランザクションアプリケーションを実施するステップであって、前記分散トランザクションアプリケーションを使用してトランザクションを実行する場合に前記分散トランザクションアプリケーションが前記共用トランザクションログにアクセスする、実施するステップと、
複数のリソースサーバを用いてデータを保存するステップであって、前記トランザクションに従って前記データにアクセスするために前記複数のリソースサーバが前記複数のアプリケーションサーバとともに動作する、保存するステップと、を含み、
前記複数のアプリケーションサーバ、前記複数のリソースサーバ、および前記トランザクションログサーバが、ネットワークを介して接続された複数のハードウェア装置によって実施され、
前記複数のアプリケーションサーバのうちの1つのアプリケーションサーバが故障アプリケーションサーバになった場合、それまでは前記故障アプリケーションサーバによってアクセスされていた前記共用トランザクションログ部分に対する責任をアクティブアプリケーションサーバが引き受け、
前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
複数の保留トランザクションを保存する保留トランザクションリストと、
前記共用トランザクションログおよび前記保留トランザクションリストにアクセスする保留トランザクションリストプロセッサと、
を備え、
前記共用トランザクションログが、複数の論理トランザクションログを含み、前記複数の論理トランザクションログの各々が、前記複数のアプリケーションサーバの対応する1つ、および対応するラン識別子に関連付けられる、コンピュータ実施方法。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログから削除されるエントリを保存する削除対象リストと、
トランザクションマネージャが完了トランザクションを完了したときに前記完了トランザクションを前記共用トランザクションログから前記削除対象リストに追加し、前記削除対象リストが定められたサイズに達したときに前記共用トランザクションログからの前記削除対象リスト内の前記エントリを削除する、トランザクションマネージャと、
を備える、請求項7に記載のコンピュータ実施方法。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログに対するグループ更新を実行するトランザクションマネージャ
を備える、請求項7に記載のコンピュータ実施方法。 - 複数の有形な記憶媒体上で実施されるコンピュータプログラムであって、
トランザクションログサーバによって保存される共用トランザクションログと、
トランザクションを実行する場合に前記共用トランザクションログにアクセスする、複数のアプリケーションサーバによって保存される分散トランザクションアプリケーションと、
前記トランザクションに従って前記分散トランザクションアプリケーションによってアクセスされる、複数のリソースサーバによって保存されるデータと、を含み、
前記複数のアプリケーションサーバ、前記複数のリソースサーバ、および前記トランザクションログサーバが、ネットワークを介して接続された複数のハードウェア装置によって実施され、
前記複数のアプリケーションサーバのうちの1つのアプリケーションサーバが故障アプリケーションサーバになった場合、それまでは前記故障アプリケーションサーバによってアクセスされていた前記共用トランザクションログ部分に対する責任をアクティブアプリケーションサーバが引き受け、
前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
複数の保留トランザクションを保存する保留トランザクションリストと、
前記共用トランザクションログおよび前記保留トランザクションリストにアクセスする保留トランザクションリストプロセッサと、
を備え、
前記共用トランザクションログが、複数の論理トランザクションログを含み、前記複数の論理トランザクションログの各々が、前記複数のアプリケーションサーバの対応する1つ、および対応するラン識別子に関連付けられる、コンピュータプログラム。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログから削除されるエントリを保存する削除対象リストと、
トランザクションマネージャが完了トランザクションを完了したときに前記完了トランザクションを前記共用トランザクションログから前記削除対象リストに追加し、前記削除対象リストが定められたサイズに達したときに前記共用トランザクションログからの前記削除対象リスト内の前記エントリを削除する、トランザクションマネージャと、
を備える、請求項10に記載のコンピュータプログラム。 - 前記複数のアプリケーションサーバのうちの少なくとも1つのアプリケーションサーバが、
前記共用トランザクションログに対するグループ更新を実行するトランザクションマネージャ
を備える、請求項10に記載のコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/347,545 | 2008-12-31 | ||
US12/347,545 US9417977B2 (en) | 2008-12-31 | 2008-12-31 | Distributed transactional recovery system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010157202A JP2010157202A (ja) | 2010-07-15 |
JP5296615B2 true JP5296615B2 (ja) | 2013-09-25 |
Family
ID=41055161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009151110A Active JP5296615B2 (ja) | 2008-12-31 | 2009-06-25 | 分散トランザクション回復システムおよび方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9417977B2 (ja) |
EP (1) | EP2207096A1 (ja) |
JP (1) | JP5296615B2 (ja) |
CN (1) | CN101853186A (ja) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100198937A1 (en) * | 2006-12-29 | 2010-08-05 | Bernard Schletz | Management of data for installation on a remote device |
US9165025B2 (en) * | 2009-12-11 | 2015-10-20 | International Business Machines Corporation | Transaction recovery in a transaction processing computer system employing multiple transaction managers |
CN101937711B (zh) * | 2010-09-21 | 2013-03-13 | 深圳市华力特电气股份有限公司 | 一种数据存储方法及系统 |
US9026493B1 (en) * | 2011-02-28 | 2015-05-05 | Google Inc. | Multi-master RDBMS improvements for distributed computing environment |
WO2011120452A2 (zh) * | 2011-05-03 | 2011-10-06 | 华为技术有限公司 | 更新数据的方法和控制装置 |
US8984170B2 (en) * | 2011-09-09 | 2015-03-17 | Oracle International Corporation | Idempotence for database transactions |
US10127259B2 (en) * | 2011-09-29 | 2018-11-13 | Oracle International Corporation | System and method for database persistence of transaction logs |
US20130097135A1 (en) * | 2011-10-17 | 2013-04-18 | Pie Digital, Inc. | Method and system for generating domain specific in-memory database management system |
US9069704B2 (en) * | 2011-11-07 | 2015-06-30 | Sap Se | Database log replay parallelization |
US10289443B2 (en) | 2012-03-16 | 2019-05-14 | Oracle International Corporation | System and method for sharing global transaction identifier (GTRID) in a transactional middleware environment |
US9146944B2 (en) | 2012-03-16 | 2015-09-29 | Oracle International Corporation | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls |
US9760584B2 (en) * | 2012-03-16 | 2017-09-12 | Oracle International Corporation | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
US10496977B2 (en) | 2012-07-16 | 2019-12-03 | Square, Inc. | Storing and forwarding payment transactions |
JP6019995B2 (ja) * | 2012-09-24 | 2016-11-02 | 日本電気株式会社 | 分散システム、サーバ計算機、及び障害発生防止方法 |
US10157110B2 (en) | 2012-09-24 | 2018-12-18 | Nec Corporation | Distributed system, server computer, distributed management server, and failure prevention method |
CN103716174A (zh) * | 2012-10-09 | 2014-04-09 | 鸿富锦精密工业(深圳)有限公司 | 测试日志撷取系统及方法 |
WO2014082663A1 (en) * | 2012-11-28 | 2014-06-05 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for managing distributed transactions |
US9911110B2 (en) * | 2013-03-05 | 2018-03-06 | Square, Inc. | Predicting approval of transactions |
US20150019620A1 (en) * | 2013-07-09 | 2015-01-15 | Kaminario Technologies Ltd. | High availability for communications based on remote procedure calls |
US9830234B2 (en) * | 2013-08-26 | 2017-11-28 | Vmware, Inc. | Distributed transaction log |
EP3039553A1 (en) * | 2013-08-29 | 2016-07-06 | Hewlett Packard Enterprise Development LP | Separating storage transaction logs |
US9715405B2 (en) * | 2013-09-23 | 2017-07-25 | International Business Machines Corporation | Efficient coordination across distributed computing systems |
US10191765B2 (en) | 2013-11-22 | 2019-01-29 | Sap Se | Transaction commit operations with thread decoupling and grouping of I/O requests |
CN103678570B (zh) * | 2013-12-10 | 2016-06-01 | 中国人民解放军理工大学 | 云环境下日志文件的多级别存储与恢复方法及系统 |
CN104793998B (zh) * | 2014-01-20 | 2019-04-16 | 中兴通讯股份有限公司 | 终端系统资源管理方法及装置 |
US10015049B2 (en) | 2014-02-13 | 2018-07-03 | Sap Se | Configuration of network devices in a network |
US9361190B2 (en) | 2014-04-24 | 2016-06-07 | International Business Machines Corporation | Recovery of a transaction after XA end |
CN105404579B (zh) * | 2014-09-11 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 平台化日志分析的计算方法及装置 |
CN105653374B (zh) * | 2014-11-12 | 2020-04-28 | 华为技术有限公司 | 分布式事务资源执行的方法、装置和系统 |
CN107430606B (zh) * | 2014-12-01 | 2021-06-29 | 信息科学有限责任公司 | 具有并行持久性的消息代理系统 |
US9881302B1 (en) | 2014-12-11 | 2018-01-30 | Square, Inc. | Intelligent payment capture in failed authorization requests |
GB2533403A (en) | 2014-12-19 | 2016-06-22 | Ibm | Data repository for a distributed processing environment |
GB2533578A (en) | 2014-12-22 | 2016-06-29 | Ibm | Recovery of local resource |
CN106033562B (zh) * | 2015-03-16 | 2019-12-06 | 阿里巴巴集团控股有限公司 | 事务处理方法、事务参与节点及事务协调节点 |
CN105045917B (zh) * | 2015-08-20 | 2019-06-18 | 北京百度网讯科技有限公司 | 一种基于实例的分布式数据恢复方法和装置 |
CN105610917B (zh) * | 2015-12-22 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 实现系统中同步数据修复的方法及系统 |
CN107229455B (zh) | 2016-03-24 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种业务处理方法、装置及系统 |
CN105843686A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 单例组件资源释放方法及装置 |
US10366378B1 (en) | 2016-06-30 | 2019-07-30 | Square, Inc. | Processing transactions in offline mode |
CN108108119B (zh) * | 2016-11-25 | 2023-03-24 | 中兴通讯股份有限公司 | 一种可扩展的存储集群事物的配置方法及装置 |
US10922307B2 (en) * | 2017-12-11 | 2021-02-16 | NextWorld, LLC | Automated transaction engine |
US10942823B2 (en) * | 2018-01-29 | 2021-03-09 | Guy Pardon | Transaction processing system, recovery subsystem and method for operating a recovery subsystem |
US10983876B2 (en) * | 2018-03-29 | 2021-04-20 | Seagate Technology Llc | Node management of pending and unstable operations |
WO2020019343A1 (zh) * | 2018-07-27 | 2020-01-30 | 袁振南 | 区块链系统中的消息传输方法、装置及存储介质 |
CN109496406A (zh) * | 2018-07-27 | 2019-03-19 | 袁振南 | 基于区块链系统的节点管理方法、装置和存储介质 |
CN109324925A (zh) * | 2018-08-29 | 2019-02-12 | 北京仁科互动网络技术有限公司 | 分布式框架的事务处理方法及装置 |
CN109388481B (zh) * | 2018-09-21 | 2021-08-17 | 网易(杭州)网络有限公司 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
US11561999B2 (en) * | 2019-01-31 | 2023-01-24 | Rubrik, Inc. | Database recovery time objective optimization with synthetic snapshots |
US12051032B2 (en) * | 2019-05-16 | 2024-07-30 | Ncr Voyix Corporation | Autonomous delivery |
CN111414266B (zh) * | 2020-03-23 | 2024-04-05 | 浪潮通用软件有限公司 | 一种分布式事务的同步异步通信方法和装置 |
US11409618B2 (en) | 2020-09-14 | 2022-08-09 | International Business Machines Corporation | Transaction recovery |
US11573876B2 (en) * | 2020-10-30 | 2023-02-07 | Google Llc | Scalable exactly-once data processing using transactional streaming writes |
US20220253409A1 (en) * | 2021-02-05 | 2022-08-11 | International Business Machines Corporation | Cleaning compensated change records in transaction logs |
KR20220160898A (ko) * | 2021-05-28 | 2022-12-06 | 삼성에스디에스 주식회사 | 트랜잭션 처리 방법 및 장치 |
US11550672B1 (en) | 2021-09-09 | 2023-01-10 | Kyndryl, Inc. | Machine learning to predict container failure for data transactions in distributed computing environment |
JP7284791B2 (ja) * | 2021-09-22 | 2023-05-31 | 株式会社日立製作所 | 分散トランザクションシステム及び分散トランザクションシステムにおける分散トランザクション処理方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63156258A (ja) * | 1986-12-19 | 1988-06-29 | Fujitsu Ltd | トランザクシヨンログ処理方式 |
JPH04199339A (ja) * | 1990-11-29 | 1992-07-20 | Hitachi Ltd | 分散処理システムの分散トランザクションファイル制御方法 |
JPH07244645A (ja) * | 1994-03-04 | 1995-09-19 | Mitsubishi Electric Corp | 高信頼分散トランザクション処理システム |
JPH08286964A (ja) * | 1995-04-13 | 1996-11-01 | Mitsubishi Electric Corp | 分散トランザクション処理方法 |
US6944785B2 (en) * | 2001-07-23 | 2005-09-13 | Network Appliance, Inc. | High-availability cluster virtual server system |
AU2003216238A1 (en) | 2002-02-22 | 2003-09-09 | Bea Systems, Inc | Highly available transaction recovery for transaction processing systems |
JP2003345639A (ja) * | 2002-05-27 | 2003-12-05 | Nec Soft Ltd | データベースの交換システム |
US7096333B2 (en) * | 2002-07-18 | 2006-08-22 | International Business Machines Corporation | Limited concurrent host access in a logical volume management data storage environment |
US20050138081A1 (en) * | 2003-05-14 | 2005-06-23 | Alshab Melanie A. | Method and system for reducing information latency in a business enterprise |
US7831782B1 (en) * | 2004-06-30 | 2010-11-09 | Symantec Operating Corporation | Roll-back log to provide data consistency |
US7444538B2 (en) * | 2004-09-21 | 2008-10-28 | International Business Machines Corporation | Fail-over cluster with load-balancing capability |
US7403945B2 (en) * | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
JP2007058506A (ja) * | 2005-08-24 | 2007-03-08 | Ricoh Co Ltd | 文書管理サーバ、文書管理システム、及び、文書管理プログラムとその記録媒体 |
US20070174695A1 (en) * | 2006-01-18 | 2007-07-26 | Srinidhi Varadarajan | Log-based rollback-recovery |
-
2008
- 2008-12-31 US US12/347,545 patent/US9417977B2/en active Active
-
2009
- 2009-05-28 EP EP09007159A patent/EP2207096A1/en not_active Withdrawn
- 2009-06-25 JP JP2009151110A patent/JP5296615B2/ja active Active
- 2009-12-31 CN CN200910266025A patent/CN101853186A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2010157202A (ja) | 2010-07-15 |
US9417977B2 (en) | 2016-08-16 |
CN101853186A (zh) | 2010-10-06 |
US20100169284A1 (en) | 2010-07-01 |
EP2207096A1 (en) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5296615B2 (ja) | 分散トランザクション回復システムおよび方法 | |
CN104793988B (zh) | 跨数据库分布式事务的实现方法和装置 | |
US8341125B2 (en) | Transaction log management | |
US10289443B2 (en) | System and method for sharing global transaction identifier (GTRID) in a transactional middleware environment | |
CN105512244B (zh) | 基于消息队列实现数据库事务处理的方法及装置 | |
JP3672208B2 (ja) | 階層化トランザクション処理方法 | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US5923833A (en) | Restart and recovery of OMG-compliant transaction systems | |
JP3851272B2 (ja) | ステートフル・プログラム・エンティティの作業負荷管理 | |
CN101243445B (zh) | 数据变更通告 | |
JP5241722B2 (ja) | 要求処理のデータ処理システムおよび方法 | |
US20130246368A1 (en) | Systems and methods for supporting inline delegation of middle-tier transaction logs to database | |
JPH02228744A (ja) | データ処理システム | |
WO1997002527A1 (en) | A transaction processing system and method of implementation | |
US10133489B2 (en) | System and method for supporting a low contention queue in a distributed data grid | |
US10318520B2 (en) | System and method for reducing communications overhead in a distributed transactions environment by modifying implementation of the transaction end function | |
WO1993018454A1 (en) | Distributed transaction processing system | |
WO2021082465A1 (zh) | 一种保证数据一致性的方法及相关设备 | |
US9672038B2 (en) | System and method for supporting a scalable concurrent queue in a distributed data grid | |
EP0834122B1 (en) | Synchronisation procedure in a routing node | |
EP3146430A1 (en) | System and method for supporting a distributed data structure in a distributed data grid | |
JP3846852B2 (ja) | 分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品 | |
US8560691B2 (en) | Relocating item in distributed storage system | |
Fan et al. | ALOHA-KV: high performance read-only and write-only distributed transactions | |
US7346910B1 (en) | Administration of groups of computer programs, data processing systems, or system resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100517 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120501 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120604 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121218 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130417 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20130425 |
|
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: 20130514 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130613 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5296615 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |