JP2005506587A - 通信ネットワークを介して動作するコンピュータプログラムの故障許容 - Google Patents
通信ネットワークを介して動作するコンピュータプログラムの故障許容 Download PDFInfo
- Publication number
- JP2005506587A JP2005506587A JP2002543293A JP2002543293A JP2005506587A JP 2005506587 A JP2005506587 A JP 2005506587A JP 2002543293 A JP2002543293 A JP 2002543293A JP 2002543293 A JP2002543293 A JP 2002543293A JP 2005506587 A JP2005506587 A JP 2005506587A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- mode
- network
- communication network
- message
- 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.)
- Pending
Links
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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
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)
- Communication Control (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
- Computer And Data Communications (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Retry When Errors Occur (AREA)
Abstract
インターネットや仮想プライベートネットワークなどの通信ネットワークを介して、企業内および企業間のコンピュータプログラムと対話するコンピュータプログラムの故障許容を提供するネットワーク接続型エンタープライズサーバの機構。故障許容は、トランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することによって提供される。本発明では、トランザクション処理を使用してローカルデータおよび処理を障害から保護し、レプリケーションを使用して複数の企業にまたがる処理および通信を保護する。
Description
【0001】
(関連出願の相互参照)
本出願は、参照により本明細書に組み込む米国仮出願第60/244,077号からの優先権を主張する。
【0002】
(連邦政府後援の研究または開発に関する文書)
該当なし
(コンピュータプログラムの付録への参照)
該当なし
(著作権保護の対象となる資料の通知)
本特許文献の資料の一部は、米国および他国の著作権法に基づく著作権保護の対象となることがある。著作権の所有者は、米国特許商標局のファイルまたは記録に記載されているとおりに特許文献または特許開示を第三者が複製することに異議を唱えないが、その場合を除きすべての著作権を留保する。本明細書は、本特許著作権の所有者が、それだけには限定されないが、37 C.F.R.§1.14による権利も含めて、本特許文書を機密に保持しておく所有者のいずれの権利も拒否するものではない。
【0003】
(発明の背景)
1.発明の分野
本発明は一般に、通信ネットワークを介してリモートコンピュータプログラムと対話するときに、確実かつ連続的に動作しなければならないコンピュータプログラムに関し、より詳細には、レプリケーションとトランザクション処理との統合によって故障許容を提供する方法に関する。
【0004】
2.背景技術の説明
インターネットを介した企業間の対話が増加するにつれて、多くのコンピュータシステムは、障害にもかかわらず信頼性の高い連続動作を提供しなければならない。コンピュータシステムの従来の故障許容は、個々のコンピュータの処理作業を障害から保護することに焦点を置いている。多くの企業のコンピュータシステムは、トランザクション処理を使用して、コンピュータシステムのデータを障害から保護する。トランザクションが完了する(例えばコミットする)のを妨げる障害の場合、トランザクションがアボートし、データはトランザクションの開始時の状態に戻る。
【0005】
トランザクション処理は、データが、トランザクションがコミットした後は整合性の取れた最終的な状態、また、トランザクションがアボートした後は整合性の取れた最初の状態で残り、不整合で一部が処理された状態では残らないことを確実にすることによって、コンピュータシステムのデータを保護する。障害時には、トランザクションがデータに対して行うすべての処理が失われ、トランザクションを開始したクライアントは、トランザクションを再試行することができる。
【0006】
トランザクションは、人間のクライアントに対するサーバとして働くコンピュータシステムに対して適切に動作する。人間のクライアントは、トランザクションがアボートされ、処理が失われ、トランザクションを最初から再試行しなければならないことを理解することができる。また、人間のクライアントは、トランザクションを再試行したときに、トランザクションの結果が、トランザクションを最初に試行したときに得られたであろう結果とは違うかもしれないと理解することもできる。
【0007】
しかし、異なる企業内、または同一の企業の異なる部署内の2台のコンピュータがインターネットや仮想プライベートネットワークなどの通信ネットワークを介して互いに対話するときは、トランザクションはあまり有効ではない。クライアントとして働くコンピュータには、人間のクライアントの知能はない。トランザクションがサーバによってアボートされたときに、適切に動作するようにクライアントコンピュータをプログラムすることは難しい。また、サーバの使用を試みた最初の試行と、アボート後の再試行との間に結果として生じ得る何らかの違いを処理するようにクライアントコンピュータをプログラムすることも難しい。
【0008】
理論上は、単一の分散トランザクションに、1つの企業のクライアントコンピュータと別の企業のサーバコンピュータとを含めることは可能である。トランザクションは、トランザクションのコーディネータとして働くクライアントコンピュータによって開始される。トランザクションのコミット中の重大な瞬間にクライアントが障害を起こした場合、または2台のコンピュータ間の通信が失われた場合、サーバは、クライアントが回復するまで停止する。その結果、実際には、分散トランザクションは使用されない。
【0009】
現況技術では、コンピュータ群が、ネットワークを介して通信するトランザクションに参加することはできる。しかし、トランザクションは、中央のトランザクションコーディネータの制御下にある。同様に、データベースのいくつかのコピーが共存できるようにする技術は存在するが、中央制御装置は、そのコピーの1つを1次コピー、その他のコピーをバックアップコピーとして指定する必要がある。複数のコンピュータが、おそらくはネットワークを介して、トランザクションに参加できるようにする技術も存在する。こうした構成では、中央制御装置はない。代わりに、任意のプロセッサが、それが開始するトランザクションのコーディネータとして働くことができる。しかし、各トランザクションを管理するコーディネータは1つしかない。その結果、いくつかの企業のコンピュータにまたがる活動で、各企業が、そのコンピュータ内でのトランザクションを、別の企業のコンピュータ上のコーディネータによって管理できるようにする必要がある。ほとんどの企業は、そのような形で、他の企業がその企業のコンピュータを使用することを許さないはずである。
【0010】
したがって、複数の企業のコンピュータにまたがる活動を制御する中央制御装置の使用を回避する故障許容技術が必要となる。本発明は、その必要性等に応え、故障許容技術の当技術分野の現状における欠陥を克服する。
【0011】
(発明の概要)
本発明は、レプリケーションとトランザクション処理とを統合することによって通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供するネットワーク接続型エンタープライズサーバ(Networked Enterprise Server)の機構を提供する。本発明では、トランザクション処理を使用して、ローカルのデータおよび処理を障害から保護し、レプリケーションを使用して、複数の企業にまたがる処理および通信を障害から保護する。本発明は、中央制御装置なしに、また任意の企業がそのトランザクションを別の企業のコーディネータから制御できるようにする必要なしに、異なる企業のコンピュータ間のネットワークを介したトランザクション処理の、また信頼性の高い対話の便益を獲得する。レプリケーションとトランザクション処理とを統合することによって、コンピュータアプリケーションが通信ネットワークを介して複数の企業にまたがる状況で、いずれもそれ自体では不十分な両方の戦略の利点を提供する。
【0012】
本発明をより一般的な用語で説明することはできるが、標準のオブジェクト指向の用語を使用することによって、本発明が理解しやすくなる。本発明の機構を使用するオブジェクトは、2つのモードのいずれかで動作する。
【0013】
ネットワークモード。このモードでは、あるコンピュータ上の1つのオブジェクトは、通信ネットワークを介して、複数のリモートコンピュータ上の複数のオブジェクトと対話することができる。ネットワークモードでは、オブジェクトは、オブジェクトレプリケーションシステムによって障害から保護される。
【0014】
トランザクションモード。このモードでは、あるコンピュータ上の1つのオブジェクトは、ローカルデータベース内にあるオブジェクトとは対話することができるが、通信ネットワークを介してリモートコンピュータ上のオブジェクトと対話することはできない。トランザクションモードでは、オブジェクトは、トランザクション処理システムによって障害から保護される。
【0015】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。ネットワークモードでは、オブジェクトは、それ自体のコンピュータの他のオブジェクト、あるいは、通信ネットワークを介して、リモートコンピュータにある複数のオブジェクトと自由に対話することができる。こうした対話を伝達するメッセージ、すなわち要求メッセージ(メソッド呼出しを含む)、および応答メッセージ(対応する応答を含む)は、いずれもメッセージログに記録される。
【0016】
オブジェクトは、明示的にトランザクションを開始することによって、あるいはトランザクションの一部である別のオブジェクトによって呼び出されることによってトランザクションモードになる。トランザクションモードでは、オブジェクトは、ネットワークを介してリモートオブジェクトのメソッドを呼び出すことも、トランザクションの一部ではないオブジェクトからの要求メッセージを受け付けることもできない。
【0017】
オブジェクトは、トランザクションがコミット、またはアボートしたときにトランザクションモードからネットワークモードに戻る。
【0018】
本発明は、オブジェクトのレプリケーションの機構とトランザクションの機構とを統合して、コンピュータプログラムが、通信ネットワークを介してリモートコンピュータプログラムと通信している間に、障害から確実に回復できるようにするネットワーク接続型エンタープライズサーバの機構を提供し、その結果、
(a)コンピュータプログラムが、障害にもかかわらず、その意図された機能を引き続き実行することができる。
【0019】
(b)コンピュータプログラムが、障害によって生じる破損または不整合からそのデータを保護することができる。
【0020】
(c)コンピュータプログラムが、まるで障害が起こらなかったかのように、リモートコンピュータとの対話を続行することができる。
【0021】
(d)コンピュータプログラムは、障害を起こしたときに、他のコンピュータプログラムの動作を中断することはできない。
【0022】
本発明の他の利点は、本文書の以下の部分で明らかになる。詳細な説明は、本発明の好ましい実施の形態を十分に開示するためのものであって、それに限定されるものではない。
【0023】
本発明は、例として示したにすぎない以下の図を参照することによってより十分に理解できよう。
【0024】
(発明の詳細な説明)
例として示した図をより具体的に参照すると、本発明は、図1から図13を参照して説明する。本明細書に開示した基本的な概念から逸脱しなければ、機器が構成および各部の詳細については異なっていてもよく、また方法が特定のステップおよび手順について異なっていてもよいことを理解されたい。
【0025】
本発明の機構の詳細な説明は、C++、Java(登録商標)、および他のオブジェクト指向プログラミング言語、およびCORBA(Common Object Request Broker Architecture:共通オブジェクトリクエストブローカーアーキテクチャ)、Java(登録商標) Remote Method Invocation、およびActiveX/DCOM(Distributed Component Object Model)などの分散オブジェクトアーキテクチャで使用する標準のオブジェクト指向の用語を使用する。特に、この説明では、以下の定義を使用する。
【0026】
オブジェクトは、オブジェクト指向コンピュータプログラムの実行中に作成され、属性(データ構造または変数)、およびメソッド(プロシージャ)によって表される。
【0027】
クライアント−サーバモデルに基づく分散オブジェクトコンピューティングでは、クライアントオブジェクトは、サーバオブジェクトに、その作業またはサービスを実行するよう要求する。クライアントオブジェクトは、サーバオブジェクトが実行する作業またはサービスを定義するサーバオブジェクトのメソッドの1つを呼び出す旨の要求メッセージをサーバオブジェクトに送信する。要求メッセージは、メソッドの名前、およびメソッドの引数を含む。メソッドを実行した後、サーバオブジェクトは、応答メッセージをクライアントオブジェクトに送信することによって応答する。応答メッセージは、メソッド呼出しの結果を含んでいる。
【0028】
以下の説明の大部分では、クライアントオブジェクトおよびサーバオブジェクトに関して記載しているが、機構は普遍的であり、各オブジェクトは、クライアントおよびサーバとして働くことができる。このように両方の役割を果たすのは一般に、サプライチェーンの用途など、複数の連鎖した企業が関与するネットワークで接続された用途の場合である。各オブジェクトがクライアントおよびサーバの役割を果たすことができるため、本発明は、クライアント−サーバモデルに基づく用途だけではなく、ピアツーピアモデルに基づく用途にも適用される。
【0029】
オブジェクトの状態とは、オブジェクトの属性の値である。オブジェクトの状態は、時間が経つと変わる可能性がある。オブジェクトの状態の変化は、オブジェクトのメソッドを呼び出す、オブジェクトに送信されたメッセージの結果である。
【0030】
オブジェクトのレプリカとは、元のオブジェクトと同一の状態を有し、一般的に異なるコンピュータがホストとなるオブジェクトのコピーである。
【0031】
図1に示すように、オブジェクトは、複数の故障許容領域に分類され、オブジェクトのすべてのレプリカは、単一の故障許容領域内に配置される。例えば、図1は、分岐位置10にある単一のコンピュータまたはホスト、および2つのコンピュータ群またはホスト群12、14、16、および18、20、22を示す。3つの故障許容領域24、26、28を示している。ホスト14、ホスト16、ホスト18は、それぞれ2つの故障許容領域に関与しており、ホスト10、ホスト20、およびホスト22は、1つのみの故障許容領域に関与していることに注意されたい。オブジェクトBのすべてのレプリカは、単一の故障許容領域内でホストされており、オブジェクトC、D、Eのすべてのレプリカも同様であることに注意されたい。故障許容領域の一部ではなく、複製されていないオブジェクトAは、従来のインターネットメッセージ32を介して、ゲートウェイ30を通って故障許容領域内にアクセスする。
【0032】
本発明は、当技術分野でよく知られているトランザクション処理機構を利用する。特に、参照により本明細書に組み込んだObject Management Group(OMG)(Object Management Group,Transaction Service Specification v1.2(Final Draft),OMG Platform Technical Committee Document ptc/2000−11−07,January 2000)によって標準化されたObject Transaction Service(OTS)の仕様を利用する。本発明は同様に、Java(登録商標) Transaction ServiceやMicrosoft Transaction Serviceなど、他のトランザクションサービス標準にも適用できることに注意されたい。
【0033】
本明細書では、トランザクション処理システムの基本的な戦略を記載する。トランザクションは、標準ACID特性、すなわち原子性、一貫性、独立性、耐久性を満たす必要がある。原子性とは、システムが、データに対する個々のすべての作業を実行する、あるいは部分的に完了した作業によってデータに対する影響を一切残さないようにすることを意味する。一貫性は、トランザクションの任意の実行によって、データベースを、ある整合状態から別の整合状態に移行させることを必要とする。独立性は、並行するトランザクションの作業が、各トランザクションを完了まである順序で連続的に実行させることによって得られる結果と区別できない結果をもたらすことを必要とする。耐久性とは、コミットされたトランザクションの作用を保持し、障害から回復した後のデータベースが確実に整合性を取れるようにすることである。
【0034】
図2に示すように、トランザクションは、オブジェクトトランザクションシステム54のbegin−transaction()メソッド52を呼び出すオブジェクト50で開始する。この呼出しは、一意のトランザクション識別子を作成し、トランザクションコンテキスト56にあるそのトランザクション識別子を戻す。トランザクションを開始したオブジェクト50は、トランザクションのメンバになる。オブジェクト50や58などのトランザクションのメンバであるオブジェクトがオブジェクト58や60などの別のオブジェクトのメソッドを呼び出すときはいつでも、オブジェクトトランザクションシステム54は、トランザクションコンテキストを、メッセージ62や64など、呼出しを含む対応するメッセージに付加する。トランザクションコンテキストを含むメッセージを受信した後、呼び出されたオブジェクト58または60は、オブジェクトトランザクションシステム54のregister()メソッド66または68を呼び出し、そのトランザクションのメンバになる。そのトランザクションのメンバになった後、必要に応じてオブジェクトの現在の状態のチェックポイント70または72がログ74に格納され、したがってその状態を格納することができる。図には、オブジェクトが異なるコンピュータに配置されていることは示していないが、この説明を通じて、オブジェクトを異なるコンピュータに配置できることを理解されたい。
【0035】
オブジェクトは、トランザクションのメンバである間、そのトランザクションのメンバではないオブジェクトからその任意のメソッドの呼出しを受け付けることができない。こうした呼出しは、トランザクションが完了するまで待ち行列に入れられる。
【0036】
トランザクションが、2相コミットプロトコルとして知られるプロトコルを使用して、アボート(図3)またはコミット(図4)のいずれかで完了する。図3は、アボートによって完了する3つのオブジェクト50、100、102を含むトランザクションを示す。オブジェクト50は、オブジェクトトランザクションシステム54のabort()メソッド104を呼び出すことによってアボートを開始する。次いで、システムは、トランザクションの各メンバオブジェクトの対応するabort()メソッド106、108、110を呼び出す。ログ74に格納されているこれらのオブジェクトの対応するチェックポイント112、114、116を使用して、これらのオブジェクトを、トランザクションに参加する直前の状態に復元する。
【0037】
図4は、コミットによって完了する3つのオブジェクト50、100、102を含むトランザクションを示す。オブジェクト50は、オブジェクトトランザクションシステム54のcommit()メソッド118を呼び出す。次いで、システムは、トランザクションの各メンバの対応するprepare()メソッドを呼び出す。オブジェクトは、トランザクションをコミットすることができる場合、votecommit結果を戻し、そうでない場合はvoteabort結果を戻す。システムは、トランザクションのメンバであるすべてのオブジェクトから票を集める。これらのすべてのオブジェクトがvotecommit126、128、130を戻した場合、システムは、トランザクションの各メンバの対応するcommit()メソッド132、134、136を呼び出す。こうした各メンバは、トランザクションの結果生じるすべての更新を含めて、その現在の状態を永久にし、トランザクションを完了する。任意のメンバがvoteabort結果を戻した場合、あるいは応答しなかった場合、システムは、図3に示すように、トランザクションの各メンバの対応するabort()メソッド106、108、110を呼び出す。次いで、こうした各オブジェクトは、上述したように、トランザクションに参加するときに記録された状態を復元し、トランザクションを終了する。
【0038】
また本発明は、オブジェクトレプリケーションによる故障許容のための既知の機構(L.E.Moser,P.M.Melliar−Smith and P.Narasimhan,“Consistent object replication in the Eternal system,”Theory and Practice of Object Systems,vol.4,no.2,January 1998,pp.81−92)、および高信頼全順序マルチキャストプロトコル(reliable totally−ordered multicast protocol)を使用してオブジェクトレプリカの整合性を保持するための既知の機構(L.E.Moser,P.M.Melliar−Smith,D.A.Agarwal,R.K.Budhia and C.A.Lingley−Papadopoulos,“Totem:A fault−tolerant multicast group communication system,”Communications of the ACM,vol.39,no.4,April 1996,pp.54−63)も利用する。両方の出版物を、参照により本明細書に組み込む。
【0039】
これらの出版物に記載されている機構によって、システムが、オブジェクトの複数のレプリカを保持し、レプリカを確実に整合性の取れた状態に保つことができるようになる。図5を参照すると、オブジェクトグループ150、152は、それぞれ3つの方法で複製される。各オブジェクトグループ150、152のレプリカ154、156、158、および160、162、164は、対応するオブジェクトレプリケーションミドルウェア(Object Replication Middleware)166、168、170、および172、174、176、および対応するマルチキャストプロトコル178、180、182、および184、186、188によってサポートされる。図5に示すように、オブジェクトグループ150のレプリカ158の1つが、オブジェクトグループ152のメソッドを呼び出す。その呼出しを含む要求メッセージ190は、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152のすべてのレプリカ160、162、164に送信される。故障許容領域内の他のオブジェクトも、オブジェクトグループ152のメソッドを呼び出すことができ、これらのメッセージもまた、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152に送信される。故障許容領域外のオブジェクトも、オブジェクトグループ152のメソッドを呼び出すことができ、これらのメッセージは、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152にそれらを送信するゲートウェイに送信される。このプロトコルによって、オブジェクトグループ152内のすべてのレプリカ160、162、164が、確実に同一のメッセージを同一の順序で受信できるようになる。その結果、それらはすべて、同一の作業を同一の順序で実行する。これによって、レプリカが整合性の取れた状態に保たれる。オブジェクトグループ150内の3つのすべてのレプリカ154、156、158がたとえオブジェクトグループ152のメソッドを呼び出すとしても、1つの要求メッセージ190のみが、オブジェクトグループ152内のレプリカ160、162、164に送られる。他の2つのまったく同一の要求メッセージ192、194を検出し、止める必要がある。同様に、1つの応答メッセージ196のみが、オブジェクトグループ150内のレプリカ154、156、158に戻される。他の2つのまったく同一の応答メッセージ198、200を検出し、止める必要がある。
【0040】
オブジェクトが複製されるため、こうしたレプリカがそのように影響を受けない限り、1つまたは複数のオブジェクトレプリカに影響を与える障害の後、システムの動作を続行することができる。
【0041】
故障許容システムは一般に、アクティブレプリケーションおよびパッシブレプリケーションの2つのレプリケーション戦略をサポートしている。アクティブレプリケーションおよびパッシブレプリケーションは、当技術分野ではよく理解されている用語である(例えば、D.P.Sieworek and R.S.Swarz,Reliable Computer Systems:Design and Evaluation,2nd edition,Burlington,MA,Digital Press,1992、およびD.Powell,editor,Delta−4:A Generic Architecture for Dependable Distributed Computing,Springer Verlag,1991。参照により本明細書に組み込む)。
【0042】
図5には、アクティブレプリケーション戦略を示している。この図では、オブジェクトグループ152のすべてのレプリカ160、164、166が、オブジェクトグループ152に対して呼び出された各メソッドを実行する。レプリカの1つが障害を起こし、結果をもたらすことができなくなった場合、その結果は、その他のレプリカから依然として入手可能であり、オブジェクトグループ150は、まるで障害が生じなかったかのように継続することができる。
【0043】
図6には、パッシブレプリケーション戦略を示している。この図では、オブジェクトグループ152の中の1つのレプリカ160、つまり1次レプリカのみが、オブジェクトグループ152に対して呼び出されたメソッドを実行する。他のレプリカ162、164、つまりバックアップレプリカは、オブジェクトグループ152に対して呼び出されたメソッドを実行しない。代わりに、各バックアップレプリカ156、158、および162、164では、要求メッセージ190および応答メッセージ196が各メッセージログ202、204、および206、208に記録される。
【0044】
1次レプリカ160の状態が、定期的にバックアップレプリカ162、164に転送される。get_state()メソッドが、1次レプリカ160に対して呼び出され、オブジェクトの現在の状態をコード化する直列構造(serialized structure)を戻す。この構造は、set_state()状態転送メッセージ(state transfer message)210でバックアップレプリカ162、164に送信される。get_state()メソッドおよびset_state()メソッドは、それぞれメソッド呼出しおよびメソッド応答を含む他の要求メッセージおよび応答メッセージとともに、対応するメッセージログ206、208に記録される。同様の状態転送メッセージ212を使用して、オブジェクトグループ150の1次レプリカ154から同一のオブジェクトグループのバックアップレプリカ156、158に状態を転送する。
【0045】
図7に、レプリケーションおよびトランザクション処理の統合によって、通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供する本発明の使用を示している。図7では、通信ネットワークを介して対話する2つのオブジェクト250、252を示す。本発明の戦略は、クライアントオブジェクトとサーバオブジェクトとを区別しない。各オブジェクトは、他のオブジェクトのメソッドを呼び出すことができ、他のオブジェクトからの要求を処理することができる。したがって、本発明は、分散コンピューティングのピアツーピアモデル、およびクライアント−サーバモデルに適用される。さらに、この戦略は、2つのオブジェクトのみに制限されない。任意のシーケンスおよびトポロジで対話する任意の数のオブジェクトに適用される。
【0046】
図7は、オブジェクトが故障許容のために複製されることを示している。オブジェクト250は、重なり合ったボックス254、256、258で示すように、3部複製され、オブジェクト252は、重なり合ったボックス260、262、264で示すように、3部複製される。レプリカの数は、その用途に必要な信頼性によって決定される。図7は、各オブジェクトが1つまたは複数のデータベース266、268、270、および272、274、276にアクセスできることを示している。こうしたデータベースは、よく知られているトランザクション機構(P.A.Bernstein,V.Hadzilacos and N.Goodman,Concurrency Control and Recovery in Database Systems,Addison Wesley Publishing Company,Reading,MA,1987、およびJ.Gray and A.Reuter,Transaction Processing:Concepts and Techniques,Morgan Kaufmann Publishers,San Mateo,CA,1993)を使用して、各自の故障許容を提供すると仮定される。両方の出版物を参照により本明細書に組み込む。
【0047】
ネットワーク接続型エンタープライズサーバ内で、あるオブジェクトは、2つのモードのうちの1つで動作する。
【0048】
(a)ネットワークモード:このモードでは、ある企業のコンピュータ上の1つのオブジェクトは、通信ネットワークを介して、別の企業の複数のリモートコンピュータ上の複数のオブジェクトと対話することができ、オブジェクトレプリケーションシステムによって障害から保護される。
【0049】
(b)トランザクションモード:このモードでは、ある企業のコンピュータ上の1つのオブジェクトは、その企業自体の中にあるデータベースと対話することはできるが、別の企業のリモートコンピュータ上のオブジェクトとは対話できない。オブジェクトは、トランザクション処理システムによって障害から保護される。
【0050】
これらの2つのモードは、レプリケーションおよびトランザクション処理による故障許容に対する2つの既存の戦略に相当する。これらの2つのモードの組合せは、本発明の主題であるレプリケーションとトランザクション処理との統合に相当する。
【0051】
図7では、破線は、オブジェクトがその間トランザクションモードで動作するトランザクションを示す。この例では、6つのトランザクション278、280、282、および284、286、288を示している。トランザクションの数は、その用途の必要性によって決まる。
【0052】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。各オブジェクトの初期および最終の作業290、292、294、296は、ネットワークモードである。図7に示すネットワークモードでの他の作業の一部が298、300、および302である。ネットワークモードでは、オブジェクトは、それ自体のコンピュータ、他のコンピュータ、あるいは他の企業のコンピュータにある他の複数のオブジェクトと自由に対話することができる。図6に示した他のオブジェクトとの対話の一部は、304、306、308、310、312、314、316、および318である。
【0053】
オブジェクトは、最初に290を開始したとき、またリモートオブジェクト292によって呼び出されたときにもネットワークモードになる。明示的にトランザクション320、322を開始することによって、あるいはすでにトランザクションの一部であるオブジェクトによって呼び出されることによって、オブジェクトはトランザクションモードになる。図8は、サーバオブジェクトSがトランザクションに参加する条件を列挙している。この表は、サーバオブジェクトS、およびSのメソッドを呼び出し、その結果Sでの活動を開始するクライアントオブジェクトCに言及している。オブジェクトは、そのトランザクションがコミットまたはアボートしたときにトランザクションモードからネットワークモードに戻る。
【0054】
ケース1。ここでは、クライアントオブジェクトCもサーバオブジェクトSも、トランザクションの一部ではない。ネットワーク接続型エンタープライズサーバの機構は、Cの要求をSに渡して、通常のやり方で処理を行う(400)。
【0055】
ケース2。サーバオブジェクトSは、トランザクションTsの一部であるが、クライアントオブジェクトCは、どのトランザクションにも含まれていない。ネットワーク接続型エンタープライズサーバの機構は、トランザクションTsがコミットし、終了するまでCの要求メッセージを待ち行列に入れる(402)。Sは、ケース1の場合のようにCの要求を処理する。
【0056】
ケース3。クライアントオブジェクトCは、トランザクションTcの一部であるが、サーバオブジェクトSは、どのトランザクションにも含まれていない。CおよびSが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求メッセージをSに渡し、Sは、トランザクションに参加し(404)、Cの要求を処理する。そうでない場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求を拒否する(406)。
【0057】
ケース4。クライアントオブジェクトCは、トランザクションTc内にあり、サーバオブジェクトSは、トランザクションTsの一部である。TcおよびTsが同一のトランザクションの場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求をSに渡し、Sは、Cの要求を通常のやり方で処理する(408)。TcおよびTsは異なるトランザクションであるが、CおよびSが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、トランザクションTsがコミットし、完了するまで、Cの要求を待ち行列に入れ(410)、次いで、Cの要求をSに渡して、ケース3の場合のようにCの要求を処理する。CおよびSが同一の故障許容領域内にない場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求を拒否する(412)。
【0058】
ケース5。このケースは、クライアントオブジェクトCを伴わない。サーバオブジェクトSが新しいトランザクションを開始する(414)。
【0059】
あるオブジェクトの故障許容領域は、そのオブジェクトのオブジェクトリファレンスの一部として含まれる(Object Management Group,Fault Tolerant CORBA Final Adopted Specification,OMG Platform Technical Committee Document ptc/2000−04−04,April 2000、参照により本明細書に組み込む)。したがって、メソッドが呼び出されたとき、クライアントオブジェクトとサーバオブジェクトとが、故障許容領域を知る。あるトランザクション内にあるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すとき、メソッド呼出しを含む要求メッセージは、クライアントのトランザクションの識別子を含むトランザクションコンテキストフィールドも含んでいる(Object Management Group,Transaction Service Specification v1.2(Final Draft),OMG Platform Technical Committee Document ptc/2000−11−07,January 2000、参照により本明細書に組み込む)。こうした機構は、当技術分野ではよく知られており、この機構によって、クライアントオブジェクトおよびサーバオブジェクトが、同一の故障許容領域内にあるかどうか、また同一のトランザクションに関与しているかどうかを判断することができるようにする。
【0060】
サーバオブジェクトがクライアントのローカル故障許容領域内にある場合のみ、トランザクションの一部であるクライアントオブジェクト(ケース3およびケース4)がサーバオブジェクトのメソッドを呼び出すことができる。トランザクションの一部であるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すときは、サーバオブジェクトがトランザクションの一部になる(404)必要がある。
【0061】
トランザクションの一部であるクライアントオブジェクトが、そのローカル故障許容領域内にないサーバオブジェクトのメソッドを呼び出す必要がある場合、クライアントオブジェクトは、まずその現在のトランザクションをコミットし、したがって完了する必要がある。
【0062】
トランザクションの一部であるサーバオブジェクト(ケース2およびケース4)が、どのトランザクションにも含まれていない、あるいはそのサーバのトランザクションの一部ではないクライアントオブジェクトから要求を受信した場合、サーバオブジェクトは、サーバがトランザクション内にいる間はクライアントの要求を処理することができない。代わりに、ネットワーク接続型エンタープライズサーバの機構は、サーバオブジェクトがトランザクションをコミットし、したがって完了するまでクライアントの要求を待ち行列に入れる(402、410)。
【0063】
本明細書に記載した本発明は、一部のトランザクションサービスが提供しているネストトランザクションに対処できる範囲まで容易に拡張される。あるオブジェクトが、すでにトランザクションの一部であり、新しいトランザクションを開始したときに、ネストトランザクションが形成される(J.Gray and A.Reuter,Transaction Processing:Concepts and Techniques,Morgan Kaufmann Publishers,San Mateo,CA,1993、参照により本明細書に組み込む)。内部トランザクションは、外部トランザクションに影響を与えることなくコミットまたはアボートすることはできるが、こうしたコミットは、外部トランザクションもまたコミットするまで完了しない。外部トランザクションは、すべての内部トランザクションがコミットまたはアボートしない限りコミットすることができず、また外部トランザクションのアボートによってすべての内部トランザクションがアボートする。本発明の文脈では、ネストトランザクションの複雑さのほとんどは、ネストトランザクションを提供するトランザクションサービスの標準の機構によって処理される。図10Aでは、本明細書に記載されているアルゴリズムに対する変更のみが行われ、以下で説明するように、これに代わって図13となる。
【0064】
トランザクションモードでの動作
図9に示すように、ネットワーク接続型エンタープライズサーバ内では、複製されたオブジェクトの状態を、トランザクションに参加する時点でチェックポイントする必要がある。しかし、状態全体をチェックポイントする必要はなく、既存の前のチェックポイントを、オブジェクトがチェックポイント以降に受け取った要求メッセージおよび応答メッセージのログとともに保持すれば十分である。ネットワーク接続型エンタープライズサーバの機構は、前のチェックポイントを復元し、次いで、そのチェックポイント以降のすべての要求メッセージおよび応答メッセージをメッセージログから再生することによって、トランザクションに参加する時点のオブジェクトの状態を回複する。したがって、トランザクションに参加する時点で、ネットワーク接続型エンタープライズサーバの機構は、ブロック500で、メッセージログをチェックして、ログに最近のチェックポイントが含まれているかどうかを判断する。ブロック502で最近のチェックポイントが見つからない場合、ネットワーク接続型エンタープライズサーバの機構は、ブロック504で、強制的にチェックポイントを生成し、メッセージログにチェックポイントを記録する。次いで、ブロック506で、オブジェクトはトランザクションモードに入る。そうでない場合、ブロック502で最近のチェックポイントが見つかった場合、ブロック504を飛び越す。
【0065】
あるオブジェクトがトランザクションモードのとき、ネットワーク接続型エンタープライズサーバの機構は、メッセージログに、他のオブジェクトとのすべての対話、およびローカルデータベースとのすべての対話を要求メッセージおよび応答メッセージとして記録する。この機構は、定期的に、オブジェクトの状態のチェックポイントもログに記録する。メッセージおよびチェックポイントをログに記録する機構は、当技術分野ではよく知られている。
【0066】
トランザクションのコミット
図10Aに示すように、ブロック600で、トランザクションの一部であるオブジェクトが標準の2相コミットプロトコルを使用してトランザクションをコミットしたとき、ブロック602で、オブジェクトは、ネットワークモードに戻る。トランザクション中にメッセージログに記録された要求メッセージおよび応答メッセージは、将来使用する可能性のために保持される。ブロック604で、保留待ち行列にメッセージがあるかどうかをチェックする。ブロック606で、トランザクションの完了までの間、オブジェクトのメッセージが待ち行列に入れられていると判断された場合、ネットワーク接続型エンタープライズサーバの機構は、待ち行列に入れられているこれらのメッセージをオブジェクトに渡して、ブロック606でこうしたメッセージがなくなるまで、待ち行列に入れられた順序で処理する。こうしたメッセージがなくなったら、次いで、ブロック610で、オブジェクトは、処理すべき次の要求メッセージを待つ。
【0067】
トランザクションのアボート
図10Bに示すように、ブロック612で、トランザクションの一部であるオブジェクトがトランクザクションをアボートした場合、またはトランザクションコミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図11に示すように、ブロック614で、そのメッセージログにある最新のチェックポイントを使用して、オブジェクトを再開する。ブロック616で、オブジェクトがトランザクションを開始しなかったと判断された場合、ネットワーク接続型エンタープライズサーバは、図10Aのブロック602からのアクションをたどり、オブジェクトは、ネットワークモードに戻る。オブジェクトは、トランザクションを開始した場合、ブロック618でトランザクションを再開する。
【0068】
オブジェクトがトランザクションをアボートした場合、または2相コミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図11に示す機構を使用してオブジェクトを再開する。また、ネットワーク接続型エンタープライズサーバは、こうした機構を使用して、ネットワークモードで、オブジェクトの新しいまたはバックアップレプリカを開始する。図11に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック700で、ログ内で最新のチェックポイントを探し、次いで、ブロック702で、そのチェックポイントを使用してオブジェクトの状態を復元する。次いで、そのチェックポイント以降にログに記録された要求メッセージおよび応答メッセージを再生する。この機構は、ブロック704でログから次のメッセージを抽出し、ブロック706で、そのメッセージがアボートされたトランザクションで生成されたかどうかを判断する。メッセージがアボートされたトランザクション内で生成されたものではない場合、メッセージは、オブジェクトに渡され、ブロック708で処理される。そうでない場合、メッセージは、710で破棄される。この機構では、ブロック712でログにメッセージがないと判断されるまでメッセージログからメッセージを抽出し、その場合ルーチンは終了する。
【0069】
アボートされたトランザクションの試行の結果がトランザクションから漏れる可能性はない。特に、結果が、ネットワークを介して故障許容領域外の任意のコンピュータに伝達される可能性はまったくない。トランザクションに関与し、トランザクションからの中間結果を取得したすべてのオブジェクトは、トランザクションのアボートの結果、再開される。したがってトランザクションのACID特性が維持される。
【0070】
ネットワークモードでの障害の回復
ネットワーク接続型エンタープライズサーバ内では、ネットワークモードの場合、故障許容は、オブジェクトレプリケーションによって提供される。ロールバック/アボートモデルの回復を使用するトランザクション処理とは異なり、オブジェクトレプリケーションは、ロールフォワードモデルの回復を使用する。ネットワークモードでのロールフォワード回復の重要性は、ネットワーク接続型エンタープライズサーバの機構は、通信ネットワークを介して別の企業に送信された任意のメッセージを決して撤回しないことである。
【0071】
ネットワークモードでの通常の動作中に、ネットワーク接続型エンタープライズサーバの機構がオブジェクトを定期的にチェックポイントし、そのチェックポイントをログに記録する。また、機構は、オブジェクトのメソッドを呼び出す、またオブジェクトがそれによって他のオブジェクトのメソッドを呼び出す、オブジェクトのすべての要求メッセージもログに記録する。また、対応する応答メッセージも記録する。機構は、メッセージをログに順々に記録する。メッセージのロギングおよびチェックポインティングは、当技術分野ではよく知られている。
【0072】
あるオブジェクトの1つのレプリカが障害を起こした場合、上記で説明し、図11に示したように、ネットワーク接続型エンタープライズサーバの機構は、まずブロック702で、新しいレプリカの状態をログにある最新のチェックポイントに設定し、次いで、ブロック708で、ログから後続のメッセージを再生することによって、オブジェクトの新しいレプリカを既存のレプリカと同一の状態で作成することができる。機構は、あるオブジェクトの各レプリカを個々に回復することができる。オブジェクトが決定的である(決定的にされた)と仮定すると、あるオブジェクトの各レプリカは、そのオブジェクトの他のレプリカと依然として一致したままであり、障害によって影響を受けていないレプリカ、および影響を受けたレプリカはいずれも回復する。オブジェクトの状態をチェックポイントから設定し、ログからメッセージを再生する機構は、従来技術ではよく知られている。
【0073】
ログからのメッセージを回復し処理する間、オブジェクトのレプリカは、他のオブジェクトのメソッドを呼び出す要求メッセージをさらに生成することができる。こうした、それ以上の要求メッセージは、他のオブジェクトによってすでに送信され処理されている前のメッセージの反復である可能性がある。別のオブジェクトがこうしたメッセージを2度処理する場合、正しくない結果がもたらされる可能性がある。
【0074】
図12に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック800でオブジェクトのメッセージを受信したとき、ブロック802で、メッセージをログと照会して、それがログに記録されたメッセージの複製であるかどうかを判断する。ブロック804で、そのメッセージが複製ではないと判断されると、機構は、ブロック806で、そのメッセージをログに記録し、オブジェクトに送って、ブロック808で通常の処理を行う。
【0075】
ブロック804で、そのメッセージが、ブロック804でログに記録されたメッセージの複製であると判断された場合、およびブロック810でそのメッセージが要求メッセージであると判断され、ブロック812でその応答がログに記録されていないと判断された場合、サーバオブジェクトは、ブロック808で、すでに前の非複製の要求メッセージを処理しており、したがって機構は、この複製メッセージを破棄することができる。サーバオブジェクトは、適当なときに、ブロック808で要求の応答を生成する。
【0076】
ブロック804で、そのメッセージが、ログに記録されているメッセージの複製であると判断された場合、およびブロック810でそのメッセージが要求メッセージであると判断され、ブロック812でその応答がログに記録されていると判断された場合、オブジェクトがメッセージを処理するのではなく、代わりにブロック814で、ネットワーク接続型エンタープライズサーバの機構が、ログからの応答メッセージを再送信し、ブロック816で複製の要求メッセージを破棄する。
【0077】
オブジェクトのレプリカは、障害を起こす前にトランザクションに関与しており、そのトランザクションがコミットし、データベース内にその結果を記録しているかもしれない。オブジェクトのレプリカの回復には、それが関与したトランザクションの結果を含める必要がある。トランザクション中、オブジェクトのレプリカと、データベースを含む他のオブジェクトとの間の対話は、ログに記録されるメッセージとして表される。障害のあるオブジェクトのレプリカの回復中、ネットワーク接続型エンタープライズサーバの機構は、これらの他のオブジェクト、トランザクション処理システム、またはデータベースを必要とすることなく、ログからこうしたメッセージを再生する。特に、オブジェクトに対して再生されたデータベース値は、現在のデータベース値ではなく、以前実行されたときにオブジェクトが受信したメッセージ内の値である。同様に、ネットワーク接続型エンタープライズサーバの機構は、オブジェクトによって生成されたデータベース更新メッセージを前のメッセージの複製と認識し、したがってデータベースに影響を与えない。さらに、オブジェクトの回復は、データベースの現在のロッキングに影響を与えない。
【0078】
ネットワーク接続型エンタープライズサーバの機構は、ある企業のコンピュータの1つのオブジェクトと、他の複数の企業のコンピュータの複数のオブジェクトとの間のすべての要求メッセージおよび応答メッセージをメッセージログに記録する。障害のあるオブジェクトレプリカの回復中に、ネットワーク接続型エンタープライズサーバの機構は、他の複数の企業のコンピュータの複数のオブジェクトの動作を中断させることなくその状態を設定するように、これらのメッセージを回復しているオブジェクトのレプリカに対して再生する。同様に、通信リンク、またはリモートコンピュータの障害によっていくつかのメッセージを送信し直す必要がある場合、ネットワーク接続型エンタープライズサーバの機構は、ログからこれらのメッセージを抽出する。その再送信によって、他の企業のコンピュータのオブジェクトの動作が中断することはない。
【0079】
ネストトランザクションの取扱い
図13は、ネストトランザクションを扱うのに必要な図10Aに対する変更を示す。ネストトランザクションを扱うために図13に示したネットワーク接続型エンタープライズサーバの追加アクションには、内部トランザクションを完了した後、ブロック900で、オブジェクトが依然として外部トランザクションに留まっているかどうかを判断するテストが含まれる。その場合、保留メッセージ待ち行列にあるメッセージを扱うのに必要な機構は、待ち行列内の次のメッセージが現在のトランザクションのためのものかどうかを判断する追加テストを含む。まず、ブロック902で、保留待ち行列内にメッセージがあるかどうかのチェックが行われる。次に、ブロック904で、さらにメッセージがあるかどうかのテストが行われる。ブロック906で、次のメッセージが現在のトランザクションのためのものであると判断された場合、このメッセージは、ブロック908で処理される。次のメッセージが現在のトランザクションのためのものではない場合、ブロック910で、保留待ち行列内の他のすべてのメッセージは、その待ち行列に留まっておく必要があり、そのオブジェクトは、ブロック610で、処理すべき他の要求メッセージを待つ。
【0080】
上記の説明は、多くの特定の詳細を含んでいるが、これらは、本発明の範囲を限定するものとしてではなく、本発明の現段階で好ましい実施形態の一部を単に例として示すものとして解釈すべきである。したがって、当分野の技術者には明らかなように、本発明の範囲は、他の実施形態を完全に包含し、したがって本発明の範囲は、頭記の特許請求の範囲によってのみ限定されることを理解されたい。特許請求の範囲において、単数の要素への言及は、そのように明記しない限り、「唯一無二」を意味するものではなく、「1つまたは複数」を意味するものである。当分野の技術者に知られている、上記の好ましい実施形態の要素のすべての構造的、機能的均等物は、参照により本明細書に明示的に組み込まれ、本特許請求の範囲に包含されるものである。さらに、ある装置または方法が本特許請求の範囲に包含されるには、その装置または方法が本発明が解決しようと努めるすべての問題に対処する必要はない。さらに、本開示の要素、構成要素、または方法ステップは、特許請求の範囲に明記されているかどうかに関わらず、公に提供されたものではない。本明細書のどの請求要素も、「のため手段」という句を使用して明記していない限り、米国特許法第112条第6段落の規定に基づいて解釈されるべきではない。
【図面の簡単な説明】
【図1】
故障許容領域を示す図である。
【図2】
トランザクション処理、およびメソッド呼出しを含む要求メッセージ内のトランザクションコンテキストの使用を示す図である。
【図3】
トランザクションのアボートを示す図である。
【図4】
トランザクションのコミットを示す図である。
【図5】
アクティブレプリケーションを示す図である。
【図6】
パッシブレプリケーションを示す図である。
【図7】
本発明の動作を示す図である。
【図8】
クライアントオブジェクトの要求メッセージのサーバオブジェクトの受信における5つのケースを示す表である。
【図9】
トランザクションの参加時のアクションを示す流れ図である。
【図10Aおよび10B】
それぞれトランザクションのコミット時のアクション、およびトランザクションのアボート時のアクションを示す流れ図である。
【図11】
メッセージログからのオブジェクトの回復を示す流れ図である。
【図12】
メッセージの受信時のメッセージの取扱いを示す流れ図である。
【図13】
ネストトランザクションの場合のトランザクションのコミット時のアクションを示す流れ図である。
(関連出願の相互参照)
本出願は、参照により本明細書に組み込む米国仮出願第60/244,077号からの優先権を主張する。
【0002】
(連邦政府後援の研究または開発に関する文書)
該当なし
(コンピュータプログラムの付録への参照)
該当なし
(著作権保護の対象となる資料の通知)
本特許文献の資料の一部は、米国および他国の著作権法に基づく著作権保護の対象となることがある。著作権の所有者は、米国特許商標局のファイルまたは記録に記載されているとおりに特許文献または特許開示を第三者が複製することに異議を唱えないが、その場合を除きすべての著作権を留保する。本明細書は、本特許著作権の所有者が、それだけには限定されないが、37 C.F.R.§1.14による権利も含めて、本特許文書を機密に保持しておく所有者のいずれの権利も拒否するものではない。
【0003】
(発明の背景)
1.発明の分野
本発明は一般に、通信ネットワークを介してリモートコンピュータプログラムと対話するときに、確実かつ連続的に動作しなければならないコンピュータプログラムに関し、より詳細には、レプリケーションとトランザクション処理との統合によって故障許容を提供する方法に関する。
【0004】
2.背景技術の説明
インターネットを介した企業間の対話が増加するにつれて、多くのコンピュータシステムは、障害にもかかわらず信頼性の高い連続動作を提供しなければならない。コンピュータシステムの従来の故障許容は、個々のコンピュータの処理作業を障害から保護することに焦点を置いている。多くの企業のコンピュータシステムは、トランザクション処理を使用して、コンピュータシステムのデータを障害から保護する。トランザクションが完了する(例えばコミットする)のを妨げる障害の場合、トランザクションがアボートし、データはトランザクションの開始時の状態に戻る。
【0005】
トランザクション処理は、データが、トランザクションがコミットした後は整合性の取れた最終的な状態、また、トランザクションがアボートした後は整合性の取れた最初の状態で残り、不整合で一部が処理された状態では残らないことを確実にすることによって、コンピュータシステムのデータを保護する。障害時には、トランザクションがデータに対して行うすべての処理が失われ、トランザクションを開始したクライアントは、トランザクションを再試行することができる。
【0006】
トランザクションは、人間のクライアントに対するサーバとして働くコンピュータシステムに対して適切に動作する。人間のクライアントは、トランザクションがアボートされ、処理が失われ、トランザクションを最初から再試行しなければならないことを理解することができる。また、人間のクライアントは、トランザクションを再試行したときに、トランザクションの結果が、トランザクションを最初に試行したときに得られたであろう結果とは違うかもしれないと理解することもできる。
【0007】
しかし、異なる企業内、または同一の企業の異なる部署内の2台のコンピュータがインターネットや仮想プライベートネットワークなどの通信ネットワークを介して互いに対話するときは、トランザクションはあまり有効ではない。クライアントとして働くコンピュータには、人間のクライアントの知能はない。トランザクションがサーバによってアボートされたときに、適切に動作するようにクライアントコンピュータをプログラムすることは難しい。また、サーバの使用を試みた最初の試行と、アボート後の再試行との間に結果として生じ得る何らかの違いを処理するようにクライアントコンピュータをプログラムすることも難しい。
【0008】
理論上は、単一の分散トランザクションに、1つの企業のクライアントコンピュータと別の企業のサーバコンピュータとを含めることは可能である。トランザクションは、トランザクションのコーディネータとして働くクライアントコンピュータによって開始される。トランザクションのコミット中の重大な瞬間にクライアントが障害を起こした場合、または2台のコンピュータ間の通信が失われた場合、サーバは、クライアントが回復するまで停止する。その結果、実際には、分散トランザクションは使用されない。
【0009】
現況技術では、コンピュータ群が、ネットワークを介して通信するトランザクションに参加することはできる。しかし、トランザクションは、中央のトランザクションコーディネータの制御下にある。同様に、データベースのいくつかのコピーが共存できるようにする技術は存在するが、中央制御装置は、そのコピーの1つを1次コピー、その他のコピーをバックアップコピーとして指定する必要がある。複数のコンピュータが、おそらくはネットワークを介して、トランザクションに参加できるようにする技術も存在する。こうした構成では、中央制御装置はない。代わりに、任意のプロセッサが、それが開始するトランザクションのコーディネータとして働くことができる。しかし、各トランザクションを管理するコーディネータは1つしかない。その結果、いくつかの企業のコンピュータにまたがる活動で、各企業が、そのコンピュータ内でのトランザクションを、別の企業のコンピュータ上のコーディネータによって管理できるようにする必要がある。ほとんどの企業は、そのような形で、他の企業がその企業のコンピュータを使用することを許さないはずである。
【0010】
したがって、複数の企業のコンピュータにまたがる活動を制御する中央制御装置の使用を回避する故障許容技術が必要となる。本発明は、その必要性等に応え、故障許容技術の当技術分野の現状における欠陥を克服する。
【0011】
(発明の概要)
本発明は、レプリケーションとトランザクション処理とを統合することによって通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供するネットワーク接続型エンタープライズサーバ(Networked Enterprise Server)の機構を提供する。本発明では、トランザクション処理を使用して、ローカルのデータおよび処理を障害から保護し、レプリケーションを使用して、複数の企業にまたがる処理および通信を障害から保護する。本発明は、中央制御装置なしに、また任意の企業がそのトランザクションを別の企業のコーディネータから制御できるようにする必要なしに、異なる企業のコンピュータ間のネットワークを介したトランザクション処理の、また信頼性の高い対話の便益を獲得する。レプリケーションとトランザクション処理とを統合することによって、コンピュータアプリケーションが通信ネットワークを介して複数の企業にまたがる状況で、いずれもそれ自体では不十分な両方の戦略の利点を提供する。
【0012】
本発明をより一般的な用語で説明することはできるが、標準のオブジェクト指向の用語を使用することによって、本発明が理解しやすくなる。本発明の機構を使用するオブジェクトは、2つのモードのいずれかで動作する。
【0013】
ネットワークモード。このモードでは、あるコンピュータ上の1つのオブジェクトは、通信ネットワークを介して、複数のリモートコンピュータ上の複数のオブジェクトと対話することができる。ネットワークモードでは、オブジェクトは、オブジェクトレプリケーションシステムによって障害から保護される。
【0014】
トランザクションモード。このモードでは、あるコンピュータ上の1つのオブジェクトは、ローカルデータベース内にあるオブジェクトとは対話することができるが、通信ネットワークを介してリモートコンピュータ上のオブジェクトと対話することはできない。トランザクションモードでは、オブジェクトは、トランザクション処理システムによって障害から保護される。
【0015】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。ネットワークモードでは、オブジェクトは、それ自体のコンピュータの他のオブジェクト、あるいは、通信ネットワークを介して、リモートコンピュータにある複数のオブジェクトと自由に対話することができる。こうした対話を伝達するメッセージ、すなわち要求メッセージ(メソッド呼出しを含む)、および応答メッセージ(対応する応答を含む)は、いずれもメッセージログに記録される。
【0016】
オブジェクトは、明示的にトランザクションを開始することによって、あるいはトランザクションの一部である別のオブジェクトによって呼び出されることによってトランザクションモードになる。トランザクションモードでは、オブジェクトは、ネットワークを介してリモートオブジェクトのメソッドを呼び出すことも、トランザクションの一部ではないオブジェクトからの要求メッセージを受け付けることもできない。
【0017】
オブジェクトは、トランザクションがコミット、またはアボートしたときにトランザクションモードからネットワークモードに戻る。
【0018】
本発明は、オブジェクトのレプリケーションの機構とトランザクションの機構とを統合して、コンピュータプログラムが、通信ネットワークを介してリモートコンピュータプログラムと通信している間に、障害から確実に回復できるようにするネットワーク接続型エンタープライズサーバの機構を提供し、その結果、
(a)コンピュータプログラムが、障害にもかかわらず、その意図された機能を引き続き実行することができる。
【0019】
(b)コンピュータプログラムが、障害によって生じる破損または不整合からそのデータを保護することができる。
【0020】
(c)コンピュータプログラムが、まるで障害が起こらなかったかのように、リモートコンピュータとの対話を続行することができる。
【0021】
(d)コンピュータプログラムは、障害を起こしたときに、他のコンピュータプログラムの動作を中断することはできない。
【0022】
本発明の他の利点は、本文書の以下の部分で明らかになる。詳細な説明は、本発明の好ましい実施の形態を十分に開示するためのものであって、それに限定されるものではない。
【0023】
本発明は、例として示したにすぎない以下の図を参照することによってより十分に理解できよう。
【0024】
(発明の詳細な説明)
例として示した図をより具体的に参照すると、本発明は、図1から図13を参照して説明する。本明細書に開示した基本的な概念から逸脱しなければ、機器が構成および各部の詳細については異なっていてもよく、また方法が特定のステップおよび手順について異なっていてもよいことを理解されたい。
【0025】
本発明の機構の詳細な説明は、C++、Java(登録商標)、および他のオブジェクト指向プログラミング言語、およびCORBA(Common Object Request Broker Architecture:共通オブジェクトリクエストブローカーアーキテクチャ)、Java(登録商標) Remote Method Invocation、およびActiveX/DCOM(Distributed Component Object Model)などの分散オブジェクトアーキテクチャで使用する標準のオブジェクト指向の用語を使用する。特に、この説明では、以下の定義を使用する。
【0026】
オブジェクトは、オブジェクト指向コンピュータプログラムの実行中に作成され、属性(データ構造または変数)、およびメソッド(プロシージャ)によって表される。
【0027】
クライアント−サーバモデルに基づく分散オブジェクトコンピューティングでは、クライアントオブジェクトは、サーバオブジェクトに、その作業またはサービスを実行するよう要求する。クライアントオブジェクトは、サーバオブジェクトが実行する作業またはサービスを定義するサーバオブジェクトのメソッドの1つを呼び出す旨の要求メッセージをサーバオブジェクトに送信する。要求メッセージは、メソッドの名前、およびメソッドの引数を含む。メソッドを実行した後、サーバオブジェクトは、応答メッセージをクライアントオブジェクトに送信することによって応答する。応答メッセージは、メソッド呼出しの結果を含んでいる。
【0028】
以下の説明の大部分では、クライアントオブジェクトおよびサーバオブジェクトに関して記載しているが、機構は普遍的であり、各オブジェクトは、クライアントおよびサーバとして働くことができる。このように両方の役割を果たすのは一般に、サプライチェーンの用途など、複数の連鎖した企業が関与するネットワークで接続された用途の場合である。各オブジェクトがクライアントおよびサーバの役割を果たすことができるため、本発明は、クライアント−サーバモデルに基づく用途だけではなく、ピアツーピアモデルに基づく用途にも適用される。
【0029】
オブジェクトの状態とは、オブジェクトの属性の値である。オブジェクトの状態は、時間が経つと変わる可能性がある。オブジェクトの状態の変化は、オブジェクトのメソッドを呼び出す、オブジェクトに送信されたメッセージの結果である。
【0030】
オブジェクトのレプリカとは、元のオブジェクトと同一の状態を有し、一般的に異なるコンピュータがホストとなるオブジェクトのコピーである。
【0031】
図1に示すように、オブジェクトは、複数の故障許容領域に分類され、オブジェクトのすべてのレプリカは、単一の故障許容領域内に配置される。例えば、図1は、分岐位置10にある単一のコンピュータまたはホスト、および2つのコンピュータ群またはホスト群12、14、16、および18、20、22を示す。3つの故障許容領域24、26、28を示している。ホスト14、ホスト16、ホスト18は、それぞれ2つの故障許容領域に関与しており、ホスト10、ホスト20、およびホスト22は、1つのみの故障許容領域に関与していることに注意されたい。オブジェクトBのすべてのレプリカは、単一の故障許容領域内でホストされており、オブジェクトC、D、Eのすべてのレプリカも同様であることに注意されたい。故障許容領域の一部ではなく、複製されていないオブジェクトAは、従来のインターネットメッセージ32を介して、ゲートウェイ30を通って故障許容領域内にアクセスする。
【0032】
本発明は、当技術分野でよく知られているトランザクション処理機構を利用する。特に、参照により本明細書に組み込んだObject Management Group(OMG)(Object Management Group,Transaction Service Specification v1.2(Final Draft),OMG Platform Technical Committee Document ptc/2000−11−07,January 2000)によって標準化されたObject Transaction Service(OTS)の仕様を利用する。本発明は同様に、Java(登録商標) Transaction ServiceやMicrosoft Transaction Serviceなど、他のトランザクションサービス標準にも適用できることに注意されたい。
【0033】
本明細書では、トランザクション処理システムの基本的な戦略を記載する。トランザクションは、標準ACID特性、すなわち原子性、一貫性、独立性、耐久性を満たす必要がある。原子性とは、システムが、データに対する個々のすべての作業を実行する、あるいは部分的に完了した作業によってデータに対する影響を一切残さないようにすることを意味する。一貫性は、トランザクションの任意の実行によって、データベースを、ある整合状態から別の整合状態に移行させることを必要とする。独立性は、並行するトランザクションの作業が、各トランザクションを完了まである順序で連続的に実行させることによって得られる結果と区別できない結果をもたらすことを必要とする。耐久性とは、コミットされたトランザクションの作用を保持し、障害から回復した後のデータベースが確実に整合性を取れるようにすることである。
【0034】
図2に示すように、トランザクションは、オブジェクトトランザクションシステム54のbegin−transaction()メソッド52を呼び出すオブジェクト50で開始する。この呼出しは、一意のトランザクション識別子を作成し、トランザクションコンテキスト56にあるそのトランザクション識別子を戻す。トランザクションを開始したオブジェクト50は、トランザクションのメンバになる。オブジェクト50や58などのトランザクションのメンバであるオブジェクトがオブジェクト58や60などの別のオブジェクトのメソッドを呼び出すときはいつでも、オブジェクトトランザクションシステム54は、トランザクションコンテキストを、メッセージ62や64など、呼出しを含む対応するメッセージに付加する。トランザクションコンテキストを含むメッセージを受信した後、呼び出されたオブジェクト58または60は、オブジェクトトランザクションシステム54のregister()メソッド66または68を呼び出し、そのトランザクションのメンバになる。そのトランザクションのメンバになった後、必要に応じてオブジェクトの現在の状態のチェックポイント70または72がログ74に格納され、したがってその状態を格納することができる。図には、オブジェクトが異なるコンピュータに配置されていることは示していないが、この説明を通じて、オブジェクトを異なるコンピュータに配置できることを理解されたい。
【0035】
オブジェクトは、トランザクションのメンバである間、そのトランザクションのメンバではないオブジェクトからその任意のメソッドの呼出しを受け付けることができない。こうした呼出しは、トランザクションが完了するまで待ち行列に入れられる。
【0036】
トランザクションが、2相コミットプロトコルとして知られるプロトコルを使用して、アボート(図3)またはコミット(図4)のいずれかで完了する。図3は、アボートによって完了する3つのオブジェクト50、100、102を含むトランザクションを示す。オブジェクト50は、オブジェクトトランザクションシステム54のabort()メソッド104を呼び出すことによってアボートを開始する。次いで、システムは、トランザクションの各メンバオブジェクトの対応するabort()メソッド106、108、110を呼び出す。ログ74に格納されているこれらのオブジェクトの対応するチェックポイント112、114、116を使用して、これらのオブジェクトを、トランザクションに参加する直前の状態に復元する。
【0037】
図4は、コミットによって完了する3つのオブジェクト50、100、102を含むトランザクションを示す。オブジェクト50は、オブジェクトトランザクションシステム54のcommit()メソッド118を呼び出す。次いで、システムは、トランザクションの各メンバの対応するprepare()メソッドを呼び出す。オブジェクトは、トランザクションをコミットすることができる場合、votecommit結果を戻し、そうでない場合はvoteabort結果を戻す。システムは、トランザクションのメンバであるすべてのオブジェクトから票を集める。これらのすべてのオブジェクトがvotecommit126、128、130を戻した場合、システムは、トランザクションの各メンバの対応するcommit()メソッド132、134、136を呼び出す。こうした各メンバは、トランザクションの結果生じるすべての更新を含めて、その現在の状態を永久にし、トランザクションを完了する。任意のメンバがvoteabort結果を戻した場合、あるいは応答しなかった場合、システムは、図3に示すように、トランザクションの各メンバの対応するabort()メソッド106、108、110を呼び出す。次いで、こうした各オブジェクトは、上述したように、トランザクションに参加するときに記録された状態を復元し、トランザクションを終了する。
【0038】
また本発明は、オブジェクトレプリケーションによる故障許容のための既知の機構(L.E.Moser,P.M.Melliar−Smith and P.Narasimhan,“Consistent object replication in the Eternal system,”Theory and Practice of Object Systems,vol.4,no.2,January 1998,pp.81−92)、および高信頼全順序マルチキャストプロトコル(reliable totally−ordered multicast protocol)を使用してオブジェクトレプリカの整合性を保持するための既知の機構(L.E.Moser,P.M.Melliar−Smith,D.A.Agarwal,R.K.Budhia and C.A.Lingley−Papadopoulos,“Totem:A fault−tolerant multicast group communication system,”Communications of the ACM,vol.39,no.4,April 1996,pp.54−63)も利用する。両方の出版物を、参照により本明細書に組み込む。
【0039】
これらの出版物に記載されている機構によって、システムが、オブジェクトの複数のレプリカを保持し、レプリカを確実に整合性の取れた状態に保つことができるようになる。図5を参照すると、オブジェクトグループ150、152は、それぞれ3つの方法で複製される。各オブジェクトグループ150、152のレプリカ154、156、158、および160、162、164は、対応するオブジェクトレプリケーションミドルウェア(Object Replication Middleware)166、168、170、および172、174、176、および対応するマルチキャストプロトコル178、180、182、および184、186、188によってサポートされる。図5に示すように、オブジェクトグループ150のレプリカ158の1つが、オブジェクトグループ152のメソッドを呼び出す。その呼出しを含む要求メッセージ190は、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152のすべてのレプリカ160、162、164に送信される。故障許容領域内の他のオブジェクトも、オブジェクトグループ152のメソッドを呼び出すことができ、これらのメッセージもまた、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152に送信される。故障許容領域外のオブジェクトも、オブジェクトグループ152のメソッドを呼び出すことができ、これらのメッセージは、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ152にそれらを送信するゲートウェイに送信される。このプロトコルによって、オブジェクトグループ152内のすべてのレプリカ160、162、164が、確実に同一のメッセージを同一の順序で受信できるようになる。その結果、それらはすべて、同一の作業を同一の順序で実行する。これによって、レプリカが整合性の取れた状態に保たれる。オブジェクトグループ150内の3つのすべてのレプリカ154、156、158がたとえオブジェクトグループ152のメソッドを呼び出すとしても、1つの要求メッセージ190のみが、オブジェクトグループ152内のレプリカ160、162、164に送られる。他の2つのまったく同一の要求メッセージ192、194を検出し、止める必要がある。同様に、1つの応答メッセージ196のみが、オブジェクトグループ150内のレプリカ154、156、158に戻される。他の2つのまったく同一の応答メッセージ198、200を検出し、止める必要がある。
【0040】
オブジェクトが複製されるため、こうしたレプリカがそのように影響を受けない限り、1つまたは複数のオブジェクトレプリカに影響を与える障害の後、システムの動作を続行することができる。
【0041】
故障許容システムは一般に、アクティブレプリケーションおよびパッシブレプリケーションの2つのレプリケーション戦略をサポートしている。アクティブレプリケーションおよびパッシブレプリケーションは、当技術分野ではよく理解されている用語である(例えば、D.P.Sieworek and R.S.Swarz,Reliable Computer Systems:Design and Evaluation,2nd edition,Burlington,MA,Digital Press,1992、およびD.Powell,editor,Delta−4:A Generic Architecture for Dependable Distributed Computing,Springer Verlag,1991。参照により本明細書に組み込む)。
【0042】
図5には、アクティブレプリケーション戦略を示している。この図では、オブジェクトグループ152のすべてのレプリカ160、164、166が、オブジェクトグループ152に対して呼び出された各メソッドを実行する。レプリカの1つが障害を起こし、結果をもたらすことができなくなった場合、その結果は、その他のレプリカから依然として入手可能であり、オブジェクトグループ150は、まるで障害が生じなかったかのように継続することができる。
【0043】
図6には、パッシブレプリケーション戦略を示している。この図では、オブジェクトグループ152の中の1つのレプリカ160、つまり1次レプリカのみが、オブジェクトグループ152に対して呼び出されたメソッドを実行する。他のレプリカ162、164、つまりバックアップレプリカは、オブジェクトグループ152に対して呼び出されたメソッドを実行しない。代わりに、各バックアップレプリカ156、158、および162、164では、要求メッセージ190および応答メッセージ196が各メッセージログ202、204、および206、208に記録される。
【0044】
1次レプリカ160の状態が、定期的にバックアップレプリカ162、164に転送される。get_state()メソッドが、1次レプリカ160に対して呼び出され、オブジェクトの現在の状態をコード化する直列構造(serialized structure)を戻す。この構造は、set_state()状態転送メッセージ(state transfer message)210でバックアップレプリカ162、164に送信される。get_state()メソッドおよびset_state()メソッドは、それぞれメソッド呼出しおよびメソッド応答を含む他の要求メッセージおよび応答メッセージとともに、対応するメッセージログ206、208に記録される。同様の状態転送メッセージ212を使用して、オブジェクトグループ150の1次レプリカ154から同一のオブジェクトグループのバックアップレプリカ156、158に状態を転送する。
【0045】
図7に、レプリケーションおよびトランザクション処理の統合によって、通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供する本発明の使用を示している。図7では、通信ネットワークを介して対話する2つのオブジェクト250、252を示す。本発明の戦略は、クライアントオブジェクトとサーバオブジェクトとを区別しない。各オブジェクトは、他のオブジェクトのメソッドを呼び出すことができ、他のオブジェクトからの要求を処理することができる。したがって、本発明は、分散コンピューティングのピアツーピアモデル、およびクライアント−サーバモデルに適用される。さらに、この戦略は、2つのオブジェクトのみに制限されない。任意のシーケンスおよびトポロジで対話する任意の数のオブジェクトに適用される。
【0046】
図7は、オブジェクトが故障許容のために複製されることを示している。オブジェクト250は、重なり合ったボックス254、256、258で示すように、3部複製され、オブジェクト252は、重なり合ったボックス260、262、264で示すように、3部複製される。レプリカの数は、その用途に必要な信頼性によって決定される。図7は、各オブジェクトが1つまたは複数のデータベース266、268、270、および272、274、276にアクセスできることを示している。こうしたデータベースは、よく知られているトランザクション機構(P.A.Bernstein,V.Hadzilacos and N.Goodman,Concurrency Control and Recovery in Database Systems,Addison Wesley Publishing Company,Reading,MA,1987、およびJ.Gray and A.Reuter,Transaction Processing:Concepts and Techniques,Morgan Kaufmann Publishers,San Mateo,CA,1993)を使用して、各自の故障許容を提供すると仮定される。両方の出版物を参照により本明細書に組み込む。
【0047】
ネットワーク接続型エンタープライズサーバ内で、あるオブジェクトは、2つのモードのうちの1つで動作する。
【0048】
(a)ネットワークモード:このモードでは、ある企業のコンピュータ上の1つのオブジェクトは、通信ネットワークを介して、別の企業の複数のリモートコンピュータ上の複数のオブジェクトと対話することができ、オブジェクトレプリケーションシステムによって障害から保護される。
【0049】
(b)トランザクションモード:このモードでは、ある企業のコンピュータ上の1つのオブジェクトは、その企業自体の中にあるデータベースと対話することはできるが、別の企業のリモートコンピュータ上のオブジェクトとは対話できない。オブジェクトは、トランザクション処理システムによって障害から保護される。
【0050】
これらの2つのモードは、レプリケーションおよびトランザクション処理による故障許容に対する2つの既存の戦略に相当する。これらの2つのモードの組合せは、本発明の主題であるレプリケーションとトランザクション処理との統合に相当する。
【0051】
図7では、破線は、オブジェクトがその間トランザクションモードで動作するトランザクションを示す。この例では、6つのトランザクション278、280、282、および284、286、288を示している。トランザクションの数は、その用途の必要性によって決まる。
【0052】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。各オブジェクトの初期および最終の作業290、292、294、296は、ネットワークモードである。図7に示すネットワークモードでの他の作業の一部が298、300、および302である。ネットワークモードでは、オブジェクトは、それ自体のコンピュータ、他のコンピュータ、あるいは他の企業のコンピュータにある他の複数のオブジェクトと自由に対話することができる。図6に示した他のオブジェクトとの対話の一部は、304、306、308、310、312、314、316、および318である。
【0053】
オブジェクトは、最初に290を開始したとき、またリモートオブジェクト292によって呼び出されたときにもネットワークモードになる。明示的にトランザクション320、322を開始することによって、あるいはすでにトランザクションの一部であるオブジェクトによって呼び出されることによって、オブジェクトはトランザクションモードになる。図8は、サーバオブジェクトSがトランザクションに参加する条件を列挙している。この表は、サーバオブジェクトS、およびSのメソッドを呼び出し、その結果Sでの活動を開始するクライアントオブジェクトCに言及している。オブジェクトは、そのトランザクションがコミットまたはアボートしたときにトランザクションモードからネットワークモードに戻る。
【0054】
ケース1。ここでは、クライアントオブジェクトCもサーバオブジェクトSも、トランザクションの一部ではない。ネットワーク接続型エンタープライズサーバの機構は、Cの要求をSに渡して、通常のやり方で処理を行う(400)。
【0055】
ケース2。サーバオブジェクトSは、トランザクションTsの一部であるが、クライアントオブジェクトCは、どのトランザクションにも含まれていない。ネットワーク接続型エンタープライズサーバの機構は、トランザクションTsがコミットし、終了するまでCの要求メッセージを待ち行列に入れる(402)。Sは、ケース1の場合のようにCの要求を処理する。
【0056】
ケース3。クライアントオブジェクトCは、トランザクションTcの一部であるが、サーバオブジェクトSは、どのトランザクションにも含まれていない。CおよびSが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求メッセージをSに渡し、Sは、トランザクションに参加し(404)、Cの要求を処理する。そうでない場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求を拒否する(406)。
【0057】
ケース4。クライアントオブジェクトCは、トランザクションTc内にあり、サーバオブジェクトSは、トランザクションTsの一部である。TcおよびTsが同一のトランザクションの場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求をSに渡し、Sは、Cの要求を通常のやり方で処理する(408)。TcおよびTsは異なるトランザクションであるが、CおよびSが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、トランザクションTsがコミットし、完了するまで、Cの要求を待ち行列に入れ(410)、次いで、Cの要求をSに渡して、ケース3の場合のようにCの要求を処理する。CおよびSが同一の故障許容領域内にない場合、ネットワーク接続型エンタープライズサーバの機構は、Cの要求を拒否する(412)。
【0058】
ケース5。このケースは、クライアントオブジェクトCを伴わない。サーバオブジェクトSが新しいトランザクションを開始する(414)。
【0059】
あるオブジェクトの故障許容領域は、そのオブジェクトのオブジェクトリファレンスの一部として含まれる(Object Management Group,Fault Tolerant CORBA Final Adopted Specification,OMG Platform Technical Committee Document ptc/2000−04−04,April 2000、参照により本明細書に組み込む)。したがって、メソッドが呼び出されたとき、クライアントオブジェクトとサーバオブジェクトとが、故障許容領域を知る。あるトランザクション内にあるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すとき、メソッド呼出しを含む要求メッセージは、クライアントのトランザクションの識別子を含むトランザクションコンテキストフィールドも含んでいる(Object Management Group,Transaction Service Specification v1.2(Final Draft),OMG Platform Technical Committee Document ptc/2000−11−07,January 2000、参照により本明細書に組み込む)。こうした機構は、当技術分野ではよく知られており、この機構によって、クライアントオブジェクトおよびサーバオブジェクトが、同一の故障許容領域内にあるかどうか、また同一のトランザクションに関与しているかどうかを判断することができるようにする。
【0060】
サーバオブジェクトがクライアントのローカル故障許容領域内にある場合のみ、トランザクションの一部であるクライアントオブジェクト(ケース3およびケース4)がサーバオブジェクトのメソッドを呼び出すことができる。トランザクションの一部であるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すときは、サーバオブジェクトがトランザクションの一部になる(404)必要がある。
【0061】
トランザクションの一部であるクライアントオブジェクトが、そのローカル故障許容領域内にないサーバオブジェクトのメソッドを呼び出す必要がある場合、クライアントオブジェクトは、まずその現在のトランザクションをコミットし、したがって完了する必要がある。
【0062】
トランザクションの一部であるサーバオブジェクト(ケース2およびケース4)が、どのトランザクションにも含まれていない、あるいはそのサーバのトランザクションの一部ではないクライアントオブジェクトから要求を受信した場合、サーバオブジェクトは、サーバがトランザクション内にいる間はクライアントの要求を処理することができない。代わりに、ネットワーク接続型エンタープライズサーバの機構は、サーバオブジェクトがトランザクションをコミットし、したがって完了するまでクライアントの要求を待ち行列に入れる(402、410)。
【0063】
本明細書に記載した本発明は、一部のトランザクションサービスが提供しているネストトランザクションに対処できる範囲まで容易に拡張される。あるオブジェクトが、すでにトランザクションの一部であり、新しいトランザクションを開始したときに、ネストトランザクションが形成される(J.Gray and A.Reuter,Transaction Processing:Concepts and Techniques,Morgan Kaufmann Publishers,San Mateo,CA,1993、参照により本明細書に組み込む)。内部トランザクションは、外部トランザクションに影響を与えることなくコミットまたはアボートすることはできるが、こうしたコミットは、外部トランザクションもまたコミットするまで完了しない。外部トランザクションは、すべての内部トランザクションがコミットまたはアボートしない限りコミットすることができず、また外部トランザクションのアボートによってすべての内部トランザクションがアボートする。本発明の文脈では、ネストトランザクションの複雑さのほとんどは、ネストトランザクションを提供するトランザクションサービスの標準の機構によって処理される。図10Aでは、本明細書に記載されているアルゴリズムに対する変更のみが行われ、以下で説明するように、これに代わって図13となる。
【0064】
トランザクションモードでの動作
図9に示すように、ネットワーク接続型エンタープライズサーバ内では、複製されたオブジェクトの状態を、トランザクションに参加する時点でチェックポイントする必要がある。しかし、状態全体をチェックポイントする必要はなく、既存の前のチェックポイントを、オブジェクトがチェックポイント以降に受け取った要求メッセージおよび応答メッセージのログとともに保持すれば十分である。ネットワーク接続型エンタープライズサーバの機構は、前のチェックポイントを復元し、次いで、そのチェックポイント以降のすべての要求メッセージおよび応答メッセージをメッセージログから再生することによって、トランザクションに参加する時点のオブジェクトの状態を回複する。したがって、トランザクションに参加する時点で、ネットワーク接続型エンタープライズサーバの機構は、ブロック500で、メッセージログをチェックして、ログに最近のチェックポイントが含まれているかどうかを判断する。ブロック502で最近のチェックポイントが見つからない場合、ネットワーク接続型エンタープライズサーバの機構は、ブロック504で、強制的にチェックポイントを生成し、メッセージログにチェックポイントを記録する。次いで、ブロック506で、オブジェクトはトランザクションモードに入る。そうでない場合、ブロック502で最近のチェックポイントが見つかった場合、ブロック504を飛び越す。
【0065】
あるオブジェクトがトランザクションモードのとき、ネットワーク接続型エンタープライズサーバの機構は、メッセージログに、他のオブジェクトとのすべての対話、およびローカルデータベースとのすべての対話を要求メッセージおよび応答メッセージとして記録する。この機構は、定期的に、オブジェクトの状態のチェックポイントもログに記録する。メッセージおよびチェックポイントをログに記録する機構は、当技術分野ではよく知られている。
【0066】
トランザクションのコミット
図10Aに示すように、ブロック600で、トランザクションの一部であるオブジェクトが標準の2相コミットプロトコルを使用してトランザクションをコミットしたとき、ブロック602で、オブジェクトは、ネットワークモードに戻る。トランザクション中にメッセージログに記録された要求メッセージおよび応答メッセージは、将来使用する可能性のために保持される。ブロック604で、保留待ち行列にメッセージがあるかどうかをチェックする。ブロック606で、トランザクションの完了までの間、オブジェクトのメッセージが待ち行列に入れられていると判断された場合、ネットワーク接続型エンタープライズサーバの機構は、待ち行列に入れられているこれらのメッセージをオブジェクトに渡して、ブロック606でこうしたメッセージがなくなるまで、待ち行列に入れられた順序で処理する。こうしたメッセージがなくなったら、次いで、ブロック610で、オブジェクトは、処理すべき次の要求メッセージを待つ。
【0067】
トランザクションのアボート
図10Bに示すように、ブロック612で、トランザクションの一部であるオブジェクトがトランクザクションをアボートした場合、またはトランザクションコミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図11に示すように、ブロック614で、そのメッセージログにある最新のチェックポイントを使用して、オブジェクトを再開する。ブロック616で、オブジェクトがトランザクションを開始しなかったと判断された場合、ネットワーク接続型エンタープライズサーバは、図10Aのブロック602からのアクションをたどり、オブジェクトは、ネットワークモードに戻る。オブジェクトは、トランザクションを開始した場合、ブロック618でトランザクションを再開する。
【0068】
オブジェクトがトランザクションをアボートした場合、または2相コミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図11に示す機構を使用してオブジェクトを再開する。また、ネットワーク接続型エンタープライズサーバは、こうした機構を使用して、ネットワークモードで、オブジェクトの新しいまたはバックアップレプリカを開始する。図11に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック700で、ログ内で最新のチェックポイントを探し、次いで、ブロック702で、そのチェックポイントを使用してオブジェクトの状態を復元する。次いで、そのチェックポイント以降にログに記録された要求メッセージおよび応答メッセージを再生する。この機構は、ブロック704でログから次のメッセージを抽出し、ブロック706で、そのメッセージがアボートされたトランザクションで生成されたかどうかを判断する。メッセージがアボートされたトランザクション内で生成されたものではない場合、メッセージは、オブジェクトに渡され、ブロック708で処理される。そうでない場合、メッセージは、710で破棄される。この機構では、ブロック712でログにメッセージがないと判断されるまでメッセージログからメッセージを抽出し、その場合ルーチンは終了する。
【0069】
アボートされたトランザクションの試行の結果がトランザクションから漏れる可能性はない。特に、結果が、ネットワークを介して故障許容領域外の任意のコンピュータに伝達される可能性はまったくない。トランザクションに関与し、トランザクションからの中間結果を取得したすべてのオブジェクトは、トランザクションのアボートの結果、再開される。したがってトランザクションのACID特性が維持される。
【0070】
ネットワークモードでの障害の回復
ネットワーク接続型エンタープライズサーバ内では、ネットワークモードの場合、故障許容は、オブジェクトレプリケーションによって提供される。ロールバック/アボートモデルの回復を使用するトランザクション処理とは異なり、オブジェクトレプリケーションは、ロールフォワードモデルの回復を使用する。ネットワークモードでのロールフォワード回復の重要性は、ネットワーク接続型エンタープライズサーバの機構は、通信ネットワークを介して別の企業に送信された任意のメッセージを決して撤回しないことである。
【0071】
ネットワークモードでの通常の動作中に、ネットワーク接続型エンタープライズサーバの機構がオブジェクトを定期的にチェックポイントし、そのチェックポイントをログに記録する。また、機構は、オブジェクトのメソッドを呼び出す、またオブジェクトがそれによって他のオブジェクトのメソッドを呼び出す、オブジェクトのすべての要求メッセージもログに記録する。また、対応する応答メッセージも記録する。機構は、メッセージをログに順々に記録する。メッセージのロギングおよびチェックポインティングは、当技術分野ではよく知られている。
【0072】
あるオブジェクトの1つのレプリカが障害を起こした場合、上記で説明し、図11に示したように、ネットワーク接続型エンタープライズサーバの機構は、まずブロック702で、新しいレプリカの状態をログにある最新のチェックポイントに設定し、次いで、ブロック708で、ログから後続のメッセージを再生することによって、オブジェクトの新しいレプリカを既存のレプリカと同一の状態で作成することができる。機構は、あるオブジェクトの各レプリカを個々に回復することができる。オブジェクトが決定的である(決定的にされた)と仮定すると、あるオブジェクトの各レプリカは、そのオブジェクトの他のレプリカと依然として一致したままであり、障害によって影響を受けていないレプリカ、および影響を受けたレプリカはいずれも回復する。オブジェクトの状態をチェックポイントから設定し、ログからメッセージを再生する機構は、従来技術ではよく知られている。
【0073】
ログからのメッセージを回復し処理する間、オブジェクトのレプリカは、他のオブジェクトのメソッドを呼び出す要求メッセージをさらに生成することができる。こうした、それ以上の要求メッセージは、他のオブジェクトによってすでに送信され処理されている前のメッセージの反復である可能性がある。別のオブジェクトがこうしたメッセージを2度処理する場合、正しくない結果がもたらされる可能性がある。
【0074】
図12に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック800でオブジェクトのメッセージを受信したとき、ブロック802で、メッセージをログと照会して、それがログに記録されたメッセージの複製であるかどうかを判断する。ブロック804で、そのメッセージが複製ではないと判断されると、機構は、ブロック806で、そのメッセージをログに記録し、オブジェクトに送って、ブロック808で通常の処理を行う。
【0075】
ブロック804で、そのメッセージが、ブロック804でログに記録されたメッセージの複製であると判断された場合、およびブロック810でそのメッセージが要求メッセージであると判断され、ブロック812でその応答がログに記録されていないと判断された場合、サーバオブジェクトは、ブロック808で、すでに前の非複製の要求メッセージを処理しており、したがって機構は、この複製メッセージを破棄することができる。サーバオブジェクトは、適当なときに、ブロック808で要求の応答を生成する。
【0076】
ブロック804で、そのメッセージが、ログに記録されているメッセージの複製であると判断された場合、およびブロック810でそのメッセージが要求メッセージであると判断され、ブロック812でその応答がログに記録されていると判断された場合、オブジェクトがメッセージを処理するのではなく、代わりにブロック814で、ネットワーク接続型エンタープライズサーバの機構が、ログからの応答メッセージを再送信し、ブロック816で複製の要求メッセージを破棄する。
【0077】
オブジェクトのレプリカは、障害を起こす前にトランザクションに関与しており、そのトランザクションがコミットし、データベース内にその結果を記録しているかもしれない。オブジェクトのレプリカの回復には、それが関与したトランザクションの結果を含める必要がある。トランザクション中、オブジェクトのレプリカと、データベースを含む他のオブジェクトとの間の対話は、ログに記録されるメッセージとして表される。障害のあるオブジェクトのレプリカの回復中、ネットワーク接続型エンタープライズサーバの機構は、これらの他のオブジェクト、トランザクション処理システム、またはデータベースを必要とすることなく、ログからこうしたメッセージを再生する。特に、オブジェクトに対して再生されたデータベース値は、現在のデータベース値ではなく、以前実行されたときにオブジェクトが受信したメッセージ内の値である。同様に、ネットワーク接続型エンタープライズサーバの機構は、オブジェクトによって生成されたデータベース更新メッセージを前のメッセージの複製と認識し、したがってデータベースに影響を与えない。さらに、オブジェクトの回復は、データベースの現在のロッキングに影響を与えない。
【0078】
ネットワーク接続型エンタープライズサーバの機構は、ある企業のコンピュータの1つのオブジェクトと、他の複数の企業のコンピュータの複数のオブジェクトとの間のすべての要求メッセージおよび応答メッセージをメッセージログに記録する。障害のあるオブジェクトレプリカの回復中に、ネットワーク接続型エンタープライズサーバの機構は、他の複数の企業のコンピュータの複数のオブジェクトの動作を中断させることなくその状態を設定するように、これらのメッセージを回復しているオブジェクトのレプリカに対して再生する。同様に、通信リンク、またはリモートコンピュータの障害によっていくつかのメッセージを送信し直す必要がある場合、ネットワーク接続型エンタープライズサーバの機構は、ログからこれらのメッセージを抽出する。その再送信によって、他の企業のコンピュータのオブジェクトの動作が中断することはない。
【0079】
ネストトランザクションの取扱い
図13は、ネストトランザクションを扱うのに必要な図10Aに対する変更を示す。ネストトランザクションを扱うために図13に示したネットワーク接続型エンタープライズサーバの追加アクションには、内部トランザクションを完了した後、ブロック900で、オブジェクトが依然として外部トランザクションに留まっているかどうかを判断するテストが含まれる。その場合、保留メッセージ待ち行列にあるメッセージを扱うのに必要な機構は、待ち行列内の次のメッセージが現在のトランザクションのためのものかどうかを判断する追加テストを含む。まず、ブロック902で、保留待ち行列内にメッセージがあるかどうかのチェックが行われる。次に、ブロック904で、さらにメッセージがあるかどうかのテストが行われる。ブロック906で、次のメッセージが現在のトランザクションのためのものであると判断された場合、このメッセージは、ブロック908で処理される。次のメッセージが現在のトランザクションのためのものではない場合、ブロック910で、保留待ち行列内の他のすべてのメッセージは、その待ち行列に留まっておく必要があり、そのオブジェクトは、ブロック610で、処理すべき他の要求メッセージを待つ。
【0080】
上記の説明は、多くの特定の詳細を含んでいるが、これらは、本発明の範囲を限定するものとしてではなく、本発明の現段階で好ましい実施形態の一部を単に例として示すものとして解釈すべきである。したがって、当分野の技術者には明らかなように、本発明の範囲は、他の実施形態を完全に包含し、したがって本発明の範囲は、頭記の特許請求の範囲によってのみ限定されることを理解されたい。特許請求の範囲において、単数の要素への言及は、そのように明記しない限り、「唯一無二」を意味するものではなく、「1つまたは複数」を意味するものである。当分野の技術者に知られている、上記の好ましい実施形態の要素のすべての構造的、機能的均等物は、参照により本明細書に明示的に組み込まれ、本特許請求の範囲に包含されるものである。さらに、ある装置または方法が本特許請求の範囲に包含されるには、その装置または方法が本発明が解決しようと努めるすべての問題に対処する必要はない。さらに、本開示の要素、構成要素、または方法ステップは、特許請求の範囲に明記されているかどうかに関わらず、公に提供されたものではない。本明細書のどの請求要素も、「のため手段」という句を使用して明記していない限り、米国特許法第112条第6段落の規定に基づいて解釈されるべきではない。
【図面の簡単な説明】
【図1】
故障許容領域を示す図である。
【図2】
トランザクション処理、およびメソッド呼出しを含む要求メッセージ内のトランザクションコンテキストの使用を示す図である。
【図3】
トランザクションのアボートを示す図である。
【図4】
トランザクションのコミットを示す図である。
【図5】
アクティブレプリケーションを示す図である。
【図6】
パッシブレプリケーションを示す図である。
【図7】
本発明の動作を示す図である。
【図8】
クライアントオブジェクトの要求メッセージのサーバオブジェクトの受信における5つのケースを示す表である。
【図9】
トランザクションの参加時のアクションを示す流れ図である。
【図10Aおよび10B】
それぞれトランザクションのコミット時のアクション、およびトランザクションのアボート時のアクションを示す流れ図である。
【図11】
メッセージログからのオブジェクトの回復を示す流れ図である。
【図12】
メッセージの受信時のメッセージの取扱いを示す流れ図である。
【図13】
ネストトランザクションの場合のトランザクションのコミット時のアクションを示す流れ図である。
Claims (111)
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介してコンピュータ間のトランザクション処理と、オブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができる
方法。 - 前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項1に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項1に記載の方法。
- オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作する、請求項1に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項4に記載の方法。 - 1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項4に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項5に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、または、トランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、そして、トランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項6に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項8に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項1に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが撤回されない、請求項1に記載の方法。
- 1つの企業のコンピュータ内の障害が、別の企業のコンピュータでの活動をアボートしない、請求項1に記載の方法。
- ネットワークモードではロールフォワード回復が使用され、そして、トランザクションモードではロールバック/アボート回復が使用される、請求項4に記載の方法。
- 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項13に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項14に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項15に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、前記オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項15に記載の方法。
- オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、前記トランザクションがコミットまたはアボートするまで、待ち行列に入れられている、請求項4に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項18に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクション(enclosing transaction)のメッセージ、または非トランザクション(no transaction)のメッセージは待ち行列に入れられたままである、請求項19に記載の方法。
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、そして、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作する、
方法。 - 前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項1に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項1に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項21に記載の方法。 - 1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項21に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項24に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項25に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項27に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項21に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項21に記載の方法。
- 1つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項21に記載の方法。
- ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック/アボート回復が使用される、
請求項21に記載の方法。 - 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項32に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項33に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項34に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項34に記載の方法。
- オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項21に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項37に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項38に記載の方法。
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
方法。 - 前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項40に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項40に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項40に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項40に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項43に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項45に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項40に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項40に記載の方法。
- 1つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項40に記載の方法。
- ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック/アボート回復が使用される、
請求項40に記載の方法。 - 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項50に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項51に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項52に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項52に記載の方法。
- オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項40に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項55に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項56に記載の方法。
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
方法。 - 前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項58に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項58に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項58に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項61に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項58に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項63に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項58に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項58に記載の方法。
- 1つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項58に記載の方法。
- ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック/アボート回復が使用される、
請求項58に記載の方法。 - 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項68に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項69に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項70に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項70に記載の方法。
- オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項58に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項73に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項74に記載の方法。
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック/アボート回復が使用される、
方法。 - 前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項76に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項76に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項76に記載の方法。 - 1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項76に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項79に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、または、トランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、そして、トランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項80に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項82に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項76に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項76に記載の方法。
- 1つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項76に記載の方法。
- 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項76に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項87に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項88に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、前記オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項88に記載の方法。
- オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで、待ち行列に入れられている、請求項76に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項91に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項92に記載の方法。
- 通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも1つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、そして、
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、
方法。 - 前記トランザクション処理がローカルデータおよび処理を障害から保護する、請求項94に記載の方法。
- 前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項94に記載の方法。
- 1つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項94に記載の方法。 - 1つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードで、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項94に記載の方法。 - オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項97に記載の方法。 - オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項98に記載の方法。 - オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項100に記載の方法。
- 前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項94に記載の方法。
- 前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項94に記載の方法。
- 1つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項94に記載の方法。
- ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック/アボート回復が使用される、
請求項94に記載の方法。 - 前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項105に記載の方法。 - 1つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項106に記載の方法。
- オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、2度目には処理されない、請求項107に記載の方法。
- ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項106に記載の方法。
- オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項94に記載の方法。
- 現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項110に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24407700P | 2000-10-27 | 2000-10-27 | |
PCT/US2001/051371 WO2002041149A2 (en) | 2000-10-27 | 2001-10-26 | Fault tolerance for computer programs that operate over a communication network |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005506587A true JP2005506587A (ja) | 2005-03-03 |
Family
ID=22921276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002543293A Pending JP2005506587A (ja) | 2000-10-27 | 2001-10-26 | 通信ネットワークを介して動作するコンピュータプログラムの故障許容 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6922792B2 (ja) |
EP (1) | EP1332433B1 (ja) |
JP (1) | JP2005506587A (ja) |
AT (1) | ATE349041T1 (ja) |
AU (1) | AU2002239791A1 (ja) |
DE (1) | DE60125400D1 (ja) |
WO (1) | WO2002041149A2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE349041T1 (de) * | 2000-10-27 | 2007-01-15 | Availigent Inc | Fehlertoleranz für über ein kommunikationsnetzwerk betriebene rechnerprogramme |
US7325049B2 (en) * | 2000-12-29 | 2008-01-29 | Intel Corporation | Alert management messaging |
US7346632B2 (en) * | 2001-02-22 | 2008-03-18 | International Business Machines Corporation | Mechanism for executing nested transactions in an execution environment supporting flat transactions only |
US7047441B1 (en) * | 2001-09-04 | 2006-05-16 | Microsoft Corporation | Recovery guarantees for general multi-tier applications |
WO2003083614A2 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
EP1543420B1 (en) * | 2002-07-29 | 2012-04-04 | Open Invention Network LLC | Consistent message ordering for semi-active and passive replication |
US20040123184A1 (en) * | 2002-12-19 | 2004-06-24 | Westberg Andrew M. | System and method of facilitating communication |
US7584474B2 (en) * | 2003-02-25 | 2009-09-01 | Bea Systems, Inc. | Systems and methods for transaction chaining |
DE10309815A1 (de) * | 2003-03-05 | 2004-09-23 | Francotyp-Postalia Ag & Co. Kg | Verfahren zum Datenaustausch zwischen Datenverarbeitungseinheiten |
US7624112B2 (en) * | 2003-04-03 | 2009-11-24 | Oracle International Corporation | Asynchronously storing transaction information from memory to a persistent storage |
US7219201B2 (en) * | 2003-09-17 | 2007-05-15 | Hitachi, Ltd. | Remote storage disk control device and method for controlling the same |
US7287078B2 (en) * | 2003-10-31 | 2007-10-23 | Hewlett-Packard Development Company, L.P. | Restoration of lost peer-to-peer offline transaction records |
GB0426847D0 (en) * | 2004-12-08 | 2005-01-12 | Ibm | Method and system of committing operations of a synchronised transaction |
JP4248510B2 (ja) * | 2005-03-24 | 2009-04-02 | 株式会社東芝 | 計算機システム、ディスク装置およびデータ更新制御方法 |
US7949551B2 (en) * | 2005-04-06 | 2011-05-24 | International Business Machines Corporation | Processing of compensation scopes in workflow management systems |
US8103620B2 (en) * | 2006-03-17 | 2012-01-24 | Sap Aktiengeselleschaft | Method and apparatus for asynchronous log message processing |
GB0619644D0 (en) * | 2006-10-05 | 2006-11-15 | Ibm | Data processing system and method of handling requests |
US7610510B2 (en) * | 2007-02-16 | 2009-10-27 | Symantec Corporation | Method and apparatus for transactional fault tolerance in a client-server system |
US20080243865A1 (en) * | 2007-03-28 | 2008-10-02 | Oracle International Corporation | Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems |
EP3198426B1 (en) | 2014-09-26 | 2023-08-30 | Oracle International Corporation | System and method for transaction recovery in a multitenant application server environment |
US10339127B2 (en) | 2016-01-28 | 2019-07-02 | Oracle International Corporation | Guaranteed commit outcome in a distributed transaction processing system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819159A (en) * | 1986-08-29 | 1989-04-04 | Tolerant Systems, Inc. | Distributed multiprocess transaction processing system and method |
US5555404A (en) * | 1992-03-17 | 1996-09-10 | Telenor As | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas |
GB2273183A (en) * | 1992-12-04 | 1994-06-08 | Ibm | Replicated distributed databases. |
GB2276737A (en) * | 1993-03-30 | 1994-10-05 | Ibm | Fault-tolerant transaction-oriented data processing |
US6052695A (en) * | 1995-02-28 | 2000-04-18 | Ntt Data Communications Systems Corporation | Accurate completion of transaction in cooperative type distributed system and recovery procedure for same |
US6014673A (en) * | 1996-12-05 | 2000-01-11 | Hewlett-Packard Company | Simultaneous use of database and durable store in work flow and process flow systems |
US6574750B1 (en) * | 2000-01-06 | 2003-06-03 | Oracle Corporation | Preserving consistency of passively-replicated non-deterministic objects |
US7065538B2 (en) * | 2000-02-11 | 2006-06-20 | Quest Software, Inc. | System and method for reconciling transactions between a replication system and a recovered database |
US6694447B1 (en) * | 2000-09-29 | 2004-02-17 | Sun Microsystems, Inc. | Apparatus and method for increasing application availability during a disaster fail-back |
ATE349041T1 (de) * | 2000-10-27 | 2007-01-15 | Availigent Inc | Fehlertoleranz für über ein kommunikationsnetzwerk betriebene rechnerprogramme |
-
2001
- 2001-10-26 AT AT01987589T patent/ATE349041T1/de not_active IP Right Cessation
- 2001-10-26 DE DE60125400T patent/DE60125400D1/de not_active Expired - Lifetime
- 2001-10-26 EP EP01987589A patent/EP1332433B1/en not_active Expired - Lifetime
- 2001-10-26 WO PCT/US2001/051371 patent/WO2002041149A2/en active IP Right Grant
- 2001-10-26 JP JP2002543293A patent/JP2005506587A/ja active Pending
- 2001-10-26 AU AU2002239791A patent/AU2002239791A1/en not_active Abandoned
- 2001-10-26 US US10/053,240 patent/US6922792B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
ATE349041T1 (de) | 2007-01-15 |
AU2002239791A1 (en) | 2002-05-27 |
WO2002041149A8 (en) | 2003-06-12 |
WO2002041149A2 (en) | 2002-05-23 |
EP1332433B1 (en) | 2006-12-20 |
EP1332433A2 (en) | 2003-08-06 |
DE60125400D1 (de) | 2007-02-01 |
US20020099973A1 (en) | 2002-07-25 |
US6922792B2 (en) | 2005-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005506587A (ja) | 通信ネットワークを介して動作するコンピュータプログラムの故障許容 | |
US7743036B2 (en) | High performance support for XA protocols in a clustered shared database | |
US7293192B2 (en) | System and method for failover | |
US7392421B1 (en) | Framework for managing clustering and replication | |
JP3268534B2 (ja) | 保護された資源の同期点管理を行うコンピュータ・システム | |
US6266698B1 (en) | Logging of transaction branch information for implementing presumed nothing and other protocols | |
JP3293839B2 (ja) | 作業ユニットに合わせてコミット範囲を調整するコンピュータ・システム | |
US20020035590A1 (en) | Guaranteed end-to-end transaction execution in a client/server environment | |
US20040025169A1 (en) | Systems and methods for maintaining transactional persistence | |
US20050165883A1 (en) | Symbiotic computing system and method of operation therefor | |
JPH04229358A (ja) | 同期点回復手段を有するコンピュータ装置 | |
JPH04229335A (ja) | コミット手順の最適化方法 | |
JPH04229334A (ja) | コンピュータ・システム及びアプリケーションプログラム実行方法 | |
Speirs et al. | Using passive replicates in delta-4 to provide dependable distributed computing | |
WO2006028689A2 (en) | System and method for providing increased database fault tolerance | |
CA2395282C (en) | Preserving consistency of passively-replicated non-deterministic objects | |
Barga et al. | Recovery guarantees for general multi-tier applications | |
US8095826B1 (en) | Method and apparatus for providing in-memory checkpoint services within a distributed transaction | |
Zhao et al. | Unification of transactions and replication in three-tier architectures based on CORBA | |
Barga et al. | Persistent applications via automatic recovery | |
JPH10207849A (ja) | 分散システムにおける高信頼化と負荷分散方法 | |
Pleisch | Fault-tolerant and transactional mobile agent execution | |
Kolltveit et al. | Techniques for achieving exactly-once execution semantics and high availability for multi-tier applications | |
Narasimhan et al. | Lessons learned in building a fault-tolerant CORBA system | |
Kolltveit et al. | Preventing orphan requests by integrating replication and transactions |