JP3574030B2 - コンピューティング装置、操作方法およびプログラム記憶装置 - Google Patents
コンピューティング装置、操作方法およびプログラム記憶装置 Download PDFInfo
- Publication number
- JP3574030B2 JP3574030B2 JP2000039938A JP2000039938A JP3574030B2 JP 3574030 B2 JP3574030 B2 JP 3574030B2 JP 2000039938 A JP2000039938 A JP 2000039938A JP 2000039938 A JP2000039938 A JP 2000039938A JP 3574030 B2 JP3574030 B2 JP 3574030B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- server
- request
- client
- response
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、1つのコンピューティング装置(「クライアント」)が別のコンピューティング装置(「サーバ」)にクライアントの作業の一部を実行するように要求する、クライアント/サーバ(「分散」としても知られる)コンピューティングの分野に関する。クライアントおよびサーバは両方とも、同一の物理的コンピューティング装置に配置することもできる。
【0002】
【従来の技術】
クライアント/サーバ・コンピューティングは、情報技術の世界において過去数年間でますます重要になってきた。この種の分散コンピューティングは、1つのマシンがその作業の一部を、例えばその作業を実行するのにより適している別のマシンに委ねることを可能にする。例えば、サーバは、大量のデータの記憶を管理するデータベース・プログラムを実行する高能力コンピュータとすることができる一方、クライアントは単に、そのローカル・プログラムの1つで使用するためにデータベースからの情報を要求するデスクトップ・パーソナル・コンピュータ(PC)である。
【0003】
クライアント/サーバ・コンピューティングの利点は、クライアントおよびサーバを異なる(異種)「プラットフォーム」に配置することを可能にする、オブジェクト指向プログラミング(OOP)と呼ばれる周知のコンピュータ・プログラミング技術の使用によってさらに増強されてきた。プラットフォームとは、マシンがその作業を行うために使用する特定のハードウェア/ソフトウェア/オペレーティング・システム/通信プロトコルの組合せである。OOPは、クライアント・アプリケーション・プログラムの作業要求がどのようにサーバ・アプリケーション・プログラムによって交信され受け入れられるかを気にすることなく、クライアント・アプリケーション・プログラムおよびサーバ・アプリケーション・プログラムがそれ自体のプラットフォームで動作することを可能にする。同様にサーバ・アプリケーションは、OOPシステムがどのようにサーバ・アプリケーションの処理結果を受け取り、変換し、要求側クライアント・アプリケーションに返送するかを気にする必要がない。
【0004】
OOP技術が異種クライアント/サーバ・システムとどのように統合されてきたかの詳細は、米国特許第5440744号および欧州特許公開出願EP 0 677943 A2号に説明されている。これら2件の刊行物を参照によって本明細書に組み込む。しかし、本発明の環境の背景理解のために、基本的アーキテクチャの1例を以下で取り上げる。
【0005】
図1に示すように、クライアント・コンピュータ10(例えばIBM OS/2オペレーティング・システムを搭載したパーソナル・コンピュータとすることができる)は、そのオペレーティング・システム上で実行するアプリケーション・プログラム40を有する(「IBM」および「OS/2」はInternational Business Machines社の商標)。アプリケーション・プログラム40は定期的に、サーバ・コンピュータ20上で作業を実行するように、かつ/または後でアプリケーション・プログラム40で使用するためにデータをサーバ20から返送するように要求する。サーバ・コンピュータ20は、例えばIBMのMVSオペレーティング・システム上で実行する高性能メインフレーム・コンピュータとすることができる(「MVS」もIBM社の商標)。本発明の場合、サーバによって実行される通信サービスの要求が、第1アプリケーション・プログラム40とのユーザの対話によって引き起こされるか、それともアプリケーション・プログラム40がユーザの対話に関係なく動作して、プログラムの実行中に自動的に要求を行うかは関係ない。
【0006】
クライアント・コンピュータ10がサーバ・コンピュータ20のサービスを要求したいときに、第1アプリケーション・プログラム40は、必要とするサービスについて第1論理手段50に通知する。これは、例えば、第1論理手段に遠隔手順の名前を入出力パラメータのリストと共に送ることによって、実行することができる。次いで第1論理手段50は、記憶装置60に格納された利用可能な通信サービスの定義を参照して、第2コンピュータ20との必要な通信を確立するタスクを処理する。可能なサービスはすべて、オブジェクト・クラス70のコヒーシブ・フレームワークとして定義されており、これらのクラスは単一オブジェクト・クラスから導出される。このようにしてサービスを定義すると、性能および再使用可能性の点で多数の利点が得られる。
【0007】
サーバ20との必要な通信を確立するために、第1論理手段50はフレームワーク内のどのオブジェクト・クラスを使用する必要があるかを判定し、次いで、サーバにおいて、そのオブジェクトのインスタンス、つまりそのオブジェクトにそのメソッドの1つを呼び出させるためにそのオブジェクトに送信されるメッセージを形成する。これにより、接続手段80を介してサーバ・コンピュータ20との接続の確立が生じ、続いて要求が第2論理手段90に送信される。
【0008】
次いで第2論理手段90が要求を、サーバ・コンピュータ20で実行している第2アプリケーション・プログラム100(以下、サービス・アプリケーションという)に渡すので、サービス・アプリケーション100は、データ検索手順を実行するなど、その要求によって要求される特定のタスクを実行することができる。このタスクが完了すると、サービス・アプリケーションは、結果を第1コンピュータ10に返送する必要があるかもしれない。要求されたタスクの実行中、および結果が第1コンピュータ10に返送される際、サーバ・アプリケーション100は第2論理手段90と対話する。第2論理手段90はオブジェクトのインスタンスを決定し、サーバ・アプリケーション100によって要求されたときにこれらのオブジェクトの適切なメソッドを呼び出し、記憶装置110に格納されたオブジェクト・クラスのコヒーシブ・フレームワークからオブジェクト・インスタンスが形成される。
【0009】
上記の技術を使用すると、クライアント・アプリケーション・プログラム40は通信アーキテクチャにさらされない。さらに、サービス・アプリケーション100が、その環境の標準機構を介して呼び出される。つまり、それは遠隔的に呼び出されていることを認識しない。
【0010】
オブジェクト管理グループ(OMG)は、図1に示すような分散オブジェクトを持つ異種プラットフォームでのクライアント/サーバ・コンピューティングの様々な側面に関与する組織の国際的コンソーシアムである。OMGは、クライアント・コンピュータ(例えば10)がサーバ・マシン(例えば20)と(OOPの形で)通信するための標準を規定し発行した。これらの標準の一環として、クライアント・マシンとサーバ・マシンの間にオブジェクト指向ブリッジを提供するオブジェクト要求ブローカ(CORBAつまり共通オブジェクト要求ブローカ・アーキテクチャと呼ばれる)が定義された。ORBは、オブジェクト指向実装の詳細からクライアント・アプリケーションおよびサーバ・アプリケーションを切り離し、第1および第2論理手段50、90ならびに接続手段80の作業の少なくとも一部分を実行する。
【0011】
CORBAソフトウェア構造の一部として、OMGは「トランザクション」に関連する標準を規定した。これらの標準は、OTSつまりオブジェクト・トランザクション・サービスとして知られる。例えば、OMG文書94.8.4、CORBAオブジェクト・トランザクション・サービス仕様1.0を参照されたい。コンピュータによって実装されるトランザクション処理システムは、いくつかの産業において重要なビジネス・タスクに使用される。トランザクションは、完全に終了しなければならないか、または動作せずに完全にパージしなければならない単一作業単位を定義する。例えば、銀行の現金自動預け払い機で顧客が現金を引き出そうとする場合、現金を払い出し、機械内にある現金の残高を差し引き、顧客の銀行預金残高を差し引く動作が全部行われるか、またはそれらが全く行われないかのいずれかでなければならない。下位動作の1つが失敗すると、記録と実際のオカレンスの不一致が生じる。
【0012】
分散トランザクション処理は、複数の物理位置または論理位置における資源に影響するトランザクションを伴う。上記の例では、トランザクションは、局所現金自動預け払い機で管理される資源に影響するだけでなく、銀行のメイン・コンピュータによって管理される銀行預金残高にも影響する。そのようなトランザクションは、サーバによって処理される一連のクライアント要求により1つの特定のサーバ・コンピュータ(例えば20)と通信する1つの特定のクライアント・コンピュータ(例えば10)を伴う。OMGのOTSは、これらの分散トランザクションを調整する責任がある。
【0013】
クライアント・プロセスで実行するアプリケーションは、複数の様々なサーバの呼出しを含むトランザクションを始動し、それぞれのサーバはサーバ・プロセスを起動して、トランザクションに含まれる命令に従ってそのローカル・データを変更する。トランザクションを実行する(したがってすべてのサーバがそれらのローカル・データの変更を終了する)か、またはトランザクションを打ち切る(したがってすべてのサーバがトランザクション中に行われたそれらのローカル・データの変更を「撤回」または無視する)かのいずれかによって、トランザクションは終了する。トランザクション中にサーバと通信する(例えばそれらにトランザクションにおけるそれらの役割を実行するかまたは打ち切るように命令する)ために、含まれるプロセスの1つはトランザクションのための状態データを維持しなければならない。OTS標準によると、これは一連のオブジェクトをセットアップするプロセスを含み、そのうちの1つは、様々なサーバに関してトランザクションを調整するコーディネータ・オブジェクトである。
【0014】
このコーディネータ・オブジェクトの主な目的は、どのサーバ・オブジェクトがトランザクションに関与しているかを追跡し続けて、トランザクションが終了したときに、トランザクションに関与する各サーバ・オブジェクトに、1回の統一された努力で、そのサーバ・オブジェクトに関連するローカル・データベースに局所的に行われた変更をコミットするように命令することができるようにすることである。これにより、どのサーバ・オブジェクトも、同一トランザクションに関与する他のサーバ・オブジェクトなしでは、データ変更を最終決定しないことが保証される。したがって、トランザクションに参加する各サーバ・オブジェクトは最初にコーディネータ・オブジェクトに登録して、コーディネータ・オブジェクトがサーバ・オブジェクトの存在、トランザクションへの参加の希望、およびトランザクションを終了する時が来たときにサーバ・オブジェクトがどこにあるか(例えばサーバ・オブジェクトがどのサーバ・マシンに常駐しているか)が分かるようにしておかなければならない(コーディネータ・オブジェクトはすべてのサーバ・オブジェクトにそれぞれのローカル・データの変更を最終決定するように命令する)。
【0015】
データを更新する責任のあるサーバ・オブジェクト(以下、資源オブジェクトという)は、別のサーバ・オブジェクト(またはトランザクションを開始した元のクライアント・オブジェクト)が資源オブジェクトに何らかの作業をするように資源オブジェクトに要求を送ったときに、トランザクションに関与するようになる。この後者の要求は、要求が特定のトランザクションの一部であることを資源オブジェクトに知らせる、トランザクション・コンテキストと呼ばれる何らかの情報を含む。CORBAバージョン2では、トランザクション・コンテキストは、ローカルCosTransactions::Coordinatorオブジェクトget_txcontextメソッドによって構築される。資源オブジェクトはそれが特定のトランザクションに関与するようになることを認識すると、コーディネータ・オブジェクトに登録要求を行う。
【0016】
資源オブジェクトが、コーディネータ・オブジェクトとは異なるオペレーティング・システム・プロセスに配置されている場合、資源オブジェクト(223または224)と同じオペレーティング・システム・プロセスに配置された下位コーディネータ・オブジェクト(図2の222)を使用すると便利であることが明らかになった。その場合、主コーディネータ・オブジェクトを「上位コーディネータ・オブジェクト」211と呼ぶ。資源オブジェクト223のトランザクションへの登録中に、下位コーディネータ222は資源オブジェクト223を収容しているサーバ・マシン22内で局所的にセットアップされ、資源オブジェクト223は登録要求を行うときに、この下位コーディネータ・オブジェクト222と直接やり取りする。(ここでは用語「サーバ・マシン」を使用しているが、分散サーバ・オブジェクトを実際には、同じサーバ・マシンであるがそのサーバ・マシン上で実行している別のオペレーティング・システム・プロセスに配置することもできることを示すために、用語「サーバ・プロセス」を使用することもできることに留意されたい。したがって、以下では、用語「サーバ」は、両方の用語を指すのに使用する。)次に下位コーディネータ222はそれ自体を、上位コーディネータ・オブジェクト211(あたかも資源オブジェクトであるかのように、おそらく別のサーバ・マシン上の別のプロセスに配置されている)に登録する。
【0017】
下位コーディネータ・オブジェクト222はこのようにして、資源オブジェクトを収容しているサーバ内におけるトランザクションの存在を表現する。上位コーディネータ・オブジェクト211と直接やり取りする代わりに、資源オブジェクト223、224は最初にそれらのローカル下位コーディネータ・オブジェクト222とやり取りし、次にこれが上位コーディネータ・オブジェクトとやり取りする。これにより、オペレーティング・システム・プロセス間の相互呼出し回数が大幅に減少する。
【0018】
トランザクションはしばしば、潜在的に異なるサーバ・マシン上でそれぞれ実行するいくつかの異なるプロセスを含む。例えば、サーバ・プロセス21(これは上位コーディネータ211を含む)は、分散トランザクションに参加する3つの異なるプロセスを呼び出すことがあり、したがってそのような各プロセスは結果的に、そのプロセスのトランザクションを局所的に調整するために下位コーディネータを形成する。トランザクションの最後に、上位コーディネータは従来の2段階コミット・プロトコルを使用して、3つのプロセスのそれぞれがその変更を、一括した「オール・オア・ナッシング」方式で(つまり、それらが全部それぞれの変更を確定するか、それともそれらが全部それぞれの変更を取り消す)、最終決定することを確実にする。2段階コミット・プロトコルは従来、3つの下位コーディネータのそれぞれにプリペア・コール(prepare call)を送り、次いで、それらがプリペア・コールに応答してすべてコミットすることをボーティングしたと仮定して、3つの下位コーディネータのそれぞれにコミット・コールを送ることを含む。したがって、これは上位コーディネータ211による6つのプロセス間コールの送り出しを含む。
【0019】
2段階コミットにおけるプロセス間コールの総数を減少するためにしばしば使用される2段階コミット・プロトコルの周知の最適化は、「最終エージェントの最適化」として知られる(例えば、GrayとReuter共著「Transaction Processing:Processes and Techniques」(Morgan Kaufman Publishers社刊)1992年9月、12.5.3節を参照のこと)。この最適化を要約すると、トランザクション・ルート・コーディネータ(例えば上位コーディネータ211)がトランザクションに含まれるN個の資源(例えば3つの下位コーディネータを表す)を有する場合、それらのうちN−1個を準備する(つまり、N−1個にプリペア・フローを送る)ということである。この時点ですべての資源がコミットすることをボーティングすると(通常のケース)、トランザクションの結果は最終資源のプリペア・ボーティングによって決まる。したがって、最終資源のプリペア・フローおよびコミット・フローを結合することができ、この最適化された最終フローは、resource::commit_one_phase法によってCORBA CosTransactions仕様で提供される。この議論では、下位コーディネータ、それらの資源、およびその他の資源を同様に取り扱うことができ、これらは総称して関連「エージェント」と呼ばれる。最終エージェントの最適化により、2段階コミットの単純なケースでは、コーディネータと最終エージェントとの間のメッセージ・フローは半減する。
【0020】
2段階コミット・プロトコルのさらによく知られている最適化は、「線形コミット」最適化と呼ばれる(これも上記のGrayらの章節に記載されている)。線形コミット最適化は、分散トランザクションに関係するシステムを線形連鎖状に配列することができれば、この連鎖に最終エージェント最適化を繰返し使用することができるという概念に基づいている。これは、分散トランザクションの完了に参加している分散システム間で受け渡さなければならないメッセージの総数をほぼ半減する。
【0021】
【発明が解決しようとする課題】
しかし、これらの最適化はトランザクション処理分野ではよく知られているが、クライアント/サーバ分散トランザクション処理において、どのようにしてコーディネータを自動的に確実にそのような線形連鎖状に配列するかがこれまで不明であり、従来技術におけるこの欠如が、本発明者が以下で記述する本発明を考案するに至る刺激となった。
【0022】
【課題を解決するための手段】
第1の態様によると、本発明は、クライアント/サーバ・トランザクション処理システム用のコンピューティング装置であって、サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するための送信手段と、トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るための受信手段と、受信手段が受け取る応答に基づいて線形連鎖の最後の現在の装置を追跡するための維持手段とを含み、送信手段によってトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持手段に基づいて線形連鎖の最後の現在の装置の標識である、コンピューティング装置を提供する。
【0023】
第2の態様によれば、本発明は、第1の態様の装置を操作する方法を提供する。
【0024】
第3の態様によれば、本発明は、第2の態様の方法のステップを実行するためにマシンによって実行可能な命令のプログラムを有形に実施するマシン可読プログラム記憶装置を提供する。
【0025】
したがって、本発明は、分散トランザクションのコーディネータを自動的かつ確実に線形連鎖状に並べることができ、したがって線形コミット最適化の使用を可能にする。そうすると線形コミット最適化を使用することができるので、2段階コミット・プロセス中のコーディネータ間メッセージの流れの数を半減することができる。現在および将来のオブジェクト指向電子取引分野は分散トランザクションを実質的に利用するので(トランザクションに必要なデータベースが様々なサーバに保持されるため)、本発明は、システム間トラヒックをかなり削減するという意味で、そのようなシステムにとって事実上の確実な利益になるであろう。
【0026】
【発明の実施の形態】
本発明の好適な実施形態がいかに作用するかを例示するために、今、図3に関して、シナリオの例を提示する。このシナリオ例は、分散トランザクションがどのように実行されるかを示すかなり典型的な例として選択した。
【0027】
この例では、4つのシステムで動作する分散トランザクションを取り上げる。(ここで、システムはおそらくそれ自体の専用マシン上で動作する離散オペレーティング・システム・プロセスと認識することができ(各マシンはインターネットなどのネットワークを介して他のマシンと接続している)、あるいはこの例と矛盾することなくすべてのプロセスが同一物理マシン上で実行していることもあり得る。)
【0028】
クライアント・アプリケーション31はシステムA上にあり、ユーザのトランザクション作業単位を実行している間、クライアント・アプリケーション31は、3つのサーバ・システムすなわちサーバB、サーバC、およびサーバDをホストとするサーバ・アプリケーションを利用する。
【0029】
ユーザのトランザクションが関係する各サーバ・システムについて、分散トランザクションの一部として回復可能資源にアクセスが行われるが、このためにはサーバ・システムがトランザクションおよびトランザクションの分散2段階コミット・プロセスに関与するようになることが必要である。トランザクションが展開するシナリオについて、以下で説明する。
【0030】
トランザクションの展開中、本発明の好適な実施形態では、分散トランザクション・ツリーの「新しい」部分の展開は常に、構築中の現在のトランザクション「連鎖」の「最後」に配置されるようになることが必要である。この結果、トランザクション・ツリーが線形になり(関係するコーディネータの点から見て)、したがって「線形コミット」最適化の潜在的可能性が改善される。
【0031】
ユーザは、クライアント・アプリケーション31「CLIENT APP」をシステム「A」で実行し、このアプリケーションがユーザのためにトランザクション作業単位を実行している間に、アプリケーション・コードは、システム「B」に位置するサーバ・アプリケーション「APP SERVER B」に呼出しを行う(図3の流れ「1」)。
【0032】
この呼出しが行われると、システムBのトランザクション・サービスは、アプリケーションの代わりにシステムB(宛先システム)でトランザクションを確立する。これは、アプリケーションの要求と一緒に送られる「トランザクション・コンテキスト」を用いて行われる。トランザクション・コンテキストのこの確立は、トランザクション・オブジェクトを目標とするすべてのアプリケーションの流れ(例えば我々のシナリオでは流れ「1」、「5」、および「8」)を受信すると、宛先システムで同様に行われる。
【0033】
サーバ・アプリケーション・プログラムB32を実行している間、資源「ResB1」33はアプリケーション32によってローカル・コーディネータ「CoordB」34に登録される。「CoordB」34は、分散トランザクションの完了に関与することがまだ登録されていないので、現在確立されているトランザクション・コンテキストに存在したコーディネータ参照(「CoordA」35)にそれ自身のregister_resource呼出しを行う(流れ「2」)。したがって、「CoordB」34は今、「CoordA」35によって調整される分散トランザクションにリンクされる。したがって、register_resourceの流れの処理を終了した「CoordA」35は戻り、制御は発呼側システム(「B」)に返される(流れ「3」)。
【0034】
処理はシステムBで続き、サーバ・アプリケーションB32の一部によって別の資源36(「ResB2」)がトランザクションに登録される。「CoordB」34はすでにトランザクションに関与しているので、新しいregister_resourceの流れ(「2」、「3」などの)は不要である。
【0035】
ユーザのサーバ作業の処理がシステム「B」で終了し、「B」は制御をシステムAに返す(流れ「4」)。この流れに便乗して、返却側システム(システムB)がこのとき関与するコーディネータの分散トランザクション連鎖の「最後」にあると考えるコーディネータへの参照−この例の場合には「CoordB」の参照−が送られ、この参照は返却側「トランザクション・コンテキスト」に格納される。
【0036】
トランザクションの次のステップとして、クライアント・アプリケーション・プログラム31はシステムCの「APP SERVER C37」を呼び出す(流れ「5」)。従来技術では、システムAはシステムAのコーディネータ35に参照を渡す(この参照は、流れ「5」に便乗するトランザクション・コンテキストに入れて送られる)ので、システムCは(システムCにとって局所的な)ローカル資源をトランザクションに登録するときに、システムCがシステムAの主コーディネータ35に登録要求を行わなければならないことを知る。しかし、本発明の好適な実施形態では、このシナリオ(実施形態)の流れ「5」で、システムAは「CoordA」35が現在「連鎖」の最後にあると考えるコーディネータ(つまり「CoordB」34)に参照を渡す。
【0037】
したがって、サーバ「C」のトランザクション・サービスがトランザクションに関与するようになるとき、(従来技術の場合のように)「CoordA」に接触して分散トランザクションに参加するようになる(したがって、V字型のトランザクション・ツリーを形成する)のではなく、「CoordB」34に接触して線形連鎖を形成し、これは線形コミット最適化技術により2段階コミットを使用してより効率的にコミットすることができる。
【0038】
したがって、CoordB34がシステムAからのトランザクション・コンテキストでシステムCに渡されるコーディネータ参照であったので、「CoordC」38は(システムCのローカル資源ResC1 39をトランザクションに登録するために)register_resourceの流れを「CoordB」34に流す(流れ「6」)。この流れは、流れ「2」と同様であり、同じ装置を使用する。「CoordB」34は戻り(返流「7」)、処理はシステムCで続行する。
【0039】
このとき、関与システムの連鎖「A」→「B」→「C」ができており、制御(つまり、移動中のアプリケーションのスレッド)は現在ノード「C」にある。トランザクションの現在実行中/稼働中の部分のトランザクション・サービスが連鎖における現在の「最後」のコーディネータを知り、この「最後」のコーディネータの参照をアウトバウンド・トランザクションの流れと共に流し、この(または更新された)参照をどの応答でも返す限り、トランザクションは常に連鎖内の「最後」のシステム(システム間register_resourceを介して関与した)を追跡し、その後の新しいシステム間トランザクションの流れでこの参照を送る(かつそれを上述の通り更新する)ことにより、分散トランザクション・ツリーは、望む通りのコーディネータの線形連鎖を形成する。
【0040】
このシナリオでは「CoordC」38は現在の連鎖の最後にあるので、トランザクション作業がシステム「D」のサーバ・アプリケーションD41に送られる(流れ「8」)と、CoordCの参照がこの流れのトランザクション・コンテキストに入れて渡される。「CoordD」40は、流れ「9」および返流「10」により現在の「最後」のコーディネータ(CoordC38)へのregister_resourceの流れ(そのローカル資源ResD1 42を登録するため)を介してトランザクションに関与するようになる。我々のシナリオでは、作業はシステムCからDに流れ(流れ「8」)、システム「C」に戻り(返流「11」)、次いで最終的にシステムAに戻る(流れ「12」)。したがって、コーディネータは、望む通りに線形連鎖状にA→B→C→Dと並ぶ。
【0041】
別のシナリオでは、システム「D」は、システム「A」、「B」、および「C」のいずれかから流れる作業のため、トランザクションに関与するようになることがあり、これらの3つのシステムのいずれかが線形連鎖「A」→「B」→「C」の分散トランザクション・ツリーに関与するようになると、「A」、「B」、または「C」のいずれかからDへのトランザクションの流れは、トランザクション・コンテキストに便乗して「CoordC」38への参照を渡す。
【0042】
次に、本発明の好適な実施形態によるプロセスに従って実行されるステップを、図4の流れ図を参照しながら説明する。例示のために、図3のプロセスCを、図4の流れ図に関して説明する代表的プロセスとする。
【0043】
ステップ401で、プロセスCのサーバ・アプリケーションC37はクライアント・アプリケーション31から、プロセスCが分散トランザクションに関与するようになることを要求するトランザクション要求(図3の流れ5)を受け取る。受け取ったトランザクション要求の伝搬コンテキストには、プロセスCがそのローカル資源ResC1 39をトランザクションに登録するために登録要求を送出するときに、プロセスCがこの登録要求をプロセスBのCoordB34に送らなければならないという指示が含まれる(プロセスBが線形連鎖の最後のコーディネータであったことを、プロセスBが前にプロセスAに知らせたため)。
【0044】
ステップ402で、プロセスCは受け取ったトランザクション要求の伝搬コンテキストを調べ、プロセスCが登録要求を送る宛先とすべきプロセスの識別子を決定する。前段で説明した通り、図3のこのシナリオでは、登録要求を送るべき宛先プロセスはプロセスBである。したがって、ステップ403で、プロセスCは登録要求をプロセスBのCoordB34に送る(流れ6)。このとき、プロセスCのCoordC38は登録要求をプロセスBに送ったので、プロセスCのCoordCが今や、プロセスBのCoordBに代わってトランザクションの登録コーディネータの線形連鎖における最後のコーディネータとなる。したがって、ステップ404で、プロセスCは、例えばプロセスBのCoordBが線形連鎖の最後のコーディネータであったという標識を前に格納していた記憶場所を削除し、かつその記憶場所にプロセスCのCoordCが今や登録コーディネータの線形連鎖の最後のコーディネータであるという標識を挿入することによって、線形連鎖における最後の登録コーディネータを追跡する。
【0045】
ステップ405で、プロセスCは、プロセスDが分散トランザクションに関与するようになることを要求するために、プロセスDにトランザクション要求を送る(流れ8)(プロセスCはプロセスDを、クライアント・アプリケーション31がサーバ・アプリケーションCに送った(流れ5で)トランザクション要求の実行の一部として呼び出すことに注意されたい)。トランザクション要求の伝搬コンテキストには、プロセスDがそのローカル資源ResD1 42をトランザクションに登録するために登録要求を送出するときに、プロセスDはこの登録要求をプロセスCのCoordC38に送らなければならないという指示が含まれる(前段落で述べた通り、プロセスCがプロセスBに代わってそれ自身を線形連鎖の最後のコーディネータとしたため)。
【0046】
ステップ406で、プロセスCはプロセスDから、プロセスDのローカル資源ResD1 42をトランザクションに登録することを要求する登録要求を受け取る(流れ9)。次いでプロセスCは、登録要求への応答(流れ10)をプロセスDに送り返す(ステップ407)。
【0047】
ステップ407で、プロセスDがトランザクション作業のその役割を実行し終わると、プロセスCは、ステップ405でプロセスCがプロセスDに送ったトランザクション要求(流れ8)へのプロセスDからの応答を受け取る(流れ11)。この後者の応答(流れ11)は、プロセスDが今線形連鎖における最後の登録コーディネータであるという標識を含む(プロセスDがプロセスCに登録要求を送ったため(流れ9))。ステップ408で、プロセスCは次に、例えばプロセスCのCoordCが線形連鎖の最後のコーディネータであったという標識を前に格納していた記憶場所を削除し、かつその記憶場所にプロセスDのCoordDが今や登録コーディネータの線形連鎖の最後のコーディネータであるという標識を挿入することによって、線形連鎖における最後の登録コーディネータを追跡する。
【0048】
ステップ409で、プロセスCがステップ401で受け取ったトランザクション要求のその処理を終了すると、プロセスCはトランザクション要求への応答(流れ12)をプロセスAのクライアント・アプリケーション31に送り返す。この応答の伝搬トランザクション・コンテキストには、プロセスDが今や登録されたコーディネータの線形連鎖の最後のコーディネータであるという標識が含まれる。この応答を受け取ると、プロセスAは次いで線形連鎖における最後のコーディネータについてのそれ自体の記録を更新する(プロセスAは現在、プロセスBを最後のコーディネータとして格納しているので)。このようにして、クライアント・アプリケーション31がさらなるサーバE(図3には図示せず)にトランザクション要求を送る場合、クライアント・アプリケーション31はサーバEに、サーバEがトランザクションに登録するときにはサーバEはその登録要求をプロセスDに送らなければならないことを知らせる(これによりサーバEは次に登録プロセスの線形連鎖の最後に置かれる)。
【0049】
本発明の好適な実施形態を、オブジェクト指向プログラミング環境で説明したが、本発明は非オブジェクト指向プログラミング環境にも適用することができる。
【0050】
添付の請求の範囲において、用語「装置」は、マシンまたはマシン上で実行するプロセスのどちらともすることができる。
【0051】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0052】
(1)クライアント/サーバ・トランザクション処理システムに使用するコンピューティング装置であって、
サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するための送信手段と、
トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るための受信手段と、
受信手段が受け取る応答に基づいて線形連鎖の最後の現在の装置を追跡するための維持手段と
を含み、
送信手段によってトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持手段に基づく線形連鎖の最後の現在の装置の標識であるコンピューティング装置。
(2)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(1)に記載の装置。
(3)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、上記(1)に記載の装置。
(4)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(1)に記載の装置。
(5)クライアント/サーバ・トランザクション処理システムに使用するコンピューティング装置を操作する方法であって、
サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するステップと、
トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るステップと、
受信ステップによって受け取った応答に基づいて線形連鎖の最後の現在の装置を追跡するステップとを含み、
送信ステップによりトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持ステップに基づく線形連鎖の最後の現在の装置の標識である
方法。
(6)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(5)に記載の方法。
(7)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、上記(5)に記載の方法。
(8)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(5)に記載の方法。
(9)上記(5)の方法のステップを実行するためにマシンによって実行可能な命令のプログラムを有形に実施する、マシン可読プログラム記憶装置。
(10)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(9)に記載のプログラム記憶装置。
(11)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様書に従って実現される、上記(9)に記載のプログラム記憶装置。
(12)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(9)に記載のプログラム記憶装置。
【図面の簡単な説明】
【図1】本発明の好適な実施形態を適用することができる、オブジェクト技術を使用した周知の異種クライアント/サーバ・アーキテクチャのブロック図である。
【図2】従来のシステムに従って2つの共通トランザクション・サーバ内でインスタンス化される様々なオブジェクトを示すブロック図である。
【図3】本発明の好適な実施形態によるソフトウェア構成要素を示すブロック図である。
【図4】本発明の好適な実施形態に従ってプロセスによって実行されるステップを示す流れ図である。
【符号の説明】
31 クライアント・アプリケーション
32 サーバ・アプリケーションB
33 資源B1
34 コーディネータB
35 コーディネータA
36 資源B2
37 サーバ・アプリケーションC
38 コーディネータC
39 資源C1
40 コーディネータD
41 サーバ・アプリケーションD
42 資源D1
【発明の属する技術分野】
本発明は、1つのコンピューティング装置(「クライアント」)が別のコンピューティング装置(「サーバ」)にクライアントの作業の一部を実行するように要求する、クライアント/サーバ(「分散」としても知られる)コンピューティングの分野に関する。クライアントおよびサーバは両方とも、同一の物理的コンピューティング装置に配置することもできる。
【0002】
【従来の技術】
クライアント/サーバ・コンピューティングは、情報技術の世界において過去数年間でますます重要になってきた。この種の分散コンピューティングは、1つのマシンがその作業の一部を、例えばその作業を実行するのにより適している別のマシンに委ねることを可能にする。例えば、サーバは、大量のデータの記憶を管理するデータベース・プログラムを実行する高能力コンピュータとすることができる一方、クライアントは単に、そのローカル・プログラムの1つで使用するためにデータベースからの情報を要求するデスクトップ・パーソナル・コンピュータ(PC)である。
【0003】
クライアント/サーバ・コンピューティングの利点は、クライアントおよびサーバを異なる(異種)「プラットフォーム」に配置することを可能にする、オブジェクト指向プログラミング(OOP)と呼ばれる周知のコンピュータ・プログラミング技術の使用によってさらに増強されてきた。プラットフォームとは、マシンがその作業を行うために使用する特定のハードウェア/ソフトウェア/オペレーティング・システム/通信プロトコルの組合せである。OOPは、クライアント・アプリケーション・プログラムの作業要求がどのようにサーバ・アプリケーション・プログラムによって交信され受け入れられるかを気にすることなく、クライアント・アプリケーション・プログラムおよびサーバ・アプリケーション・プログラムがそれ自体のプラットフォームで動作することを可能にする。同様にサーバ・アプリケーションは、OOPシステムがどのようにサーバ・アプリケーションの処理結果を受け取り、変換し、要求側クライアント・アプリケーションに返送するかを気にする必要がない。
【0004】
OOP技術が異種クライアント/サーバ・システムとどのように統合されてきたかの詳細は、米国特許第5440744号および欧州特許公開出願EP 0 677943 A2号に説明されている。これら2件の刊行物を参照によって本明細書に組み込む。しかし、本発明の環境の背景理解のために、基本的アーキテクチャの1例を以下で取り上げる。
【0005】
図1に示すように、クライアント・コンピュータ10(例えばIBM OS/2オペレーティング・システムを搭載したパーソナル・コンピュータとすることができる)は、そのオペレーティング・システム上で実行するアプリケーション・プログラム40を有する(「IBM」および「OS/2」はInternational Business Machines社の商標)。アプリケーション・プログラム40は定期的に、サーバ・コンピュータ20上で作業を実行するように、かつ/または後でアプリケーション・プログラム40で使用するためにデータをサーバ20から返送するように要求する。サーバ・コンピュータ20は、例えばIBMのMVSオペレーティング・システム上で実行する高性能メインフレーム・コンピュータとすることができる(「MVS」もIBM社の商標)。本発明の場合、サーバによって実行される通信サービスの要求が、第1アプリケーション・プログラム40とのユーザの対話によって引き起こされるか、それともアプリケーション・プログラム40がユーザの対話に関係なく動作して、プログラムの実行中に自動的に要求を行うかは関係ない。
【0006】
クライアント・コンピュータ10がサーバ・コンピュータ20のサービスを要求したいときに、第1アプリケーション・プログラム40は、必要とするサービスについて第1論理手段50に通知する。これは、例えば、第1論理手段に遠隔手順の名前を入出力パラメータのリストと共に送ることによって、実行することができる。次いで第1論理手段50は、記憶装置60に格納された利用可能な通信サービスの定義を参照して、第2コンピュータ20との必要な通信を確立するタスクを処理する。可能なサービスはすべて、オブジェクト・クラス70のコヒーシブ・フレームワークとして定義されており、これらのクラスは単一オブジェクト・クラスから導出される。このようにしてサービスを定義すると、性能および再使用可能性の点で多数の利点が得られる。
【0007】
サーバ20との必要な通信を確立するために、第1論理手段50はフレームワーク内のどのオブジェクト・クラスを使用する必要があるかを判定し、次いで、サーバにおいて、そのオブジェクトのインスタンス、つまりそのオブジェクトにそのメソッドの1つを呼び出させるためにそのオブジェクトに送信されるメッセージを形成する。これにより、接続手段80を介してサーバ・コンピュータ20との接続の確立が生じ、続いて要求が第2論理手段90に送信される。
【0008】
次いで第2論理手段90が要求を、サーバ・コンピュータ20で実行している第2アプリケーション・プログラム100(以下、サービス・アプリケーションという)に渡すので、サービス・アプリケーション100は、データ検索手順を実行するなど、その要求によって要求される特定のタスクを実行することができる。このタスクが完了すると、サービス・アプリケーションは、結果を第1コンピュータ10に返送する必要があるかもしれない。要求されたタスクの実行中、および結果が第1コンピュータ10に返送される際、サーバ・アプリケーション100は第2論理手段90と対話する。第2論理手段90はオブジェクトのインスタンスを決定し、サーバ・アプリケーション100によって要求されたときにこれらのオブジェクトの適切なメソッドを呼び出し、記憶装置110に格納されたオブジェクト・クラスのコヒーシブ・フレームワークからオブジェクト・インスタンスが形成される。
【0009】
上記の技術を使用すると、クライアント・アプリケーション・プログラム40は通信アーキテクチャにさらされない。さらに、サービス・アプリケーション100が、その環境の標準機構を介して呼び出される。つまり、それは遠隔的に呼び出されていることを認識しない。
【0010】
オブジェクト管理グループ(OMG)は、図1に示すような分散オブジェクトを持つ異種プラットフォームでのクライアント/サーバ・コンピューティングの様々な側面に関与する組織の国際的コンソーシアムである。OMGは、クライアント・コンピュータ(例えば10)がサーバ・マシン(例えば20)と(OOPの形で)通信するための標準を規定し発行した。これらの標準の一環として、クライアント・マシンとサーバ・マシンの間にオブジェクト指向ブリッジを提供するオブジェクト要求ブローカ(CORBAつまり共通オブジェクト要求ブローカ・アーキテクチャと呼ばれる)が定義された。ORBは、オブジェクト指向実装の詳細からクライアント・アプリケーションおよびサーバ・アプリケーションを切り離し、第1および第2論理手段50、90ならびに接続手段80の作業の少なくとも一部分を実行する。
【0011】
CORBAソフトウェア構造の一部として、OMGは「トランザクション」に関連する標準を規定した。これらの標準は、OTSつまりオブジェクト・トランザクション・サービスとして知られる。例えば、OMG文書94.8.4、CORBAオブジェクト・トランザクション・サービス仕様1.0を参照されたい。コンピュータによって実装されるトランザクション処理システムは、いくつかの産業において重要なビジネス・タスクに使用される。トランザクションは、完全に終了しなければならないか、または動作せずに完全にパージしなければならない単一作業単位を定義する。例えば、銀行の現金自動預け払い機で顧客が現金を引き出そうとする場合、現金を払い出し、機械内にある現金の残高を差し引き、顧客の銀行預金残高を差し引く動作が全部行われるか、またはそれらが全く行われないかのいずれかでなければならない。下位動作の1つが失敗すると、記録と実際のオカレンスの不一致が生じる。
【0012】
分散トランザクション処理は、複数の物理位置または論理位置における資源に影響するトランザクションを伴う。上記の例では、トランザクションは、局所現金自動預け払い機で管理される資源に影響するだけでなく、銀行のメイン・コンピュータによって管理される銀行預金残高にも影響する。そのようなトランザクションは、サーバによって処理される一連のクライアント要求により1つの特定のサーバ・コンピュータ(例えば20)と通信する1つの特定のクライアント・コンピュータ(例えば10)を伴う。OMGのOTSは、これらの分散トランザクションを調整する責任がある。
【0013】
クライアント・プロセスで実行するアプリケーションは、複数の様々なサーバの呼出しを含むトランザクションを始動し、それぞれのサーバはサーバ・プロセスを起動して、トランザクションに含まれる命令に従ってそのローカル・データを変更する。トランザクションを実行する(したがってすべてのサーバがそれらのローカル・データの変更を終了する)か、またはトランザクションを打ち切る(したがってすべてのサーバがトランザクション中に行われたそれらのローカル・データの変更を「撤回」または無視する)かのいずれかによって、トランザクションは終了する。トランザクション中にサーバと通信する(例えばそれらにトランザクションにおけるそれらの役割を実行するかまたは打ち切るように命令する)ために、含まれるプロセスの1つはトランザクションのための状態データを維持しなければならない。OTS標準によると、これは一連のオブジェクトをセットアップするプロセスを含み、そのうちの1つは、様々なサーバに関してトランザクションを調整するコーディネータ・オブジェクトである。
【0014】
このコーディネータ・オブジェクトの主な目的は、どのサーバ・オブジェクトがトランザクションに関与しているかを追跡し続けて、トランザクションが終了したときに、トランザクションに関与する各サーバ・オブジェクトに、1回の統一された努力で、そのサーバ・オブジェクトに関連するローカル・データベースに局所的に行われた変更をコミットするように命令することができるようにすることである。これにより、どのサーバ・オブジェクトも、同一トランザクションに関与する他のサーバ・オブジェクトなしでは、データ変更を最終決定しないことが保証される。したがって、トランザクションに参加する各サーバ・オブジェクトは最初にコーディネータ・オブジェクトに登録して、コーディネータ・オブジェクトがサーバ・オブジェクトの存在、トランザクションへの参加の希望、およびトランザクションを終了する時が来たときにサーバ・オブジェクトがどこにあるか(例えばサーバ・オブジェクトがどのサーバ・マシンに常駐しているか)が分かるようにしておかなければならない(コーディネータ・オブジェクトはすべてのサーバ・オブジェクトにそれぞれのローカル・データの変更を最終決定するように命令する)。
【0015】
データを更新する責任のあるサーバ・オブジェクト(以下、資源オブジェクトという)は、別のサーバ・オブジェクト(またはトランザクションを開始した元のクライアント・オブジェクト)が資源オブジェクトに何らかの作業をするように資源オブジェクトに要求を送ったときに、トランザクションに関与するようになる。この後者の要求は、要求が特定のトランザクションの一部であることを資源オブジェクトに知らせる、トランザクション・コンテキストと呼ばれる何らかの情報を含む。CORBAバージョン2では、トランザクション・コンテキストは、ローカルCosTransactions::Coordinatorオブジェクトget_txcontextメソッドによって構築される。資源オブジェクトはそれが特定のトランザクションに関与するようになることを認識すると、コーディネータ・オブジェクトに登録要求を行う。
【0016】
資源オブジェクトが、コーディネータ・オブジェクトとは異なるオペレーティング・システム・プロセスに配置されている場合、資源オブジェクト(223または224)と同じオペレーティング・システム・プロセスに配置された下位コーディネータ・オブジェクト(図2の222)を使用すると便利であることが明らかになった。その場合、主コーディネータ・オブジェクトを「上位コーディネータ・オブジェクト」211と呼ぶ。資源オブジェクト223のトランザクションへの登録中に、下位コーディネータ222は資源オブジェクト223を収容しているサーバ・マシン22内で局所的にセットアップされ、資源オブジェクト223は登録要求を行うときに、この下位コーディネータ・オブジェクト222と直接やり取りする。(ここでは用語「サーバ・マシン」を使用しているが、分散サーバ・オブジェクトを実際には、同じサーバ・マシンであるがそのサーバ・マシン上で実行している別のオペレーティング・システム・プロセスに配置することもできることを示すために、用語「サーバ・プロセス」を使用することもできることに留意されたい。したがって、以下では、用語「サーバ」は、両方の用語を指すのに使用する。)次に下位コーディネータ222はそれ自体を、上位コーディネータ・オブジェクト211(あたかも資源オブジェクトであるかのように、おそらく別のサーバ・マシン上の別のプロセスに配置されている)に登録する。
【0017】
下位コーディネータ・オブジェクト222はこのようにして、資源オブジェクトを収容しているサーバ内におけるトランザクションの存在を表現する。上位コーディネータ・オブジェクト211と直接やり取りする代わりに、資源オブジェクト223、224は最初にそれらのローカル下位コーディネータ・オブジェクト222とやり取りし、次にこれが上位コーディネータ・オブジェクトとやり取りする。これにより、オペレーティング・システム・プロセス間の相互呼出し回数が大幅に減少する。
【0018】
トランザクションはしばしば、潜在的に異なるサーバ・マシン上でそれぞれ実行するいくつかの異なるプロセスを含む。例えば、サーバ・プロセス21(これは上位コーディネータ211を含む)は、分散トランザクションに参加する3つの異なるプロセスを呼び出すことがあり、したがってそのような各プロセスは結果的に、そのプロセスのトランザクションを局所的に調整するために下位コーディネータを形成する。トランザクションの最後に、上位コーディネータは従来の2段階コミット・プロトコルを使用して、3つのプロセスのそれぞれがその変更を、一括した「オール・オア・ナッシング」方式で(つまり、それらが全部それぞれの変更を確定するか、それともそれらが全部それぞれの変更を取り消す)、最終決定することを確実にする。2段階コミット・プロトコルは従来、3つの下位コーディネータのそれぞれにプリペア・コール(prepare call)を送り、次いで、それらがプリペア・コールに応答してすべてコミットすることをボーティングしたと仮定して、3つの下位コーディネータのそれぞれにコミット・コールを送ることを含む。したがって、これは上位コーディネータ211による6つのプロセス間コールの送り出しを含む。
【0019】
2段階コミットにおけるプロセス間コールの総数を減少するためにしばしば使用される2段階コミット・プロトコルの周知の最適化は、「最終エージェントの最適化」として知られる(例えば、GrayとReuter共著「Transaction Processing:Processes and Techniques」(Morgan Kaufman Publishers社刊)1992年9月、12.5.3節を参照のこと)。この最適化を要約すると、トランザクション・ルート・コーディネータ(例えば上位コーディネータ211)がトランザクションに含まれるN個の資源(例えば3つの下位コーディネータを表す)を有する場合、それらのうちN−1個を準備する(つまり、N−1個にプリペア・フローを送る)ということである。この時点ですべての資源がコミットすることをボーティングすると(通常のケース)、トランザクションの結果は最終資源のプリペア・ボーティングによって決まる。したがって、最終資源のプリペア・フローおよびコミット・フローを結合することができ、この最適化された最終フローは、resource::commit_one_phase法によってCORBA CosTransactions仕様で提供される。この議論では、下位コーディネータ、それらの資源、およびその他の資源を同様に取り扱うことができ、これらは総称して関連「エージェント」と呼ばれる。最終エージェントの最適化により、2段階コミットの単純なケースでは、コーディネータと最終エージェントとの間のメッセージ・フローは半減する。
【0020】
2段階コミット・プロトコルのさらによく知られている最適化は、「線形コミット」最適化と呼ばれる(これも上記のGrayらの章節に記載されている)。線形コミット最適化は、分散トランザクションに関係するシステムを線形連鎖状に配列することができれば、この連鎖に最終エージェント最適化を繰返し使用することができるという概念に基づいている。これは、分散トランザクションの完了に参加している分散システム間で受け渡さなければならないメッセージの総数をほぼ半減する。
【0021】
【発明が解決しようとする課題】
しかし、これらの最適化はトランザクション処理分野ではよく知られているが、クライアント/サーバ分散トランザクション処理において、どのようにしてコーディネータを自動的に確実にそのような線形連鎖状に配列するかがこれまで不明であり、従来技術におけるこの欠如が、本発明者が以下で記述する本発明を考案するに至る刺激となった。
【0022】
【課題を解決するための手段】
第1の態様によると、本発明は、クライアント/サーバ・トランザクション処理システム用のコンピューティング装置であって、サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するための送信手段と、トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るための受信手段と、受信手段が受け取る応答に基づいて線形連鎖の最後の現在の装置を追跡するための維持手段とを含み、送信手段によってトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持手段に基づいて線形連鎖の最後の現在の装置の標識である、コンピューティング装置を提供する。
【0023】
第2の態様によれば、本発明は、第1の態様の装置を操作する方法を提供する。
【0024】
第3の態様によれば、本発明は、第2の態様の方法のステップを実行するためにマシンによって実行可能な命令のプログラムを有形に実施するマシン可読プログラム記憶装置を提供する。
【0025】
したがって、本発明は、分散トランザクションのコーディネータを自動的かつ確実に線形連鎖状に並べることができ、したがって線形コミット最適化の使用を可能にする。そうすると線形コミット最適化を使用することができるので、2段階コミット・プロセス中のコーディネータ間メッセージの流れの数を半減することができる。現在および将来のオブジェクト指向電子取引分野は分散トランザクションを実質的に利用するので(トランザクションに必要なデータベースが様々なサーバに保持されるため)、本発明は、システム間トラヒックをかなり削減するという意味で、そのようなシステムにとって事実上の確実な利益になるであろう。
【0026】
【発明の実施の形態】
本発明の好適な実施形態がいかに作用するかを例示するために、今、図3に関して、シナリオの例を提示する。このシナリオ例は、分散トランザクションがどのように実行されるかを示すかなり典型的な例として選択した。
【0027】
この例では、4つのシステムで動作する分散トランザクションを取り上げる。(ここで、システムはおそらくそれ自体の専用マシン上で動作する離散オペレーティング・システム・プロセスと認識することができ(各マシンはインターネットなどのネットワークを介して他のマシンと接続している)、あるいはこの例と矛盾することなくすべてのプロセスが同一物理マシン上で実行していることもあり得る。)
【0028】
クライアント・アプリケーション31はシステムA上にあり、ユーザのトランザクション作業単位を実行している間、クライアント・アプリケーション31は、3つのサーバ・システムすなわちサーバB、サーバC、およびサーバDをホストとするサーバ・アプリケーションを利用する。
【0029】
ユーザのトランザクションが関係する各サーバ・システムについて、分散トランザクションの一部として回復可能資源にアクセスが行われるが、このためにはサーバ・システムがトランザクションおよびトランザクションの分散2段階コミット・プロセスに関与するようになることが必要である。トランザクションが展開するシナリオについて、以下で説明する。
【0030】
トランザクションの展開中、本発明の好適な実施形態では、分散トランザクション・ツリーの「新しい」部分の展開は常に、構築中の現在のトランザクション「連鎖」の「最後」に配置されるようになることが必要である。この結果、トランザクション・ツリーが線形になり(関係するコーディネータの点から見て)、したがって「線形コミット」最適化の潜在的可能性が改善される。
【0031】
ユーザは、クライアント・アプリケーション31「CLIENT APP」をシステム「A」で実行し、このアプリケーションがユーザのためにトランザクション作業単位を実行している間に、アプリケーション・コードは、システム「B」に位置するサーバ・アプリケーション「APP SERVER B」に呼出しを行う(図3の流れ「1」)。
【0032】
この呼出しが行われると、システムBのトランザクション・サービスは、アプリケーションの代わりにシステムB(宛先システム)でトランザクションを確立する。これは、アプリケーションの要求と一緒に送られる「トランザクション・コンテキスト」を用いて行われる。トランザクション・コンテキストのこの確立は、トランザクション・オブジェクトを目標とするすべてのアプリケーションの流れ(例えば我々のシナリオでは流れ「1」、「5」、および「8」)を受信すると、宛先システムで同様に行われる。
【0033】
サーバ・アプリケーション・プログラムB32を実行している間、資源「ResB1」33はアプリケーション32によってローカル・コーディネータ「CoordB」34に登録される。「CoordB」34は、分散トランザクションの完了に関与することがまだ登録されていないので、現在確立されているトランザクション・コンテキストに存在したコーディネータ参照(「CoordA」35)にそれ自身のregister_resource呼出しを行う(流れ「2」)。したがって、「CoordB」34は今、「CoordA」35によって調整される分散トランザクションにリンクされる。したがって、register_resourceの流れの処理を終了した「CoordA」35は戻り、制御は発呼側システム(「B」)に返される(流れ「3」)。
【0034】
処理はシステムBで続き、サーバ・アプリケーションB32の一部によって別の資源36(「ResB2」)がトランザクションに登録される。「CoordB」34はすでにトランザクションに関与しているので、新しいregister_resourceの流れ(「2」、「3」などの)は不要である。
【0035】
ユーザのサーバ作業の処理がシステム「B」で終了し、「B」は制御をシステムAに返す(流れ「4」)。この流れに便乗して、返却側システム(システムB)がこのとき関与するコーディネータの分散トランザクション連鎖の「最後」にあると考えるコーディネータへの参照−この例の場合には「CoordB」の参照−が送られ、この参照は返却側「トランザクション・コンテキスト」に格納される。
【0036】
トランザクションの次のステップとして、クライアント・アプリケーション・プログラム31はシステムCの「APP SERVER C37」を呼び出す(流れ「5」)。従来技術では、システムAはシステムAのコーディネータ35に参照を渡す(この参照は、流れ「5」に便乗するトランザクション・コンテキストに入れて送られる)ので、システムCは(システムCにとって局所的な)ローカル資源をトランザクションに登録するときに、システムCがシステムAの主コーディネータ35に登録要求を行わなければならないことを知る。しかし、本発明の好適な実施形態では、このシナリオ(実施形態)の流れ「5」で、システムAは「CoordA」35が現在「連鎖」の最後にあると考えるコーディネータ(つまり「CoordB」34)に参照を渡す。
【0037】
したがって、サーバ「C」のトランザクション・サービスがトランザクションに関与するようになるとき、(従来技術の場合のように)「CoordA」に接触して分散トランザクションに参加するようになる(したがって、V字型のトランザクション・ツリーを形成する)のではなく、「CoordB」34に接触して線形連鎖を形成し、これは線形コミット最適化技術により2段階コミットを使用してより効率的にコミットすることができる。
【0038】
したがって、CoordB34がシステムAからのトランザクション・コンテキストでシステムCに渡されるコーディネータ参照であったので、「CoordC」38は(システムCのローカル資源ResC1 39をトランザクションに登録するために)register_resourceの流れを「CoordB」34に流す(流れ「6」)。この流れは、流れ「2」と同様であり、同じ装置を使用する。「CoordB」34は戻り(返流「7」)、処理はシステムCで続行する。
【0039】
このとき、関与システムの連鎖「A」→「B」→「C」ができており、制御(つまり、移動中のアプリケーションのスレッド)は現在ノード「C」にある。トランザクションの現在実行中/稼働中の部分のトランザクション・サービスが連鎖における現在の「最後」のコーディネータを知り、この「最後」のコーディネータの参照をアウトバウンド・トランザクションの流れと共に流し、この(または更新された)参照をどの応答でも返す限り、トランザクションは常に連鎖内の「最後」のシステム(システム間register_resourceを介して関与した)を追跡し、その後の新しいシステム間トランザクションの流れでこの参照を送る(かつそれを上述の通り更新する)ことにより、分散トランザクション・ツリーは、望む通りのコーディネータの線形連鎖を形成する。
【0040】
このシナリオでは「CoordC」38は現在の連鎖の最後にあるので、トランザクション作業がシステム「D」のサーバ・アプリケーションD41に送られる(流れ「8」)と、CoordCの参照がこの流れのトランザクション・コンテキストに入れて渡される。「CoordD」40は、流れ「9」および返流「10」により現在の「最後」のコーディネータ(CoordC38)へのregister_resourceの流れ(そのローカル資源ResD1 42を登録するため)を介してトランザクションに関与するようになる。我々のシナリオでは、作業はシステムCからDに流れ(流れ「8」)、システム「C」に戻り(返流「11」)、次いで最終的にシステムAに戻る(流れ「12」)。したがって、コーディネータは、望む通りに線形連鎖状にA→B→C→Dと並ぶ。
【0041】
別のシナリオでは、システム「D」は、システム「A」、「B」、および「C」のいずれかから流れる作業のため、トランザクションに関与するようになることがあり、これらの3つのシステムのいずれかが線形連鎖「A」→「B」→「C」の分散トランザクション・ツリーに関与するようになると、「A」、「B」、または「C」のいずれかからDへのトランザクションの流れは、トランザクション・コンテキストに便乗して「CoordC」38への参照を渡す。
【0042】
次に、本発明の好適な実施形態によるプロセスに従って実行されるステップを、図4の流れ図を参照しながら説明する。例示のために、図3のプロセスCを、図4の流れ図に関して説明する代表的プロセスとする。
【0043】
ステップ401で、プロセスCのサーバ・アプリケーションC37はクライアント・アプリケーション31から、プロセスCが分散トランザクションに関与するようになることを要求するトランザクション要求(図3の流れ5)を受け取る。受け取ったトランザクション要求の伝搬コンテキストには、プロセスCがそのローカル資源ResC1 39をトランザクションに登録するために登録要求を送出するときに、プロセスCがこの登録要求をプロセスBのCoordB34に送らなければならないという指示が含まれる(プロセスBが線形連鎖の最後のコーディネータであったことを、プロセスBが前にプロセスAに知らせたため)。
【0044】
ステップ402で、プロセスCは受け取ったトランザクション要求の伝搬コンテキストを調べ、プロセスCが登録要求を送る宛先とすべきプロセスの識別子を決定する。前段で説明した通り、図3のこのシナリオでは、登録要求を送るべき宛先プロセスはプロセスBである。したがって、ステップ403で、プロセスCは登録要求をプロセスBのCoordB34に送る(流れ6)。このとき、プロセスCのCoordC38は登録要求をプロセスBに送ったので、プロセスCのCoordCが今や、プロセスBのCoordBに代わってトランザクションの登録コーディネータの線形連鎖における最後のコーディネータとなる。したがって、ステップ404で、プロセスCは、例えばプロセスBのCoordBが線形連鎖の最後のコーディネータであったという標識を前に格納していた記憶場所を削除し、かつその記憶場所にプロセスCのCoordCが今や登録コーディネータの線形連鎖の最後のコーディネータであるという標識を挿入することによって、線形連鎖における最後の登録コーディネータを追跡する。
【0045】
ステップ405で、プロセスCは、プロセスDが分散トランザクションに関与するようになることを要求するために、プロセスDにトランザクション要求を送る(流れ8)(プロセスCはプロセスDを、クライアント・アプリケーション31がサーバ・アプリケーションCに送った(流れ5で)トランザクション要求の実行の一部として呼び出すことに注意されたい)。トランザクション要求の伝搬コンテキストには、プロセスDがそのローカル資源ResD1 42をトランザクションに登録するために登録要求を送出するときに、プロセスDはこの登録要求をプロセスCのCoordC38に送らなければならないという指示が含まれる(前段落で述べた通り、プロセスCがプロセスBに代わってそれ自身を線形連鎖の最後のコーディネータとしたため)。
【0046】
ステップ406で、プロセスCはプロセスDから、プロセスDのローカル資源ResD1 42をトランザクションに登録することを要求する登録要求を受け取る(流れ9)。次いでプロセスCは、登録要求への応答(流れ10)をプロセスDに送り返す(ステップ407)。
【0047】
ステップ407で、プロセスDがトランザクション作業のその役割を実行し終わると、プロセスCは、ステップ405でプロセスCがプロセスDに送ったトランザクション要求(流れ8)へのプロセスDからの応答を受け取る(流れ11)。この後者の応答(流れ11)は、プロセスDが今線形連鎖における最後の登録コーディネータであるという標識を含む(プロセスDがプロセスCに登録要求を送ったため(流れ9))。ステップ408で、プロセスCは次に、例えばプロセスCのCoordCが線形連鎖の最後のコーディネータであったという標識を前に格納していた記憶場所を削除し、かつその記憶場所にプロセスDのCoordDが今や登録コーディネータの線形連鎖の最後のコーディネータであるという標識を挿入することによって、線形連鎖における最後の登録コーディネータを追跡する。
【0048】
ステップ409で、プロセスCがステップ401で受け取ったトランザクション要求のその処理を終了すると、プロセスCはトランザクション要求への応答(流れ12)をプロセスAのクライアント・アプリケーション31に送り返す。この応答の伝搬トランザクション・コンテキストには、プロセスDが今や登録されたコーディネータの線形連鎖の最後のコーディネータであるという標識が含まれる。この応答を受け取ると、プロセスAは次いで線形連鎖における最後のコーディネータについてのそれ自体の記録を更新する(プロセスAは現在、プロセスBを最後のコーディネータとして格納しているので)。このようにして、クライアント・アプリケーション31がさらなるサーバE(図3には図示せず)にトランザクション要求を送る場合、クライアント・アプリケーション31はサーバEに、サーバEがトランザクションに登録するときにはサーバEはその登録要求をプロセスDに送らなければならないことを知らせる(これによりサーバEは次に登録プロセスの線形連鎖の最後に置かれる)。
【0049】
本発明の好適な実施形態を、オブジェクト指向プログラミング環境で説明したが、本発明は非オブジェクト指向プログラミング環境にも適用することができる。
【0050】
添付の請求の範囲において、用語「装置」は、マシンまたはマシン上で実行するプロセスのどちらともすることができる。
【0051】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0052】
(1)クライアント/サーバ・トランザクション処理システムに使用するコンピューティング装置であって、
サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するための送信手段と、
トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るための受信手段と、
受信手段が受け取る応答に基づいて線形連鎖の最後の現在の装置を追跡するための維持手段と
を含み、
送信手段によってトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持手段に基づく線形連鎖の最後の現在の装置の標識であるコンピューティング装置。
(2)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(1)に記載の装置。
(3)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、上記(1)に記載の装置。
(4)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(1)に記載の装置。
(5)クライアント/サーバ・トランザクション処理システムに使用するコンピューティング装置を操作する方法であって、
サーバ・データ処理装置がサーバ・データ処理装置にとって局所的な資源をトランザクションに登録するように要求するために登録要求を送るべきコンピューティング装置の標識を含むトランザクション要求をサーバ・データ処理装置に送ってサーバ・データ処理装置が分散トランザクションの処理に関与するようになることを要求するステップと、
トランザクション要求の受信に応答して登録要求を送出した装置の線形連鎖における現在の最後の装置の標識を含むトランザクション要求への応答をサーバ・データ処理装置から受け取るステップと、
受信ステップによって受け取った応答に基づいて線形連鎖の最後の現在の装置を追跡するステップとを含み、
送信ステップによりトランザクション要求と一緒にサーバ・データ処理装置に送られる標識が、前記維持ステップに基づく線形連鎖の最後の現在の装置の標識である
方法。
(6)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(5)に記載の方法。
(7)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、上記(5)に記載の方法。
(8)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(5)に記載の方法。
(9)上記(5)の方法のステップを実行するためにマシンによって実行可能な命令のプログラムを有形に実施する、マシン可読プログラム記憶装置。
(10)前記標識がトランザクション伝搬コンテキストの一部として応答に提供される、上記(9)に記載のプログラム記憶装置。
(11)前記装置が共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様書に従って実現される、上記(9)に記載のプログラム記憶装置。
(12)前記クライアント/サーバ・システムが通信媒体としてインターネットを使用する、上記(9)に記載のプログラム記憶装置。
【図面の簡単な説明】
【図1】本発明の好適な実施形態を適用することができる、オブジェクト技術を使用した周知の異種クライアント/サーバ・アーキテクチャのブロック図である。
【図2】従来のシステムに従って2つの共通トランザクション・サーバ内でインスタンス化される様々なオブジェクトを示すブロック図である。
【図3】本発明の好適な実施形態によるソフトウェア構成要素を示すブロック図である。
【図4】本発明の好適な実施形態に従ってプロセスによって実行されるステップを示す流れ図である。
【符号の説明】
31 クライアント・アプリケーション
32 サーバ・アプリケーションB
33 資源B1
34 コーディネータB
35 コーディネータA
36 資源B2
37 サーバ・アプリケーションC
38 コーディネータC
39 資源C1
40 コーディネータD
41 サーバ・アプリケーションD
42 資源D1
Claims (8)
- クライアント/サーバ・トランザクション処理システムに使用するクライアント装置であって、
前記クライアント装置からサーバ装置へ前記サーバ装置が分散トランザクションの処理に関与することを要求するトランザクション要求を送信する送信手段であって、前記トランザクション要求は、前記サーバ装置にとってローカルな資源を前記トランザクションに登録することを要求する登録要求を指示すべき前記クライアント装置の第1の標識を含んでいる、前記送信手段と、
前記サーバ装置から前記トランザクション要求に対する応答を受信する受信手段であって、前記応答は、前記トランザクション要求の受信に応答して登録要求を既に送信したサーバ装置のうちの線形トランザクション・ツリーの現在最後のサーバ装置の第2の標識を含む、前記受信手段と、
前記受信手段によって受信された応答に基づいて、前記線形トランザクション・ツリーの前記現在最後のサーバ装置を追跡する追跡手段を含み、
前記第2の標識が、前記追跡手段に基づいた、前記線形トランザクション・ツリーの前記現在最後のサーバ装置の標識である、
クライアント装置。 - 前記第2の標識が、トランザクション伝搬コンテキストの一部として応答に提供される、請求項1に記載のクライアント装置。
- 前記クライアント装置が、共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、請求項1に記載のクライアント装置。
- 前記クライアント/サーバ・トランザクション処理システムが、通信媒体としてインターネットを使用する、請求項1に記載のクライアント装置。
- クライアント/サーバ・トランザクション処理システムに使用するクライアント装置を操作する方法であって、
前記クライアント装置からサーバ装置へ前記サーバ装置が分散トランザクションの処理に関与することを要求するトランザクション要求を送信するステップであって、前記トランザクション要求は、前記サーバ装置にとってローカルな資源を前記トランザクションに登録することを要求する登録要求を指示するべき前記クライアント装置の第1の標識を含んでいる、前記送信するステップと、
前記サーバ装置から前記トランザクション要求に対する応答を受信するステップであって、前記応答は、前記トランザクション要求の受信に応答して登録要求を既に送信したサーバ装置のうちの線形トランザクション・ツリーの現在最後のサーバ装置の第2の標識を含む、前記受信するステップと、
前記受信するステップによって受信された応答に基づいて、前記線形トランザクション・ツリーの前記現在最後のサーバ装置を追跡するステップとを含み、
前記第2の標識が、前記追跡するステップに基づいた、前記線形トランザクション・ツリーの前記現在最後のサーバ装置の標識である、
方法。 - 前記第2の標識が、トランザクション伝搬コンテキストの一部として応答に提供される、請求項5に記載の方法。
- 前記クライアント装置が、共通オブジェクト要求ブローカ・オブジェクト・トランザクション・サービス仕様に従って実現される、請求項5に記載の方法。
- 前記クライアント/サーバ・トランザクション処理システムが、通信媒体としてインターネットを使用する、請求項5に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9903850A GB2346990B (en) | 1999-02-20 | 1999-02-20 | Client/server transaction data processing system with automatic distributed coordinator set up into a linear chain for use of linear commit optimization |
GB9903850.7 | 1999-02-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000242608A JP2000242608A (ja) | 2000-09-08 |
JP3574030B2 true JP3574030B2 (ja) | 2004-10-06 |
Family
ID=10848123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000039938A Expired - Fee Related JP3574030B2 (ja) | 1999-02-20 | 2000-02-17 | コンピューティング装置、操作方法およびプログラム記憶装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6542922B1 (ja) |
JP (1) | JP3574030B2 (ja) |
GB (1) | GB2346990B (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003781B1 (en) * | 2000-05-05 | 2006-02-21 | Bristol Technology Inc. | Method and apparatus for correlation of events in a distributed multi-system computing environment |
GB2376096B (en) * | 2001-05-30 | 2005-06-29 | Ibm | Identification of the source of a client/server flow |
US7231397B2 (en) * | 2003-10-24 | 2007-06-12 | Microsoft Corporation | Method and system for transacted file operations over a network |
US7404189B2 (en) | 2003-12-30 | 2008-07-22 | International Business Machines Corporation | Scheduler supporting web service invocation |
US8074220B2 (en) * | 2004-05-21 | 2011-12-06 | Computer Associates Think, Inc. | System and method for interfacing an application to a distributed transaction coordinator |
GB0422007D0 (en) * | 2004-10-05 | 2004-11-03 | Ibm | Method and system for identifying a complete response to a request |
US7712096B2 (en) * | 2004-12-21 | 2010-05-04 | International Business Machines Corporation | Method, system, and storage medium for dynamically reordering resource participation in two-phase commit to heuristically optimize for last-agent optimization |
WO2007026268A1 (en) * | 2005-08-31 | 2007-03-08 | Nokia Corporation | Inter-access mobility and service control |
US7770186B2 (en) * | 2006-01-06 | 2010-08-03 | Microsoft Corporation | Framework for database transactions |
US7613814B2 (en) * | 2006-06-20 | 2009-11-03 | Microsoft Corporation | Discovering transactions silently propagated off-machine |
US8346851B2 (en) * | 2009-08-31 | 2013-01-01 | Red Hat, Inc. | System and method for determining when to generate subordinate coordinators on local machines |
US9602616B2 (en) | 2013-11-06 | 2017-03-21 | Neustar, Inc. | System and method for facilitating routing |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4191657A (en) | 1975-12-24 | 1980-03-04 | Phillips Petroleum Company | Compositions for acidizing subterranean formations |
US4777595A (en) | 1982-05-07 | 1988-10-11 | Digital Equipment Corporation | Apparatus for transferring blocks of information from one node to a second node in a computer network |
US5191657A (en) | 1989-11-09 | 1993-03-02 | Ast Research, Inc. | Microcomputer architecture utilizing an asynchronous bus between microprocessor and industry standard synchronous bus |
IL96808A (en) | 1990-04-18 | 1996-03-31 | Rambus Inc | Introductory / Origin Circuit Agreed Using High-Performance Brokerage |
JPH0827705B2 (ja) | 1990-07-25 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アダプタ |
US5715407A (en) | 1992-03-06 | 1998-02-03 | Rambus, Inc. | Process and apparatus for collision detection on a parallel bus by monitoring a first line of the bus during even bus cycles for indications of overlapping packets |
US5390308A (en) | 1992-04-15 | 1995-02-14 | Rambus, Inc. | Method and apparatus for address mapping of dynamic random access memory |
JPH07312084A (ja) | 1994-05-18 | 1995-11-28 | Toshiba Corp | キャッシュメモリ内蔵メモリ装置 |
JP3129143B2 (ja) | 1994-05-31 | 2001-01-29 | 松下電器産業株式会社 | データ転送方法 |
US6317773B1 (en) * | 1994-10-11 | 2001-11-13 | International Business Machines Corporation | System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators |
GB2301909A (en) * | 1995-06-07 | 1996-12-18 | Ibm | Reduction of logging in distributed transaction processing systems |
US5872969A (en) * | 1995-06-23 | 1999-02-16 | International Business Machines Corporation | System and method for efficiently synchronizing cache and persistent data in an object oriented transaction processing system |
US5924125A (en) | 1995-08-01 | 1999-07-13 | Arya; Siamak | Method and apparatus for parallel access to consecutive TLB entries |
JP3240897B2 (ja) | 1995-11-29 | 2001-12-25 | 日本電気株式会社 | 半導体記憶装置 |
US5754537A (en) * | 1996-03-08 | 1998-05-19 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for transmitting background noise data |
US6260078B1 (en) * | 1996-07-03 | 2001-07-10 | Sun Microsystems, Inc. | Using a distributed object system to find and download java-based applications |
US6253252B1 (en) * | 1996-07-11 | 2001-06-26 | Andrew Schofield | Method and apparatus for asynchronously calling and implementing objects |
US5790789A (en) * | 1996-08-02 | 1998-08-04 | Suarez; Larry | Method and architecture for the creation, control and deployment of services within a distributed computer environment |
US5905876A (en) | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US6292827B1 (en) * | 1997-06-20 | 2001-09-18 | Shore Technologies (1999) Inc. | Information transfer systems and method with dynamic distribution of data, control and management of information |
US5857098A (en) | 1997-06-24 | 1999-01-05 | Samsung Electronics Co., Ltd. | Branch instruction prediction apparatus |
GB2328044B (en) * | 1997-08-01 | 2002-02-27 | Ibm | Apparatus,method and computer program product for client/server computing with a transaction representation located on each transactionally involved server |
US5958004A (en) * | 1997-10-28 | 1999-09-28 | Microsoft Corporation | Disabling and enabling transaction committal in transactional application components |
US6209018B1 (en) * | 1997-11-13 | 2001-03-27 | Sun Microsystems, Inc. | Service framework for a distributed object network system |
US6125363A (en) * | 1998-03-30 | 2000-09-26 | Buzzeo; Eugene | Distributed, multi-user, multi-threaded application development method |
US6298352B1 (en) * | 1998-07-23 | 2001-10-02 | Mci Communications Corporation | Apparatus and method for managing number sources |
US6330601B1 (en) * | 1998-12-22 | 2001-12-11 | Nortel Networks Limited | Management system for a multi-level communication network |
-
1999
- 1999-02-20 GB GB9903850A patent/GB2346990B/en not_active Expired - Fee Related
- 1999-06-25 US US09/339,378 patent/US6542922B1/en not_active Expired - Fee Related
-
2000
- 2000-02-17 JP JP2000039938A patent/JP3574030B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2346990B (en) | 2003-07-09 |
GB9903850D0 (en) | 1999-04-14 |
JP2000242608A (ja) | 2000-09-08 |
US6542922B1 (en) | 2003-04-01 |
GB2346990A (en) | 2000-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000242615A (ja) | サーバ・コンピューティング装置、操作方法および記憶装置 | |
JP4464525B2 (ja) | 作業負荷によって管理されるクライアント/サーバ・データ処理システムにおける集中アフィニティ維持装置および方法 | |
US6832238B1 (en) | Local transaction management | |
US6944666B2 (en) | Mechanism for enabling customized session managers to interact with a network server | |
US7415522B2 (en) | Extensible framework for transferring session state | |
US6101527A (en) | System for managing and processing distributed object transactions and process implemented by said system | |
US6038589A (en) | Apparatus, method and computer program product for client/server computing with a transaction representation located on each transactionally involved server | |
EP0707265A2 (en) | A system and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators | |
US7162721B2 (en) | Application-independent API for distributed component collaboration | |
JP3574030B2 (ja) | コンピューティング装置、操作方法およびプログラム記憶装置 | |
JP2001522086A (ja) | 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置 | |
JPH06332870A (ja) | オブジェクト指向コンピュータ環境における協調処理のためのオブジェクト・マネージャをリンクする方法及び装置 | |
JP3579353B2 (ja) | クライアント/サーバ・コンピューティング・システム、およびクライアント/サーバ処理方法 | |
US6345316B1 (en) | Apparatus, method and computer program product for client/server computing with the ability to select which servers are capable of creating transaction state data | |
JP3628577B2 (ja) | サーバ・データ処理装置、操作方法および記憶装置 | |
JP3548030B2 (ja) | サーバ処理装置及びサーバ処理方法 | |
EP0834807A1 (en) | Method and apparatus for performing efficient corba transactions | |
US6237018B1 (en) | Apparatus method and computer program product for client/server computing with improved transactional interface | |
Saleh et al. | The distributed object computing paradigm: concepts and applications | |
JP2001056767A (ja) | トランザクションサービス同期インターフェースを使用して、内部状態のクリーンアップを実施するための方法 | |
US6324589B1 (en) | Apparatus, method and computer program product for client/server computing with reduced cross-process calls | |
Almeida | Dynamic reconfiguration of object-middleware-based distributed systems | |
KR100318974B1 (ko) | 트리거링 이벤트에 기초한 코디네이터 트랜잭션 상태 객체 생성의 타이밍을 가진 클라이언트/서버 컴퓨팅을 위한 장치, 방법 및 컴퓨터 프로그램 제품 | |
US7395264B2 (en) | Promotable transactions with promotable single phase enlistments | |
US7752254B2 (en) | Propagating contexts between a first and second system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040406 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040531 |
|
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: 20040622 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040630 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |