JP3846852B2 - 分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品 - Google Patents
分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品 Download PDFInfo
- Publication number
- JP3846852B2 JP3846852B2 JP2001160623A JP2001160623A JP3846852B2 JP 3846852 B2 JP3846852 B2 JP 3846852B2 JP 2001160623 A JP2001160623 A JP 2001160623A JP 2001160623 A JP2001160623 A JP 2001160623A JP 3846852 B2 JP3846852 B2 JP 3846852B2
- Authority
- JP
- Japan
- Prior art keywords
- group
- processing group
- node
- message
- sequence number
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、全般的には分散システムに関し、具体的には、分散同期トランザクション・システムの管理に関する。
【0002】
【従来の技術】
関連出願の相互参照
この特許出願には、本願と同一の譲受人に譲渡される、本願と同一の日付に出願された米国特許出願番号第09/583677号明細書の主題に関する主題が含まれる。上記米国特許出願は、参照によってその全体を本明細書に組み込まれる。
【0003】
分散システムは、高スループットの作業もしくはシステムの連続的またはほぼ連続的な可用性が要求される情況を含むさまざまな情況で使用される、高可用性のスケーラブルなシステムである。
【0004】
分散システムの一種が、分散同期トランザクション・システムであり、これは、分散クライアントの代わりに分散同期トランザクションを実行するシステムである。分散同期トランザクションとは、クライアント・アプリケーションによって要求された時に実質的に即座に開始され、実質的にトランザクションの完了の直後にトランザクションの成功についてクライアント・アプリケーションに通知されるトランザクションである。
【0005】
現在、分散同期トランザクションを管理する機能があるが、これらの機能は、複雑になる傾向がある。したがって、分散システムでの同期トランザクションの管理を容易にする機能の必要がまだ存在する。
【0006】
【発明が解決しようとする課題】
本発明の目的は、複製された分散トランザクションの管理および使用を容易にすることである。
【0007】
【課題を解決するための手段】
分散コンピューティング環境の処理グループを管理する方法の提供を介して、従来技術の短所が克服され、追加の長所がもたらされる。この方法には、たとえば、処理グループの見込みのあるメンバの状態の少なくとも一部を、処理グループのグループ状態の少なくとも一部と比較するステップと、比較によって差が示される場合に、見込みのあるメンバの状態の少なくとも一部を更新するステップと、見込みのあるメンバを処理グループに参加(join)させるステップとが含まれる。
【0008】
上で要約した方法に対応するシステムおよびコンピュータ・プログラム製品も、本明細書で説明し、請求する。
【0009】
追加の特徴および長所は、本発明の技法を介して実現される。本発明の他の実施形態および態様を、本明細書で詳細に説明するが、これらは、請求される発明の一部とみなされる。
【0010】
【発明の実施の形態】
本発明の諸態様に従って、分散同期トランザクションを実行し、管理する。分散同期トランザクションは、分散コンピューティング環境の分散クライアント・アプリケーションによって使用される。
【0011】
本発明の諸態様が組み込まれ、使用される分散コンピューティング環境の一例を、図1に示し、本明細書で説明する。分散コンピューティング環境100には、たとえば、複数のLANゲート104を介して互いに結合される複数のフレーム102が含まれる。フレーム102およびLANゲート104を、下で詳細に説明する。
【0012】
一例では、分散コンピューティング環境100に、8つのフレームが含まれ、各フレームに、複数の処理ノード106が含まれる。一例では、各フレームに、16個の処理ノードが含まれる(各処理ノードが1つまたは複数のプロセッサを有する)。各処理ノードは、たとえば、UNIXベースのオペレーティング・システムであるAIXを実行するRISC/6000コンピュータである。1フレーム内の各処理ノードは、たとえば内部LAN接続を介して、フレームの他の処理ノードに結合される。さらに、各フレームは、LANゲート104を介して他のフレームに結合される。
【0013】
例として、各LANゲート104に、RISC/6000コンピュータ、LANへのコンピュータ・ネットワーク接続、またはネットワーク・ルータのいずれかが含まれる。しかし、これらは例にすぎない。他の種類のLANゲートがあることと、他の機構を使用してフレームを互いに結合することもできることが、当業者には明白であろう。
【0014】
図1の分散コンピューティング環境は、1つの例にすぎない。8つよりも多数または少数のフレームもしくはフレームあたり16個より多数または少数のノードを有することが可能である。さらに、処理ノードが、AIXを実行するRISC/6000コンピュータである必要はない。処理ノードの一部またはすべてに、異なる種類のコンピュータまたは異なるオペレーティング・システムを含めることができる。さらに、環境のノードまたはオペレーティング・システムの1つまたは複数が環境の他のノードまたはオペレーティング・システムと別個である異機種環境に、本発明を含め、使用することができる。そのような異機種環境のノードは、本明細書で説明するように、それらが共同作業し、互いにリソースを共用するという点で、相互運用する。
【0015】
分散コンピューティング環境のノードに関するさらなる詳細を、図2に関して説明する。1つの例では、分散クライアント・アプリケーション200が、複数のノード202上で稼動する。具体的に言うと、クライアント・アプリケーションのインスタンスが、複数のノードのそれぞれで実質的に同時に稼動し、この複数のノードには、この特定の例では3つのノードが含まれる(当業者は、クライアント・アプリケーションが、1つだけのノードを含む、環境の任意の数のノードで稼動できることを諒解するであろう)。
【0016】
一実施形態では、クライアント・アプリケーション・インスタンスが、分散同期トランザクション・システム(DSTS)に結合され、これによって、アプリケーション・インスタンスが、本発明の態様に従って、トランザクションの同期複製に参加できるようになる。分散同期トランザクション・システムを使用することによって、クライアント・アプリケーション・インスタンスが、そのアプリケーションの他のインスタンスの直接の知識を有しない場合であっても、クライアント・インスタンスが、トランザクションの同期複製に参加することができる。分散同期トランザクション・システムには、1つまたは複数のノードで稼動する1つまたは複数のDSTSインスタンス(たとえば、コンピュータ・プログラム)204が含まれる。一例では、DSTSインスタンスが、分散トランザクションへの参加に関心を持つクライアント・アプリケーション・インスタンスを有するノードのそれぞれで実行される。各DSTSインスタンスは、1つまたは複数のクライアント・アプリケーションの1つまたは複数のインスタンスに結合される。
【0017】
DSTSインスタンスが、ノードのメモリにロードされ、実行される時に、そのDSTSインスタンスは、対応する1つまたは複数のクライアント・アプリケーション・プロセスにサービスするサーバ・プロセスとして認められる。クライアント・アプリケーションの代わりに分散同期トランザクションを実行するのは、DSTSシステムである。トランザクションは、クライアントによって要求される時に、DSTSサーバによって実質的に即座に開始される。さらに、クライアントは、トランザクションの完了時に、トランザクションの結果(たとえば、成功、失敗)について実質的に即座に通知される。
【0018】
分散同期トランザクションの実行に参加する1つまたは複数のクライアント・アプリケーション・インスタンスの集合を、クライアント・アプリケーション・インスタンスの複製されたグループと呼称する。このグループは、分散システムの他の形態のグループとは異なる。というのは、複製されたグループのメンバが、お互いの直接の知識を有しないからである。そうではなくて、このグループは、クライアント・アプリケーション・インスタンスが、1つまたは複数の他のクライアント・アプリケーション・インスタンスに複製される更新動作の流れを方向転換する時に、暗黙のうちに形成される。
【0019】
具体的に言うと、クライアント・アプリケーションは、動作の流れを方向転換し、これによって、その永続的(保管される)状態または実行時(保管されない)状態が変更される。これらの更新動作は、書込動作として分類される。クライアント・アプリケーションの状態を変更しない他のトランザクションを、照会または読取トランザクションと呼ぶことができる。本発明の一態様によれば、クライアント・アプリケーションは、分散同期トランザクションとして書込動作を実行し、これによって、クライアント・アプリケーションの各コピーに、一貫性のある状態または同一の状態が与えられる。そのような機能によって、アプリケーションのどのコピーでも、他の複製のいずれかに照会をリダイレクトする必要なしに、その状態に対する照会(読取動作)に応答することが可能になる。言い換えると、クライアント・アプリケーションは、DSTSサーバを使用せずにローカルに読取動作をサービスすることができ(図3を参照されたい)、書込動作は、クライアント・アプリケーションの他のインスタンスに複製され、したがって、下でさらに説明するように、DSTSが使用される(図4を参照されたい)。このアーキテクチャは、読取集中であり、低い割合の書込動作を示すシステムに最適であるが、これに制限はされない。
【0020】
更新動作の流れは、クライアント・アプリケーションによって、たとえばクライアント・アプリケーションによって使用されるDSTSプロトコルを介して、方向転換される。本発明の一態様によるこのプロトコルの特徴の1つに、1つまたは複数の処理グループへのメンバシップが含まれる。処理グループ500(図5)には、1つまたは複数のメンバ502が含まれる。各メンバは、この例ではDSTSサーバである。したがって、複製されたグループのクライアント・アプリケーション・インスタンスごとに、対応するDSTSサーバが所与の処理グループ(グループとも称する)にある。たとえば、複製されたグループに、クライアント・アプリケーション・インスタンスAおよびBが含まれる場合には、処理グループにDSTSサーバAおよびBが含まれ、これらが、それぞれアプリケーション・インスタンスAおよびBに結合される。これによって、処理グループが、複製されたグループのクライアント・アプリケーションに関するトランザクションを複製できるようになり、複製をこれらのクライアント・アプリケーションにとって透過的にすることができる。
【0021】
処理グループの各メンバは、グループの状態データの一貫性のあるビューを保証される。このデータの一貫性が保たれるのは、このデータが、明確に定義されたグループ・プロトコルのみによって更新されるからである。プロトコルの例には、グループの活動化およびグループへの参加を含むグループに対する許可と、グループからの排除が含まれ、このそれぞれを、下で詳細に説明する。さらに、処理グループの管理に関する詳細が、参照によってその全体を本明細書に組み込まれる米国特許第5748958号明細書に記載されている。
【0022】
グループに対する許可に関連する論理の一実施形態を、図6ないし9に関して説明する。具体的に言うと、図6は、グループの活動化に用いられる構成要素の例を示す図であり、図7ないし9は、論理の実施形態を示す図である。最初のグループ活動化の場合には、処理グループにメンバが存在しない。グループは、前に定義されたものと仮定されるが、グループのコピー(すなわちDSTS)のどれもが、現在は実行されていない。DSTSコピーは、クライアント・アプリケーションによって接続される時に実行を開始する。
【0023】
一例では、ステップ600(図6、図7)で、クライアント・アプリケーション602が、初期化メッセージを介してDSTSサーバ604に接続する。初期化メッセージは、DSTSシステムに接続するために、クライアント・アプリケーション602からDSTSサーバ604に送られる。具体的に言うと、一例では、クライアント・アプリケーション・インスタンスが、そのクライアント・アプリケーション・インスタンスと同一のノードにあるDSTSサーバに接続する。初期化メッセージの一例を、図10に関して説明する。
【0024】
初期化メッセージ700には、たとえば、要求される動作の種類(たとえば初期化)を示す動作コード702と、要求を発行したクライアント・アプリケーションの名前704が含まれる。DSTSシステムは、アプリケーション名を使用して、同一の名前を有するアプリケーションの他のインスタンス(すなわち、複製されたグループのメンバ)にトランザクションを伝搬させる。
【0025】
図6および図7に戻ると、このメッセージに応答して、ステップ606(図7)で、DSTSサーバが、グループ(クライアント・アプリケーションの名前704(図10)によって指定される)への参加を提案する。グループへの参加を提案する際に、DSTSサーバは、永続的ストレージ608(図6)からグループ状態を読み取る。グループ状態610には、たとえば、グループ・シーケンス番号および活動化状況が含まれる。問合せ612(図7)で、グループ状態がアクティブの場合には、ステップ614で、下で説明するように、参加するコピーが、参加プロトコルを実行する。そうでない場合には、状態が非アクティブであり、ステップ616で、コピーが、下で定義される参加プロトコルを実行せずに直接にグループに参加することができる。
【0026】
DSTSサーバがグループに参加する時に、ステップ618で、コピーが、グループのシーケンス番号をそれ自体のシーケンス番号と比較する。グループのシーケンス番号が、それ自体のシーケンス番号より小さい場合には、ステップ620で、コピーが、グループのシーケンス番号を更新する。その後、またはグループのシーケンス番号がコピーのシーケンス番号以上である場合に、問合せ622で、メンバの定数(この例では)に達したかどうかに関する判定を行う。
【0027】
定数に達していない場合には、処理は、別のメンバについて、少なくとも定数に達するまで、ステップ600で継続される。定数のメンバがグループに参加する時に、処理グループのメンバであるコピーが、定数に達したことの知識を有する。この時点で、ステップ624で、グループのシーケンス番号に、メンバの最も高いインカーネーション(incarnation)をセットする。この点に達した時にグループのシーケンス番号と一致するシーケンス番号を有するメンバが、ステップ626で、グループ活動化メッセージを送ることによって活動化プロトコルを開始する。グループ活動化メッセージによって、複数フェーズ・プロトコルが開始される。
【0028】
活動化の第1フェーズでは、ステップ628(図8)で、グループのメンバが、グループ活動化メッセージを受け取り、このグループ活動化メッセージには、そのメッセージを送ったメンバのノード・アドレスが含まれる。その後、ステップ630で、現在のグループのシーケンス番号より小さいシーケンス番号を有する現在のグループ・メンバが、活動化メッセージの送信側に、グループのシーケンス番号に関連するグループ状態のコピーを要求する。これらのメンバは、ステップ632で、新しいグループ状態を使用してそれ自体を再初期化し、その後、ステップ634で、グループ活動化の第2フェーズに継続することを提案する。この時点で初期化に失敗したメンバは、プロトコルの打切りに投票する。
【0029】
グループのシーケンス番号と一致するシーケンス番号を有するメンバも、第2フェーズに進むことを提案する。すべての現在のメンバが第2フェーズに進むことを提案する(どれもが打切りを提案しない)場合に、第2フェーズが開始される。
【0030】
グループ活動化の第1フェーズが完了する際に、ステップ636(図9)で、処理グループの現在のメンバが、メンバの過半数が維持されたことを検証する。さらに、各メンバは、現在、同一の一貫性のあるシーケンス番号および分散状態のコピーを有する。
【0031】
ステップ638で、メンバが、たとえば1を足すことによって、グループ・シーケンス番号を変更する。その後、ステップ640で、メンバが、新しいシーケンス番号をグループ状態に保管し、プロトコルの終了を提案する。この段階で障害を発生したメンバは、プロトコルの打切りを提案する。
【0032】
プロトコル完了では、問合せ642で、現在のメンバのどれもが打ち切らない場合に、グループが、グループの現在のメンバが同一の一貫性のあるグループ状態およびシーケンス番号を有することと、新しいシーケンス番号がグループの数の過半数によって保管されていることの保証を得る。その後、ステップ644で、グループ状態をアクティブに変更する。
【0033】
メンバがアクティブ・グループに参加するたびに、そのメンバが、複数フェーズ・グループ許可プロトコルを開始するが、その一実施形態を、図11ないし13に関して説明する。具体的に言うと、図11は、参加処理の構成要素を示す図であり、図12および図13は、その論理の一実施形態を示す図である。プロトコルの第1フェーズでは、ステップ900(図12)で、参加するメンバ(図11の800)が、参加提案メッセージを、永続的ストレージから取り出したシーケンス番号、または、シーケンス番号を取り出すことができなかった場合には負の無限大と共に送る。例として、シーケンス番号ならびに他のグループ状態は、状態が保管されたディスクが壊れているか他の理由で使用可能でない時、または、これが実際に所与のプロセッサの下でそのメンバ・コピーが初めて実行される時である時に使用可能でない可能性がある。
【0034】
参加提案メッセージの受取に応答して、ステップ902で、グループの他のメンバ(図11の802)が、分散データに対する更新を行うことを止める。一実施形態では、更新を止めるために、グループの各メンバが、それに対応するクライアント・アプリケーション・インスタンスに静止メッセージを送る。静止メッセージの一例を、図14に関して説明する。
【0035】
静止メッセージ1000には、たとえば、これが静止動作であることを指定する動作コード1002が含まれる。静止メッセージによって、アプリケーションの大域的状態が安定するように、クライアント・アプリケーションが、更新要求(たとえば下で説明する複製要求メッセージ)を送るのを止めるように要求される。
【0036】
その後、ステップ904で、アプリケーションの各コピーが、そのアプリケーションの現在の状態のスナップショットを作り、この状態を永続的ストレージに保管するように要求される。この要求は、アーカイブ・メッセージをアプリケーションのコピーに送ることによって実行される。アーカイブ・メッセージの一例を、図15に関して説明する。一例では、アーカイブ・メッセージ1100に、これがアーカイブ要求であることを示す動作コード1102が含まれる。
【0037】
メンバのすべてが、参加するメンバを含めて、参加提案のコピーを受け取る。問合せ906で、参加するメンバが、提案のシーケンス番号を、現在のグループ・メンバシップまたは他のメンバがグループの一部でない場合には負の無限大と比較する。参加するメンバのシーケンス番号が、グループのシーケンス番号より小さい場合には、問合せ908で、グループがアクティブであるかどうかに関する判定を行う。一例では、この判定は、グループ状態(図11の804)の活動化状況を検査することによって行われる。
【0038】
グループがまだアクティブである場合には、ステップ910で、参加するメンバが、より大きいシーケンス番号を有するメンバの1つに連絡し、そのメンバのノードから分散システムの永続的状態を取り出し、適当な記憶域に移動する。具体的に言うと、一例では、DSTSシステムが、アーカイブ解除(dearchive)メッセージを使用して、ストレージからスナップショットを取り出し、アプリケーションの古くなったコピーに最新の更新されたスナップショットをロードするように要求する。
【0039】
アーカイブ解除メッセージの一例を、図16に関して説明する。アーカイブ解除メッセージ1200には、これがアーカイブ解除メッセージであることを示す動作コード1202と、データが取り出される場所を示すアーカイブ位置フィールド1204が含まれる。
【0040】
アーカイブ解除メッセージの発行のほかに、DSTSサーバは、ハンドル列挙要求メッセージ(enumerate handles message)も発行し、このメッセージは、たとえば、実質的にクライアント・アプリケーションが永続的状態のスナップショットをロードした直後に実行される。ハンドル列挙要求メッセージ1300(図17)には、たとえば、これがハンドル列挙要求メッセージであることを示す動作コード1302が含まれる。このメッセージを受け取った後に、クライアント・アプリケーションは、ハンドル列挙応答メッセージ(handle enumeration message)をDSTSシステムに返し、DSTSシステムは、アプリケーションが作成したリソースの名前をリソース・ハンドルにマッピングする。
【0041】
ハンドル列挙応答メッセージの一例を、図18に示す。これには、たとえば、これがハンドル列挙応答メッセージであることを示す動作コード1402と、リソース名およびハンドルの1つまたは複数の対を含むリソース・ハンドル・マップ1404が含まれる。これらのハンドルは、たとえば、下で説明するように、クライアント・アプリケーションの状態の変更についてサード・パーティ・アプリケーションに通知し、同一のリソースに対する同時更新要求を直列化するのに使用される一意の名前である。
【0042】
スナップショットをロードすることによってそれ自体を成功裡に再初期化した後に、新しいコピーは、DSTSシステムへの参加を許可され、再開メッセージがすべてのコピーに送られ、DSTSシステムが通常動作を再開することができるようになる。さらに、ステップ912で、新しいコピーが、参加の第2フェーズの開始を提案する。
【0043】
問合せ980に戻って、グループが非アクティブになる場合には、参加するメンバが、ステップ916でそのシーケンス番号が古いことに注目し、ステップ918で、次のアクションを行うために活動化メッセージを待つ。参加するメンバは、参加の第2フェーズに加わらない。
【0044】
問合せ906に戻って、参加するメンバのシーケンス番号がグループのシーケンス番号と等しい場合には、グループが非アクティブである。この事実は、グループ活動化プロトコルによって(たとえばこの例では定数ポリシ)および定数実施の特性によって与えられる。したがって、ステップ918で、参加するメンバが、活動化メッセージが効力を生じるのを待ち、参加の第2フェーズはない。同様に、問合せ906で、参加するメンバのシーケンス番号の方が大きい場合には、やはりそのグループが非アクティブであることになり、したがって、ステップ918で、参加するメンバが活動化メッセージを待つ。
【0045】
参加するメンバが、第2フェーズに進むことを提案した場合、そのメンバは、新しいシーケンス番号および分散状態を有する。したがって、メンバ(参加するメンバを含む)が、ステップ922(図13)で、たとえば1を足すことによって、グループのシーケンス番号を変更する。メンバは、その後、ステップ924で、新しいシーケンス番号およびグループ状態を保管し、さらに、ステップ926で、プロトコルを終了することを提案する。この段階で障害を発生したメンバは、プロトコルの打切りを提案する。打ち切るメンバがない場合には、このグループは、グループの現在のメンバが同一の一貫性のあるグループ状態およびシーケンス番号を有することと、新しいシーケンス番号がグループのメンバの過半数について保管されたことを保証される。
【0046】
上記のほかに、メンバを、グループから排除することができる。具体的に言うと、ノードが障害を発生するたびに、またはノード上で実行されるDSTSコピーが障害を発生するたびに、ステップ1500(図19)で、グループの残存メンバに、メンバが障害を発生したことが通知される。問合せ1502で、グループが非アクティブである場合には、ステップ1504に進み、処置を講じない。さらに、問合せ1506で、グループがアクティブであるが、メンバの過半数を有しない場合には、処置を講じない。
【0047】
しかし、グループがアクティブであり、問合せ1506で過半数が保たれている場合には、ステップ1507で、各メンバが分散状態に対するそれ以上の更新を停止する。さらに、ステップ1508で、各メンバが、たとえば1を足すことによって、グループ・シーケンス番号を変更し、ステップ1510で、新しいシーケンス番号およびグループ状態を保管する。その後、ステップ1512で、メンバがプロトコルの終了を提案する。この段階で障害を発生したメンバは、プロトコルの打切りを提案する。
【0048】
打ち切るメンバがない場合には、グループは、グループの現在のメンバが同一の一貫性のあるグループ状態およびシーケンス番号を有することと、新しいシーケンス番号がグループのメンバの過半数によって保管されたことを保証される。
【0049】
DSTSシステムは、DSTSサーバの定数(過半数)が使用可能である時または失われた時に、たとえば定数通知メッセージを使用することによって、クライアント・アプリケーション・インスタンスに通知する。一例では、定数通知メッセージ1600(図20)に、動作コード1602と、グループが定数を有するかどうかを示す定数情報1604が含まれる。
【0050】
本明細書で説明するように、処理グループのメンバは、分散同期トランザクションを複製するのに使用され、この分散同期トランザクションは、グループのメンバに結合されたクライアント・アプリケーション・インスタンスによって開始される。クライアント・インスタンスとグループのサーバ・メンバの間の通信を容易にするために、さまざまなメッセージが使用される。一例では、これらのメッセージに(上で説明したメッセージのほかに)、複製要求メッセージ、複製コールバック・メッセージ、複製コールバック結果メッセージ、複製完了メッセージ、およびシャットダウン・メッセージが含まれ、これらのそれぞれを下で説明する。
【0051】
複製要求メッセージの一例を、図21に関して説明する。複製要求メッセージ1700は、分散トランザクションを開始するメッセージである。一例では、これに、これが複製要求メッセージであることを示す動作コード1702、リソースが作成される場合には作成される新しいリソース名のリスト1704、クライアント・アプリケーションの0個以上の排他リソースを指定する排他アクセス・セット1706、クライアント・アプリケーションの0個以上の共用リソースを指定する共用アクセス・セット1708、複製中に守らなければならない規則(たとえば、ある作業について進行するのに必要なグループの定数)を与える複製ポリシ1710、複製され実行されるトランザクションを指定する要求1712(たとえば作成または更新の要求)、および要求のサイズを示す要求サイズ1714が含まれる。
【0052】
複製要求メッセージは、単一のクライアント・アプリケーション・インスタンス(イニシエータとも称する)によって、DSTSシステムのサーバ・プロセスに送られる。メッセージの受取の際(またはその後)に、サーバ・プロセスは、このメッセージを、分散コンピューティング環境の1つまたは複数の他のサーバ・プロセスに配布する。具体的に言うと、一例では、メッセージは、処理グループの他の現在のサーバ・プロセスのすべてに送られる。
【0053】
これに応答して、サーバ・プロセスのそれぞれが、クライアント・アプリケーションの対応するインスタンス(ピア)に複製コールバック・メッセージを送る。複製コールバック・メッセエージの一例を、図22に関して説明する。複製コールバック・メッセージ1800には、たとえば、これが複製コールバック・メッセージであることを示す動作コード1802、新しいリソースが作成される場合に、新しいリソース名の配列1804、クライアント・アプリケーションの0個以上の排他リソースを指定する排他アクセス・セット1806、クライアント・アプリケーションの0個以上の共用リソースを指定する共用アクセス・セット1808、複製され実行されるトランザクションを指定する要求1810、および要求のサイズを示す要求サイズ1812が含まれる。
【0054】
上記のほかに、複製コールバック結果メッセージが、要求されたトランザクションが処理された後に、クライアント・アプリケーションからDSTSサーバに送られる。複製コールバック結果メッセージの一例を、図23に関して説明する。複製コールバック結果メッセージ1900には、これが複製コールバック結果メッセージであることを示す動作コード1902、新しいリソースがある場合に、そのハンドル(たとえば一意の識別子)と共に新しいリソース名の配列1904、変更されたリソースのハンドルを含む変更済みリソース・セット1906、および削除されたリソースのハンドルを含む削除済みリソース・セット1908が含まれる。
【0055】
サーバ・プロセスは、複製コールバック結果を受け取った後に、複製完了メッセージ2000(図24)を転送することによって、トランザクションが完了したことを検証する。一例では、複製完了メッセージ2000に、これが複製完了メッセージであることを示す動作コード2002およびトランザクションが成功裡に実行されたかどうかを指定する動作状況2004が含まれる。
【0056】
システムがシャット・ダウンされる場合には、DSTSシステムは、システムがシャット・ダウンされようとしていることをクライアント・アプリケーションのコピーに通知するシャットダウン・メッセージを使用する。一例では、シャットダウン・メッセージ2100(図25)に、シャットダウンが実行されることを示す動作コード2102が含まれる。このメッセージは、クライアント・アプリケーションのコピーが安全シャットダウン・プロシージャを実行できるようにし、保留中のすべてのトランザクションを終了させるという目的を有する。クライアント・アプリケーションは、シャットダウン・プロセスを終了する時に、DSTSシステムに、シャットダウン肯定応答を用いて応答する。
【0057】
上で説明した複製メッセージの使用を、図26および図27に関して下でさらに説明する。図26を参照すると、複製要求メッセージ2200が、単一のクライアント・アプリケーション・インスタンス2202によって、DSTSシステムのサーバ・プロセス2204に送られる。サーバは、複製要求メッセージを処理グループの他のサーバ2208aおよび2208bに配布する2206。サーバのそれぞれは、この例では、複製コールバック・メッセージ2210を、それに対応するクライアント・アプリケーションのインスタンスに送る。たとえば、サーバ・プロセス2204は、複製コールバック・メッセージ2210を、ノード1に配置されたクライアント・アプリケーション・インスタンスに送る。同様に、サーバ2208aは、複製コールバック・メッセージをノード2に配置されたクライアント・アプリケーション・インスタンスに送り、以下同様である。
【0058】
その後、クライアント・アプリケーション・インスタンス2202(図27)の各コピーが、要求されたトランザクションを処理し、コールバックをコミットし、複製コールバック結果メッセージ2212をそれに対応するサーバに送る。その後、コールバック結果メッセージのコピーが、非イニシエータ・クライアントのサーバ(たとえばサーバ2208a、サーバ2208b)から要求イニシエータのサーバ(たとえば2208)に転送される。
【0059】
その後、要求イニシエータのDSTSサーバ(たとえばサーバ2208)が、トランザクションがアプリケーションのコピーの過半数によって完了されたことを検証する。過半数は、2によるサーバの数の整数除算、小数部分の破棄、および結果への1の加算として定義される。たとえば、3つのクライアント・インスタンスの過半数は、3/2+1すなわち2である。クライアント・アプリケーションの過半数が、トランザクションの実行に成功する場合、トランザクションがコミットされ、複製完了メッセージが、サーバ2208からそれに対応するアプリケーション・インスタンスに転送される。そうでない場合には、トランザクションが打ち切られる。アプリケーションのコピーの過半数によるトランザクションの完了によって、動作の永続性が保証される。トランザクションを実行することができないアプリケーションのコピーは、上で説明したように、DSTSグループから追い出される。
【0060】
本発明の一態様によれば、複製された分散トランザクションは、2フェーズ・コミット・プロトコルを使用してコミットされる。さらに、トランザクションは、サーバの1つのコピーによってコミットされる時に、処理グループの他のコピーによってもコミットされる。
【0061】
同期式の複製されたトランザクションのそれぞれに、1組のトークン(ハンドル)が関連し、これらに対して、排他アクセスまたは共用アクセスのいずれかが、トランザクションの処理中に要求される。トランザクションは、開始の前にアクセス・トークンに関するロックを得ることを必要としないが、同一の排他アクセス・トークンにアクセスするトランザクションは、直列化される。すなわち、処理グループのメンバは、別のトランザクションのコミットを許可される前に、1つのトランザクション(同一のトランザクション)をコミットする。
【0062】
本発明の一態様によれば、同一のリソースを使用するトランザクションを並列に初期化できるようにする直列化技法が提供される。トランザクションのイニシエータが、排他使用および共用使用についてトランザクションが必要とするトークン(たとえばハンドル)をリストする。代替案として、中央トークン許可機構(サーバ)を使用することができる。イニシエータは、トランザクションを開始する前に、中央トークン許可機構からトークンを得る。しかし、大多数の場合に、トークンは衝突せず、したがって、トークン許可サーバ手法に対する大幅な性能の改善がある。しかし、トークンが実際に衝突する場合には、処理サーバ・グループの各メンバのデータの一貫性を保つために、本発明の直列化技法が実行される。
【0063】
たとえば、「A」というラベルを付けられたトークンへの排他アクセスを必要とする2つのトランザクションが同時に開始されると仮定する。さらに、サーバ1が、トランザクションT1を開始し、サーバ2が、トランザクションT2を開始すると仮定する。T1は、A=1をセットし、T2は、A=2をセットすると仮定する。さらに、処理グループ内に、これらのトランザクションを処理する3つのメンバがあると仮定する。これらのトランザクションは同時に開始されるので、その順序は重要でないが、すべてのメンバによって同一の順序で実行される。
【0064】
同期式に複製されたトランザクションは、2フェーズ・コミット・プロトコルを使用して実行される。したがって、データが、コミット準備(PTC)フェーズと称する第1フェーズで伝送され、トランザクションが、コミット(CMT)フェーズと称する第2フェーズでコミットされる。2フェーズ・コミットは、並列に進行することができ(すなわち、トランザクションT1およびT2を並列に開始することができる)、トランザクションの複製をより効率的にすることができる。しかし、2フェーズ・コミット・プロトコルのある点で、トランザクションを直列化しなければならない。そうでない場合には、下で説明するように問題が生じる。
【0065】
2フェーズ・コミットが、直列化なしで並列に進行することを許可される場合には、下に示すように一貫性のない結果につながる可能性がある。
サーバ1 サーバ2 サーバ3
PTC(T1) PTC(T2) PTC(T2)
PTC(T2) PTC(T1) PTC(T1)
//**サーバが、コミット・フェーズに進む前に、PTCが受け取られたことの肯定応答を待つ
CMT(T1) CMT(T1) CMT(T2)
CMT(T2) CMT(T2) CMT(T1)
【0066】
ここでの問題は、サーバ1およびサーバ2が、T1およびT2を実行し、これらのサーバでA=1がセットされることである。しかし、サーバ3は、T2およびT1を実行し、最終結果としてA=2をセットする。「A」の値は、処理グループ内で一貫性がなく、これは、同期式に複製されるトランザクション・システムでは許容可能ではない。
【0067】
この問題を克服するために、2フェーズ・コミット処理の第1フェーズ(PTCフェーズ)は、並列に進行することを許可され、その後、コミット・フェーズが、本発明の一態様に従って、PTCで送られたトークン情報に基づいて直列化される。PTCプロトコルは、各トランザクションの排他/共用アクセスにどのトークンが必要であるかに関する情報を提供するように拡張される。割当(A=1)が排他アクセスを必要とするので、トークン「A」が、T1およびT2の両方のPTCで排他アクセスに関してリストされる。
【0068】
2フェーズ・コミット・プロトコルに関するさらなる詳細を、図28および図29に関して説明する。具体的に言うと、2フェーズ・コミット・プロトコルの第1フェーズすなわちコミット準備フェーズの一例を、図28に関して説明し、第2フェーズすなわちコミット・フェーズの一例を、図29に関して説明する。
【0069】
図28を参照すると、まず、PTCを実行しなければならないことを示す複製要求メッセージ2300が、クライアント・アプリケーション・インスタンス2302からサーバ2304に送られる。PTC要求の受取に応答して、サーバ2304が、PTCメッセージ2306を、グループの他のサーバ(たとえばサーバ2308a、2308b)に送る。一例では、PTCメッセージに、複製要求メッセージと同一のフィールドならびに要求の識別子が含まれる。サーバ2304は、PTCを開始しようとしているので、これをプロトコル・イニシエータと呼称する。
【0070】
その後、各非イニシエータ・サーバが、PTC肯定応答(PTC_ACK)メッセージ2310を用いてPTC要求に応答する。具体的に言うと、サーバ2308aが、肯定応答を送り、この肯定応答には、動作コードならびに要求識別子が含まれる。同様に、サーバ2308bが、肯定応答を送るが、これは、すべての衝突を直列化した後に限られる。すなわち、この例では、サーバ2308bが、グループのコーディネータとして選択される。したがって、サーバ2308bは、受け取るPTC要求のすべてを監視し、衝突する要求を直列化してPTC_ACKメッセージ2310を送る。サーバ2308bが、複数のPTCが同一の排他アクセス・リソースに関して発行されること(または共用されるリソースと衝突する排他的要求)に気付いた場合に、グループ・コーディネータが、それらのうちの1つをまずコミットすることを選択し、更新が完了したことの確認を待ち、その後、第2の要求をコミットし、以下同様である。
【0071】
プロトコル・イニシエータ(たとえばサーバ2304)が、他のサーバからPTC_ACKメッセージを受け取る。このプロトコル・イニシエータは、所与のメッセージに関するPTC_ACKメッセージのすべてを受け取った後に、コミット・メッセージを送る、すなわち、2フェーズ・コミット・プロトコルの第2フェーズを開始する。
【0072】
2フェーズ・コミット・プロトコルの第2フェーズの一例を、図29に関して説明する。まず、プロトコル・イニシエータ2400が、グループのメンバのすべてからPTC_ACKメッセージを受け取り、処理グループの他のサーバのそれぞれにコミット・メッセージ2402を送る。グループの各サーバは、それに対応するアプリケーションに複製コールバック・メッセージ2404を送って、アプリケーションに動作をコミットするように要求する。動作をコミットした後に、複製コールバック結果メッセージ2406が、クライアント・アプリケーションからDSTSサーバに送られる。
【0073】
その後、コミット肯定応答メッセージ2408が、各DSTSサーバからプロトコル・イニシエータ(たとえばプロトコル・イニシエータ2400)に送られる。プロトコル・イニシエータは、グループのすべてのメンバからコミット肯定応答メッセージを受け取り、メンバの少なくとも過半数が要求を完了した場合に、複製完了メッセージ2410を開始クライアントに送る。
【0074】
本発明の一態様によれば、この暗黙の直列化が、明示的なリソースのロック・メッセージを含めて余分なメッセージなしに可能にされる。その代わりに、処理グループのメンバが、PTCメッセージに関するトランザクションを開始する。処理グループのメンバが、他のメンバがPTCメッセージを受け取ったことの肯定応答を待つが、この肯定応答をPTC_ACKメッセージと称する。開始メンバは、PTC_ACKのすべてを受け取った時に、コミット・メッセージを発行することができる。したがって、並列トランザクションは、グループ・コーディネータがPTCフェーズで衝突を検出した場合に、グループ・コーディネータにその肯定応答を保持させることによって直列化される。
【0075】
したがって、前の例で示した衝突の問題は、次のように解決される(サーバ3がコーディネータであると仮定する)。
【0076】
分散トランザクションの2フェーズ・コミット処理(または他の処理)中に、障害が発生する可能性がある。そのような障害が発生した場合に、本発明の一態様に従って、そこから回復するための手順が適所にある。一例では、DSTSシステムの透過的回復が実行され、保留中のトランザクションは、回復処理中に全く失われない。一例として、保留中のトランザクションは、DSTSグループの複数のメンバに障害が発生した場合であっても、トランザクションの再ポストを必要とせずに完了される。
【0077】
本発明の一態様によれば、DSTSグループのメンバが障害を経験する場合に保留中のトランザクションの完了を可能にする機構が提供される。DSTSシステムは、システムの1つまたは複数のメンバ・コピーの障害から回復することができるので、このシステムを、高可用性であるという。この問題に対する解決策は、トランザクションが同期式に完了することがDSTSシステムによって保証される場合であっても、2フェーズ・プロトコルのメッセージの到着が同期式でないという事実によって複雑になる。すなわち、すべてのメンバが、PTCメッセージおよびCMTメッセージを同時には受け取らず、その結果、ある時点で、各メンバが、1つのプロトコルに関するメッセージの異なる組を受け取っている可能性があり、メッセージが異なる順序で受け取られた可能性がある。
【0078】
たとえば、図30の、通常動作中に取られたDSTSのスナップショットのT=4を検討されたい。その点で、各サーバは、下記のメッセージの組を受け取っている。
サーバ1 サーバ2 サーバ3
PTC(A) PTC(B) PTC(C)
PTC(B) PTC(A) PTC(A)
CMT(A) PTC(C)
【0079】
ここで、サーバ2がT=4で障害を発生したと仮定する。
【0080】
障害の場合に、残存しいるメンバの1つが、グループ・コーディネータとして選ばれる。この例では、サーバ1がグループ・コーディネータとして選ばれると仮定する。グループ・コーディネータは、本明細書で説明するように回復に参加する。
【0081】
回復機構に関連する論理の一実施形態を、図31に関して説明する。当初、ステップ2600で、各残存メンバが、最後の同期化点以降の、PTCが観察されたトランザクション識別子のリストをグループ・コーディネータに送る。この例では、サーバ3がPTC(C)およびPTC(A)を送る。その後、ステップ2602で、グループ・コーディネータが、他の残存メンバによって送られたPTC識別子をそれ自体のPTCのリストと比較する。この例では、サーバ3からのリストを、{PTC(B)、PTC(A)}と比較する。
【0082】
次に、ステップ2604で、グループ・コーディネータが、他のメンバによって報告されたがコーディネータによって受け取られていないメッセージに関する実際のPTCメッセージを要求する。たとえば、グループ・コーディネータであるサーバ1は、サーバ3にPTC(C)メッセージを要求する。この時点で、グループ・コーディネータは、最後の同期化点以降のすべての保留中のトランザクションの知識を有する。この時に、グループ・コーディネータは、すべての保留中のプロトコルに関するプロトコル・イニシエータの役割を引き受ける。グループの他のメンバは、障害が発生した時にシステムが回復モードに入るので、プロトコル・イニシエータの役割が変更されたことを知っている。
【0083】
ステップ2606で、グループ・コーディネータが、そのPTCリストとステップ2600で受け取った他のPTCリストの和集合に含まれるすべてのPTCメッセージについて、他の残存メンバにPTCメッセージを送る。たとえば、グループ・コーディネータは、{PTC(A)、PTC(B)、PTC(C)}を送出する。ステップ2608で、残存グループ・メンバが、保留中のPTCを受け取り、まだ受け取っていないPTCを保管する。たとえば、サーバ3が、PTC(B)を保管する。
【0084】
その後、ステップ2610で、残存メンバが、受け取ったPTCのそれぞれについてPTC_ACKメッセージを送る。PTC_ACKが、各PTCについてグループ・メンバに関して受け取られる際に、ステップ2612で、グループ・コーディネータが、コミット(CMT)メッセージを送る。ステップ2614で、残存メンバが、コミット・メッセージを受け取る際に、CMT_ACKメッセージを送る。保留中のトランザクションに関してCMT_ACKSが受け取られる時に、DSTSシステムは、もう1つの同期点(すなわち、保留中のトランザクションなし)に達する。
【0085】
有利なことに、2フェーズ・コミット処理の詳細が、クライアント・アプリケーションから隠蔽される。具体的に言うと、クライアント・アプリケーションは、コミット処理にかかわるアプリケーションの他のコピーがあることを知らない。
【0086】
さらに、有利なことに、上で説明した回復技法は、複数の障害を扱うことができる。すなわち、この技法は、グループ・メンバが障害発生を継続する場合であっても、回復がすでに進行中の場合であっても、たとえばグループ・メンバの定数が維持される限り、成功裡にトランザクションを完了することができる。障害に気付いた時に、この技法が先頭から再始動される。しかし、トランザクションのイニシエータが、PTCメッセージを送出する前に障害を発生する場合、またはPTCメッセージの宛先の過半数のすべてが、メッセージを受け取った後に障害を発生する場合には、トランザクションが失われる可能性がある。この回復技法は、ロールバック動作をサポートしないアプリケーションであっても、すべてのタイプのアプリケーションに適用可能である。さらに、この回復技法は、非共用分散システム用の有用な通信プロトコルである。
【0087】
上記のほかに、障害を発生したメンバに、観察される最後の同期点を検出させることと、DSTSシステムの最新の同期点に達するために必要なトランザクションのデルタを現在のグループから取得することによって、障害を発生したメンバがグループに再参加することができる。
【0088】
一実施形態では、グループ・メンバシップおよびグループ状態が、DSTSシステムの回復に使用される。
【0089】
上で説明したのは、複製された分散同期トランザクションの管理のさまざまな態様である。有利なことに、複製の詳細が、クライアント・アプリケーションから隠蔽される(たとえば、2フェーズ・コミットの投票がなく、グループ・プロトコルへの参加がない)。本発明の1つまたは複数の態様は、同種システムならびに異機種システムに適用可能である。一例として、異機種環境のシステムのインターオペラビリティを促進する機能が提供される。
【0090】
本発明を、たとえばコンピュータ使用可能媒体を有する製造品(たとえば、1つまたは複数のコンピュータ・プログラム製品)に含めることができる。媒体は、その中に、たとえば本発明の機能を提供し促進するコンピュータ可読プログラム・コード手段を実施される。製造品は、コンピュータ・システムの一部として含めるか、別に販売することができる。
【0091】
さらに、計算機によって読取可能であり、本発明の機能を実行するために計算機によって実行可能な命令の少なくとも1つのプログラムを具体的に実施する少なくとも1つのプログラム記憶装置を提供することができる。
【0092】
本明細書に示された流れ図は、例にすぎない。本発明の趣旨から逸脱しない、これらの図または本明細書に記載のステップ(または動作)に対する多数の変形形態がありえる。たとえば、ステップを、異なる順序で実行することができ、ステップの追加、削除、または変更を行うことができる。これらの変形形態のすべてが、請求される発明の一部とみなされる。
【0093】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0094】
(1)分散コンピューティング環境の処理グループを管理する方法であって、
処理グループの見込みのあるメンバの状態の少なくとも一部を、前記処理グループのグループ状態の少なくとも一部と比較するステップと、
前記比較が差を示す場合に、前記見込みのあるメンバの前記状態の前記少なくとも一部を更新するステップと、
前記見込みのあるメンバを前記処理グループに参加させるステップと
を含む方法。
(2)前記グループ状態に対するアクティビティを静止させるステップと、
前記比較での使用のために、アクティビティを静止させた後に、前記グループ状態を取り出すステップと
をさらに含む、上記(1)に記載の方法。
(3)分散コンピューティング環境の処理グループを管理するシステムであって、
処理グループの見込みのあるメンバの状態の少なくとも一部を、前記処理グループのグループ状態の少なくとも一部と比較する手段と、
前記比較が差を示す場合に、前記見込みのあるメンバの前記状態の前記少なくとも一部を更新する手段と、
前記見込みのあるメンバを前記処理グループに参加させる手段と
を含むシステム。
(4)前記グループ状態に対するアクティビティを静止させる手段と、
前記比較での使用のために、アクティビティを静止させた後に、前記グループ状態を取り出す手段と
をさらに含む、上記(3)に記載のシステム。
(5)計算機によって可読であり、分散コンピューティング環境の処理グループを管理する方法を実行するために前記計算機によって実行可能な命令の少なくとも1つのプログラムを具体的に実施する、少なくとも1つのプログラム記憶装置であって、前記方法が、
処理グループの見込みのあるメンバの状態の少なくとも一部を、前記処理グループのグループ状態の少なくとも一部と比較するステップと、
前記比較が差を示す場合に、前記見込みのあるメンバの前記状態の前記少なくとも一部を更新するステップと、
前記見込みのあるメンバを前記処理グループに参加させるステップと
を含む、少なくとも1つのプログラム記憶装置。
(6)前記グループ状態に対するアクティビティを静止させるステップと、
前記比較での使用のために、アクティビティを静止させた後に、前記グループ状態を取り出すステップと
をさらに含む、上記(5)に記載の少なくとも1つのプログラム記憶装置。
【図面の簡単な説明】
【図1】本発明の諸態様が組み込まれ、使用される、コンピューティング環境の一例を示す図である。
【図2】本発明の一態様による、図1の複数のノードのさまざまな構成要素の一例を示す図である。
【図3】本発明の一態様による、クライアント・アプリケーション・インスタンスがDSTSサーバを使用せずにサード・パーティ・アプリケーションの要求に応答するコンピューティング環境の一実施形態を示す図である。
【図4】本発明の一態様による、クライアント・アプリケーション・インスタンスがDSTSサーバを使用してサード・パーティ・アプリケーションに応答するコンピューティング環境の一実施形態を示す図である。
【図5】本発明の一態様に従って使用される処理グループの一例を示す図である。
【図6】本発明の一態様による、グループ活動化プロトコルに関連する構成要素の一例を示す図である。
【図7】本発明の一態様による、グループ活動化の実行に関連する論理の一実施形態を示す図である。
【図8】本発明の一態様による、グループ活動化の実行に関連する論理の一実施形態を示す図である。
【図9】本発明の一態様による、グループ活動化の実行に関連する論理の一実施形態を示す図である。
【図10】本発明の一態様による、初期化メッセージに関連するフィールドの一例を示す図である。
【図11】本発明の一態様による、グループ参加プロトコルに関連する構成要素の一実施形態を示す図である。
【図12】本発明の一態様による、処理グループへの参加に関連する論理の一実施形態を示す図である。
【図13】本発明の一態様による、処理グループへの参加に関連する論理の一実施形態を示す図である。
【図14】本発明の一態様による、静止メッセージに関連するフィールドの一例を示す図である。
【図15】本発明の一態様による、アーカイブ・メッセージに関連するフィールドの一実施形態を示す図である。
【図16】本発明の一実施形態による、アーカイブ解除メッセージに関連するフィールドの一実施形態を示す図である。
【図17】本発明の一実施形態による、ハンドル列挙要求メッセージに関連するフィールドの一例を示す図である。
【図18】本発明の一実施形態による、ハンドル列挙応答メッセージに関連するフィールドの一例を示す図である。
【図19】本発明の一実施形態による、処理グループからのメンバの排除に関連する論理の一実施形態を示す図である。
【図20】本発明の一実施形態による、定数通知メッセージに関連するフィールドの一例を示す図である。
【図21】本発明の一実施形態による、複製要求メッセージに関連するフィールドの一例を示す図である。
【図22】本発明の一実施形態による、複製コールバック・メッセージに関連するフィールドの一例を示す図である。
【図23】本発明の一実施形態による、複製コールバック結果メッセージに関連するフィールドの一例を示す図である。
【図24】本発明の一実施形態による、複製完了メッセージに関連するフィールドの一例を示す図である。
【図25】本発明の一実施形態による、シャットダウン・メッセージに関連するフィールドの一例を示す図である。
【図26】本発明の一態様による、同期トランザクションの処理に関連するメッセージの流れの一実施形態を示す図である。
【図27】本発明の一態様による、同期トランザクションの処理に関連するメッセージの流れの一実施形態を示す図である。
【図28】本発明の一態様による、コミット準備動作に関連するメッセージの流れの一実施形態を示す図である。
【図29】本発明の一態様による、コミット動作に関連するメッセージの流れの一実施形態を示す図である。
【図30】本発明の一態様による、特定の時点での分散システムのスナップショットの一例を示す図である。
【図31】本発明の一態様に従って使用される、回復手順に関連する論理の一実施形態を示す図である。
【符号の説明】
100 分散コンピューティング環境
102 フレーム
104 LANゲート
106 処理ノード
200 分散クライアント・アプリケーション
202 ノード
204 DSTSインスタンス
Claims (6)
- 1以上のコンピュータからなるノードにより構成される分散コンピューティング環境の前記1以上のノードからなる処理グループの管理を行う方法であって、
前記処理グループに属さないノードが、前記処理グループのそれぞれのメンバが持つ同一の前記処理グループの状態を取得し、前記ノードの状態に含まれたシーケンス番号と、前記処理グループの状態に含まれたシーケンス番号とを比較するステップと、
前記比較するステップで比較した結果に基づいて、前記処理グループの前記シーケンス番号を前記ノードが更新するステップと、
前記ノードが前記更新されたシーケンス番号を前記処理グループの状態に保管することによって、前記処理グループに前記ノードが参加するステップとを含む方法。 - 前記ノードが前記処理グループに参加する際に発する参加メッセージを前記処理グループに送った後に前記処理グループを構成するメンバが処理を静止するステップと、
前記処理を静止させた後に、前記比較での使用のために前記処理グループの前記メンバの内の一のノードから、前記ノードが前記処理グループの状態を取り出すステップとをさらに含む、請求項1に記載の方法。 - 1以上のコンピュータからなるノードにより構成される分散コンピューティング環境の前記1以上のノードからなる処理グループの管理を行うシステムであって、
前記処理グループに属さないノードが、前記処理グループのそれぞれのメンバが持つ同一の前記処理グループの状態を取得し、前記ノードの状態に含まれたシーケンス番号と、前記処理グループの状態に含まれたシーケンス番号とを比較する手段と、
前記比較する手段で比較した結果に基づいて、前記処理グループの前記シーケンス番号を前記ノードが更新する手段と、
前記ノードが前記更新されたシーケンス番号を前記処理グループの状態に保管することによって、前記処理グループに前記ノードが参加する手段とを含むシステム。 - 前記ノードが前記処理グループに参加する際に発する参加メッセージを前記処理グループに送った後に、前記処理グループを構成するメンバが処理を静止する手段と、
前記処理を静止させた後に、前記比較での使用のために前記処理グループの前記メンバの内の一のノードから、前記ノードが前記処理グループの状態を取り出す手段とをさらに含む、請求項3に記載のシステム。 - 計算機によって可読であり、1以上のコンピュータからなるノードにより構成される分散コンピューティング環境の前記1以上のノードからなる処理グループの管理を行う方法を実行するために前記計算機によって実行可能な命令の少なくとも1つのプログラムを具体的に実施する、少なくとも1つのプログラム記憶装置であって、
前記プログラムが、
前記処理グループに属さないノードが、前記処理グループのそれぞれのメンバが持つ同一の前記処理グループの状態を取得し、前記ノードの状態に含まれたシーケンス番号と、前記処理グループの状態に含まれたシーケンス番号とを比較するステップと、
前記比較するステップで比較した結果に基づいて、前記処理グループの前記シーケンス番号を前記ノードが更新するステップと、
前記ノードが前記更新されたシーケンス番号を前記処理グループの状態に保管することによって、前記処理グループに前記ノードが参加するステップとを含む、少なくとも1つのプログラム記憶装置。 - 前記プログラムが、
前記ノードが前記処理グループに参加する際に発する参加メッセージを前記処理グループに送った後に前記処理グループを構成するメンバが処理を静止するステップと、
前記処理を静止させた後に、前記比較での使用のために前記処理グループの前記メンバの内の一のノードから、前記ノードが前記処理グループの状態を取り出すステップとをさらに含む、請求項5記載の少なくとも1つのプログラム記憶装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/584259 | 2000-05-31 | ||
| US09/584,259 US7325046B1 (en) | 2000-05-31 | 2000-05-31 | Method, system and program products for managing processing groups of a distributed computing environment |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2002055964A JP2002055964A (ja) | 2002-02-20 |
| JP3846852B2 true JP3846852B2 (ja) | 2006-11-15 |
Family
ID=24336581
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001160623A Expired - Fee Related JP3846852B2 (ja) | 2000-05-31 | 2001-05-29 | 分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US7325046B1 (ja) |
| EP (1) | EP1164484A3 (ja) |
| JP (1) | JP3846852B2 (ja) |
| KR (1) | KR100466140B1 (ja) |
| TW (1) | TW501064B (ja) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7120693B2 (en) * | 2001-05-08 | 2006-10-10 | International Business Machines Corporation | Method using two different programs to determine state of a network node to eliminate message response delays in system processing |
| US7743381B1 (en) * | 2003-09-16 | 2010-06-22 | Symantec Operating Corporation | Checkpoint service |
| JP4382602B2 (ja) * | 2004-04-23 | 2009-12-16 | 株式会社日立製作所 | リモートコピーシステム |
| US7299376B2 (en) | 2004-08-25 | 2007-11-20 | International Business Machines Corporation | Apparatus, system, and method for verifying backup data |
| US8051152B2 (en) * | 2008-12-12 | 2011-11-01 | Sap Ag | Isolated application server |
| US8903917B2 (en) * | 2009-06-03 | 2014-12-02 | Novell, Inc. | System and method for implementing a cluster token registry for business continuity |
| US8472182B2 (en) | 2010-07-28 | 2013-06-25 | International Business Machines Corporation | Apparatus and method for facilitating dissipation of heat from a liquid-cooled electronics rack |
| US8248801B2 (en) | 2010-07-28 | 2012-08-21 | International Business Machines Corporation | Thermoelectric-enhanced, liquid-cooling apparatus and method for facilitating dissipation of heat |
| US8577842B1 (en) * | 2011-09-19 | 2013-11-05 | Amazon Technologies, Inc. | Distributed computer system snapshots and instantiation thereof |
| JP5900094B2 (ja) * | 2012-03-28 | 2016-04-06 | 日本電気株式会社 | データ整合システム、データ整合方法およびデータ整合プログラム |
| US10015063B1 (en) * | 2012-12-31 | 2018-07-03 | EMC IP Holding Company LLC | Methods and apparatus for monitoring and auditing nodes using metadata gathered by an in-memory process |
| US9686161B2 (en) * | 2013-09-16 | 2017-06-20 | Axis Ab | Consensus loss in distributed control systems |
| US11336723B1 (en) * | 2019-09-23 | 2022-05-17 | Amazon Technologies, Inc. | Replicating data volume updates from clients accessing the data volume across fault tolerance zones |
| US11379464B2 (en) * | 2019-12-12 | 2022-07-05 | Micro Focus Llc | Asymmetric quorum protocol based distributed transaction database consistency control |
| US11645130B2 (en) * | 2020-11-05 | 2023-05-09 | International Business Machines Corporation | Resource manager for transaction processing systems |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2691081B2 (ja) | 1990-05-16 | 1997-12-17 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・ネットワーク |
| JP3239463B2 (ja) | 1992-08-27 | 2001-12-17 | 富士ゼロックス株式会社 | 電子会議システム |
| JP2557192B2 (ja) | 1993-03-15 | 1996-11-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | トランザクション処理の同期方法、トランザクション処理のモニタ方法及びトランザクションのコミット処理方法 |
| JPH07325783A (ja) | 1994-06-02 | 1995-12-12 | Kobe Nippon Denki Software Kk | コンピュータネットワークシステム |
| US5680610A (en) | 1995-01-19 | 1997-10-21 | Unisys Corporation | Method and apparatus for testing recovery scenarios in global transaction processing systems |
| US5761403A (en) | 1995-05-17 | 1998-06-02 | Nec Corporation | Failure recovery system and failure recovery method in loosely coupled multi-computer system, and medium for storing failure recovery program |
| US5956489A (en) | 1995-06-07 | 1999-09-21 | Microsoft Corporation | Transaction replication system and method for supporting replicated transaction-based services |
| US5799305A (en) | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
| EP0805393B1 (en) * | 1996-04-30 | 2011-11-09 | International Business Machines Corporation | Method and apparatus for managing membership of a group of processors in a distributed computing environment |
| US5748958A (en) | 1996-04-30 | 1998-05-05 | International Business Machines Corporation | System for utilizing batch requests to present membership changes to process groups |
| US5883939A (en) * | 1996-08-29 | 1999-03-16 | Cornell Research Foundation, Inc. | Distributed architecture for an intelligent networking coprocessor |
| US6393581B1 (en) * | 1996-08-29 | 2002-05-21 | Cornell Research Foundation, Inc. | Reliable time delay-constrained cluster computing |
| US6108699A (en) * | 1997-06-27 | 2000-08-22 | Sun Microsystems, Inc. | System and method for modifying membership in a clustered distributed computer system and updating system configuration |
| US6192483B1 (en) * | 1997-10-21 | 2001-02-20 | Sun Microsystems, Inc. | Data integrity and availability in a distributed computer system |
| US5999712A (en) * | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
| US6163855A (en) * | 1998-04-17 | 2000-12-19 | Microsoft Corporation | Method and system for replicated and consistent modifications in a server cluster |
| US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
| US6243744B1 (en) * | 1998-05-26 | 2001-06-05 | Compaq Computer Corporation | Computer network cluster generation indicator |
| US6438705B1 (en) * | 1999-01-29 | 2002-08-20 | International Business Machines Corporation | Method and apparatus for building and managing multi-clustered computer systems |
| US6401120B1 (en) * | 1999-03-26 | 2002-06-04 | Microsoft Corporation | Method and system for consistent cluster operational data in a server cluster using a quorum of replicas |
| US6801949B1 (en) * | 1999-04-12 | 2004-10-05 | Rainfinity, Inc. | Distributed server cluster with graphical user interface |
| US6662219B1 (en) * | 1999-12-15 | 2003-12-09 | Microsoft Corporation | System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource |
-
2000
- 2000-05-31 US US09/584,259 patent/US7325046B1/en not_active Expired - Fee Related
-
2001
- 2001-04-12 TW TW090108775A patent/TW501064B/zh not_active IP Right Cessation
- 2001-05-07 KR KR10-2001-0024700A patent/KR100466140B1/ko not_active Expired - Fee Related
- 2001-05-16 EP EP01000148A patent/EP1164484A3/en not_active Withdrawn
- 2001-05-29 JP JP2001160623A patent/JP3846852B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| KR100466140B1 (ko) | 2005-01-13 |
| KR20010109087A (ko) | 2001-12-08 |
| EP1164484A2 (en) | 2001-12-19 |
| TW501064B (en) | 2002-09-01 |
| EP1164484A3 (en) | 2009-03-04 |
| US7325046B1 (en) | 2008-01-29 |
| JP2002055964A (ja) | 2002-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6823355B1 (en) | Synchronous replication of transactions in a distributed system | |
| US6823356B1 (en) | Method, system and program products for serializing replicated transactions of a distributed computing environment | |
| US6889253B2 (en) | Cluster resource action in clustered computer system incorporation prepare operation | |
| JP3846852B2 (ja) | 分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品 | |
| AU713372B2 (en) | Multiprocessor cluster membership manager framework | |
| US7426653B2 (en) | Fault tolerant distributed lock management | |
| US7900085B2 (en) | Backup coordinator for distributed transactions | |
| US5787249A (en) | Method for managing membership of a group of processors in a distributed computing environment | |
| EP0805393B1 (en) | Method and apparatus for managing membership of a group of processors in a distributed computing environment | |
| US6163855A (en) | Method and system for replicated and consistent modifications in a server cluster | |
| US5696896A (en) | Program product for group leader recovery in a distributed computing environment | |
| US6016505A (en) | Program product to effect barrier synchronization in a distributed computing environment | |
| US6873987B1 (en) | Method, system and program products for recovering from failures within a shared nothing distributed computing environment | |
| JP3293839B2 (ja) | 作業ユニットに合わせてコミット範囲を調整するコンピュータ・システム | |
| EP0814590A2 (en) | Preventing conflicts in distributed systems | |
| EP2207096A1 (en) | Distributed transactional recovery system and method | |
| US20130110781A1 (en) | Server replication and transaction commitment | |
| US6216150B1 (en) | Program product for an application programming interface unifying multiple mechanisms | |
| JP3589378B2 (ja) | 分散コンピューティング環境におけるグループ・リーダ回復のためのシステム | |
| US5768538A (en) | Barrier synchronization method wherein members dynamic voting controls the number of synchronization phases of protocols and progression to each new phase | |
| US5764875A (en) | Communications program product involving groups of processors of a distributed computing environment | |
| US6026426A (en) | Application programming interface unifying multiple mechanisms | |
| US6052712A (en) | System for barrier synchronization wherein members dynamic voting controls the number of synchronization phases of protocols and progression to each subsequent phase | |
| US5787250A (en) | Program product for managing membership of a group of processors in a distributed computing environment | |
| US6990608B2 (en) | Method for handling node failures and reloads in a fault tolerant clustered database supporting transaction registration and fault-in logic |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050425 |
|
| RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20050428 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050428 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060623 |
|
| 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: 20060808 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20060809 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060821 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090901 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
| LAPS | Cancellation because of no payment of annual fees |