JP2006227816A - 分散システム、コンピュータおよび分散システムの状態遷移制御方法 - Google Patents

分散システム、コンピュータおよび分散システムの状態遷移制御方法 Download PDF

Info

Publication number
JP2006227816A
JP2006227816A JP2005039431A JP2005039431A JP2006227816A JP 2006227816 A JP2006227816 A JP 2006227816A JP 2005039431 A JP2005039431 A JP 2005039431A JP 2005039431 A JP2005039431 A JP 2005039431A JP 2006227816 A JP2006227816 A JP 2006227816A
Authority
JP
Japan
Prior art keywords
resources
state
update process
coordinator
state transition
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.)
Granted
Application number
JP2005039431A
Other languages
English (en)
Other versions
JP4177339B2 (ja
Inventor
Kotaro Endo
浩太郎 遠藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2005039431A priority Critical patent/JP4177339B2/ja
Priority to US11/354,034 priority patent/US7523113B2/en
Publication of JP2006227816A publication Critical patent/JP2006227816A/ja
Application granted granted Critical
Publication of JP4177339B2 publication Critical patent/JP4177339B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing

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)

Abstract

【課題】コーディネータによる通常の制御は3相コミット方式の制御と同等とし、3相コミット方式の終了手続きに替わって非同期ネットワークモデルでも正しく動作する終了手続きを実行する分散システムを提供する。
【解決手段】複数のリソース4a〜cによって分散トランザクションが実行される分散システムにおいて、リソース4a〜cは、コーディネータからの指示に基づき、自身の更新処理の状態を遷移させる。また、リソース4a〜cは、終了手続き部5を備え、この終了手続き5によって、複数のリソース4a〜cそれぞれの更新処理の状態を収集し、コーディネータ3からの指示によらずに、この収集した更新処理の状態から自身の更新処理のコミットまたはアボートを決定して終了手続きを行う。
【選択図】 図1

Description

この発明は、例えばインターネット上の複数のサイトによって実行される分散トランザクションが実行される分散システムの状態遷移制御技術に関する。
昨今のインターネットの発達は、インターネットを介した企業と顧客の取り引き、あるいは企業と企業の間の取り引きを可能にし始めている。このような取り引きは一般的にトランザクションという概念でとらえる事ができる。トランザクションが複数のリソースに跨っている場合、それは、分散トランザクションと呼ばれる。
一般的に、トランザクションは、いわゆるACID特性を保持して制御される必要がある。ここでACIDは、Atomicity(原子性)、Consistency(一貫性)、Isolation(隔離性)、Duration(持続性)の4つの特性の頭文字を並べたものである。分散トランザクションにおいても、ACID特性を持つことが必要であり、2相コミット(2 phase commit)と呼ばれる方法で制御されることが広く行われている。例えば、インターネットを介した取り引きを可能にするWebServiceにおいては、WS-Transaction仕様で2相コミット方式が採用されている。
ところで、この2相コミット方式は、分散トランザクションのACID特性を保証するものではあるが、トランザクションに関係するリソースに障害が発生した場合に、トランザクションがブロックしてしまう可能性があるという問題がある。ここで、「トランザクションがブロックする」とは、そのトランザクションに関係するすべてのリソースの更新処理がコミットもアボートもできない状態を保持し続けることを指す。あるトランザクションがブロックすると、そのトランザクションは関係するリソースのロックを保持しつづけるため、別のトランザクションがそのロックを取得できずに待たされ、次々とデッドロックを引き起こす可能性があることが問題となる。
この障害が発生したときにトランザクションをブロックするという2相コミット方式の性質は、本来的な問題点なのであるが、旧来、同一システム内において2相コミット方式を使用している場合には、それは大きな問題ではなかった。なぜなら、障害が発生した場合は、その障害を取り除き、復旧することがシステムの第一の課題であり、一方、障害が復旧すればトランザクションのブロックは解除できるからである。このように、一元的に運用管理される単一のシステム内に2相コミットが止まっている限り、トランザクションのブロックは、そのシステムの障害とひっくるめて考える事ができるため、それ自体が大きく問題視される事はなかった。
しかしながら、トランザクションが、複数の会社をまたがっている場合には、これは大きな問題となり得る。例えばあるトランザクションにA社、B社およびC社の3社が関わっており、そのうちのB社、C社のサイトではまったく障害が発生していないにもかかわらず、A社のサイトの障害から引きずられる形でトランザクションがブロックし、デッドロックの連鎖の結果として、A社との取り引きと関係のない業務までもがストップする可能性がある。このような事態において、B社、C社は、A社のサイトが復旧するまで、ただ呆然と待つ事になるとしたら、それはとても許容できないだろう。このように、それぞれ独立に運用管理されているシステムに跨って2相コミットが行われる場合、特定のサイトの障害によりトランザクションのブロックが発生し、その他の正常なサイトの業務までもが継続できなくなる可能性があるという問題がある。そして、この2相コミット方式のブロックする問題点を改良したものとして、3相コミット方式がすでに知られている。
2相コミットから3相コミットへの変更点は、リソースの状態遷移について、2相コミットにおけるprepared状態を2つに分け(本明細書ではこれをW状態、P状態とする)、コーディネータからリソースへのコミットの指示をW状態→P状態→コミットと2段階で行うようにした点である。
3相コミットでは、途中でコーディネータやリソースが障害となったとしても、正常なリソースの更新処理の状態を収集する事により、コミットまたはアボートを決定できることが特徴である。この手順を終了手続き(Termination Protocol)と称する。
3相コミットの終了手続きでは、コーディネータが障害となった場合には新しいコーディネータを立ち上げ、正常なリソースの更新処理の状態を収集し、それらの状態がすべて未確定状態であれば、トランザクションはアボートする。それらの状態がすべて確定状態であれば、トランザクションはコミットする。それ以外の場合は、W状態とP状態が混在する場合となるが、コーディネータは正常なリソースに関して、再度、コミットの指示をW状態→P状態→コミットと2段階で行う。なお、ここでいう未確定状態とは、更新中またはアボートまたはW状態のいずれかの状態である事を指し、また、確定状態とは、P状態またはコミットのいずれかの状態である事を指す。
また、障害が発生したリソースが復旧した時には、終了手続きで既に決定したコミットまたはアボートに従って、そのリソースの更新処理をコミットまたはアボートする。復旧したリソースが障害発生の前にすでにコミットまたはアボートしていたとすれば、それが終了手続きの決定と矛盾していないことは、3相コミットのアルゴリズムによって保証されていることに留意する。
以上のように、3相コミット方式は、終了手続きによりトランザクションをブロックさせないことができる方式であるが、この終了手続きが正しく動作するためには、
(1)リソースの障害が判定できなくてはならない
(2)一度障害だと判定されたリソースは、そのあと終了手続きには参加できない
(3)新しいコーディネータを立ち上げあげる時、それは唯一でなければならない
という条件を満たす必要がある。
ところが、特にインターネットのような不確実性の高いネットワークを介して通信を行う一般的なサーバの場合には、上記条件(1)〜(3)のいずれも満たされない。具体的には、それぞれ、(1)はネットワーク障害によるアクセス不可がサーバの障害と区別できないことに起因し、(2)はサーバの高負荷のためのスローダウンがサーバの障害と区別できないことに起因し、(3)はネットワークパーティショニングが起きた場合にそれぞれのパーティションで独立して終了手続きを実行してしまうことに起因して、それぞれの条件が満たされないことになる。従って、この3相コミット方式は、インターネット環境ではそのまま適用できないという問題点がある。
より一般的に言えば、インターネットのような不確実性の高いネットワーク環境は、非同期ネットワークモデル(asynchronous network model)に分類されるが、3相コミット方式の終了手続きは非同期ネットワークモデルにおいては正しく動作しないという問題点がある。
この発明は、このような事情を考慮してなされたものであり、コーディネータによる通常の制御は3相コミット方式の制御と同等とし、3相コミット方式の終了手続きに替わって非同期ネットワークモデルでも正しく動作する終了手続きを実行する分散システム、コンピュータおよび分散システムの状態遷移制御方法を提供することを目的とする。
前述した目的を達成するために、この発明は、複数のリソースによって分散トランザクションが実行される分散システムにおいて、前記複数のリソースそれぞれが、前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させる第1の状態遷移制御手段と、前記複数のリソースそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、前記収集した更新処理の状態から自身の更新処理のコミットまたはアボートを決定して終了手続きを行う第2の状態遷移制御手段とを具備することを特徴とする。
また、この発明は、ネットワークを介して接続される他のコンピュータと共に分散トランザクションを実行するコンピュータにおいて、前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させる第1の状態遷移制御手段と、前記他のコンピュータそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、自身の更新処理の状態と前記収集した更新処理の状態とから自身の更新処理のコミットまたはアボートを決定して終了手続きを行う第2の状態遷移制御手段とを具備することを特徴とする。
また、この発明は、複数のリソースによって分散トランザクションが実行される分散システムの状態遷移制御方法であって、前記複数のリソースそれぞれが、前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させ、前記複数のリソースそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、前記収集した更新処理の状態から自身の更新処理のコミットまたはアボートを決定して終了手続きを行うことを特徴とする。
この発明によれば、コーディネータによる通常の制御は3相コミット方式の制御と同等とし、3相コミット方式の終了手続きに替わって非同期ネットワークモデルでも正しく動作する終了手続きを実行する分散システム、コンピュータおよび分散システムの状態遷移制御方法を提供できる。
以下、図面を参照してこの発明の実施形態について説明する。図1は、本発明の一実施形態に係る分散システムによる分散トランザクションを示す図である。ここでは、A社、B社、C社の3社がオンラインで取り引きを行う場合を想定し、そのために、図示のように、インターネット1を介してA社サーバ(サイト)2a、B社サーバ2b、C社サーバ2cが相互に通信可能に接続されているものとする。また、この分散トランザクションに関わる更新処理の状態遷移を調整するコーディネータ3はA社サーバ2aにあり、このトランザクションによって3社のリソース4a〜cがそれぞれ更新されるものとする。そして、このようなトランザクションを実行する本実施形態の分散システムは、非同期ネットワークモデルでも正しく動作する終了手続きを実現するために、リソース4a〜cそれぞれが、コーディネータ3からの指示によって状態を遷移させる通常の機能のほか、コーディネータ3からの指示によらずに当事者間同士の通信のみによって適切な終了手続きを行う終了手続き部5を有する点を特徴としており、以下、この点について詳述する。
まず、この終了手続き部5の動作原理の理解を助けるために、第1に、図2〜図5を参照しながら、2相コミットの典型的な手順を説明する。図2に示すように、2相コミットでは、各リソース4a〜cがコーディネータ3と通信しながら、その指示に従って状態を遷移させていく。そして、各リソース4a〜cの状態は、図3に示すように、更新中(a1)となった後、prepared(a2)を経てコミット(a3)またはアボート(a4)となるか、あるいは更新中から直接にアボート(a4)となるといったように遷移する。prepared状態とは、処理が完了する直前で保留された状態であって、その処理をコミットすることもアボートすることも任意に可能な状態を指す。この2相コミットでトランザクションがコミットまたはアボートする場合の流れを以下に示す。
(1)トランザクションがコミットする場合の流れ
a.A社、B社、C社の各リソース4a〜cでの更新処理が行われてprepared状態となり、それぞれがコーディネータに通知する。
b.コーディネータ3は3社の更新処理がprepared状態になったのを知り、トランザクションのコミットを決定し、更新処理をコミットする指示を各リソース4a〜cに送信する。そして、その指示を受けて3社の各リソース4a〜cの更新処理がコミットする。
(2)トランザクションがアボートする場合の流れ(例)
a.B社、C社の各リソース4b,cでの更新処理が行われてprepared状態となり、それぞれがコーディネータに通知する。一方で、A社のリソース4aでの更新処理は失敗してアボートし、コーディネータにそれを通知する。
b.コーディネータ3はA社の更新処理がアボートしたのを知り、トランザクションのアボートを決定し、B社、C社の各リソース4b,cの更新処理をアボートする指示を送信する。その指示を受けてB社、C社の各リソース4b,cの更新処理がアボートする。
以上のような流れによる、この2相コミットでの状態遷移を調整するためのコーディネータ3の動作手順を図4に示す。
まず、コーディネータ3は、すべてのリソースから更新処理の状態が通知されるのを待機する(ステップA1)。そして、コーディネータ3は、すべてprepared状態であった場合(ステップA2のYES)、トランザクションのコミットを決定し、更新処理のコミットの指示をすべてのリソースに送信する(ステップA3)。一方、prepared状態でないものが存在した場合には(ステップA2のNO)、コーディネータ3は、トランザクションのアボートを決定し、prepared状態となっている更新処理のアボートの指示を必要なリソースに送信する(ステップA4)。
図5は、2相コミットでのコーディネータ3と各リソース4a〜cとのやり取りを示すタイミングチャートであり、各リソース4a〜cに対してコーディネータ3から更新処理の開始が指示され(図5の(1))、各リソース4a〜cによる更新処理が各々実行された後(図5の(2))、その結果(prepared状態かどうか)が各リソース4a〜cからコーディネータ3に返却される(図5の(3))。
この結果の返却を受けて、コーディネータ3は、トランザクションのコミットまたはアボートを決定し、各リソース4a〜cに指示する(図5の(4))。そして、各リソース4a〜cは、この指示通りにコミットまたはアボートを行い(図5の(5))、その完了をコーディネータ3に報告する(図5の(6))。
ここまでは、障害が発生しない場合の流れである。次に、障害が発生してトランザクションがブロックする場合の流れを示す。
(3)トランザクションがブロックする場合の流れ(例)
a.A社、B社、C社の各リソース4a〜cでの更新処理が行われてprepared状態となり、それぞれがコーディネータに通知する。
b.ここで、A社のサーバ2aに障害が発生し、A社のリソースおよびコーディネータが動作しなくなった。その結果、B社、C社の各リソース4b,cの更新処理はprepared状態のままブロックする。
この後、B社、C社の各リソース4b,cの更新処理を勝手にコミットもアボートもできないという点に留意する。なぜなら、B社、C社の更新処理の状態からだけでは、そのトランザクションがコミットする場合とアボートする場合の区別ができず、A社の更新処理がコミットした可能性もアボートした可能性も両方あり得るからである。トランザクションのアトミシティを保つためには、A社のサーバ2aが障害から復旧してA社のリソース4aの更新処理の出来を判別した後に、それに応じてB社、C社のリソースの更新処理をコミットまたはアボートしなければならないのである。
続いて、終了手続き部5の動作原理の理解を助けるために、第2に、図6〜図8を参照しながら、2相コミット方式のブロックする問題点を改良した3相コミットについて簡単に説明する。
この3相コミットでは、図6に示すように、2相コミットにおけるprepared状態がW状態(b2)とP状態(b3)に分けられ、コーディネータ3から各リソース4a〜cへのコミットの指示がW状態→P状態→コミットと2段階で行われる。この3相コミットでの状態遷移を調整するためのコーディネータ3の動作手順を図7に示す。
まず、コーディネータ3は、すべてのリソースから更新処理の状態が通知されるのを待機する(ステップB1)。コーディネータ3は、すべてW状態であった場合(ステップB2のYES)、更新処理をP状態に遷移させる指示をすべてのリソースに送信し(ステップB3)、すべてのリソースの更新処理がP状態になるのを待機する(ステップB4)。そして、すべてP状態となったら、コーディネータ3は、トランザクションのコミットを決定し、更新処理のコミットの指示をすべてのリソースに送信する(ステップB5)。
一方、W状態でないものが存在した場合には(ステップB2のNO)、コーディネータ3は、トランザクションのアボートを決定し、W状態となっている更新処理のアボートの指示を必要なリソースに送信する(ステップB6)。
図8は、3相コミットでのコーディネータ3と各リソース4a〜cとのやり取りを示すタイミングチャートであり、各リソース4a〜cに対してコーディネータ3から更新処理の開始が指示され(図8の(1))、各リソース4a〜cによる更新処理が各々実行された後(図8の(2))、その結果(W状態かどうか)が各リソース4a〜cからコーディネータ3に返却される(図8の(3))。ここでは、W状態が返却されたものとし、この結果の返却を受けて、コーディネータ3は、P状態に遷移させる指示を各リソース4a〜cに送信する(図8の(4))。この指示を受けて、各リソース4a〜cは、更新処理をP状態に遷移させ(図8の(5))、その遷移完了をコーディネータ3に報告する(図8の(6))。そして、このP状態への遷移完了を報告されると、コーディネータ3は、トランザクションのコミットを各リソース4a〜cに指示し(図8の(7))、一方、各リソース4a〜cは、この指示通りにコミットを行い(図8の(8))、その完了をコーディネータ3に報告する(図8の(9))。
3相コミットは、途中でコーディネータ3や各リソース4a〜cが障害となったとしても、正常なリソースの更新処理の状態を収集する事により、コミットまたはアボートを決定できる(終了手続き)ことを特徴としている。
しかしながら、前述したように、インターネットのような不確実性の高いネットワーク環境は、非同期ネットワークモデルに分類されるが、この3相コミット方式の終了手続きは非同期ネットワークモデルにおいては正しく動作しないという問題がある。次に、この問題を解決する本発明のコミット方式について説明する。
本発明のコミット方式は、コーディネータによる通常の制御は3相コミット方式の制御と同等とし、3相コミット方式の終了手続きに替わって、非同期ネットワークモデルでも正しく動作する終了手続きを新たに提供することにより、インターネットを介した取り引きにおいても利用可能にしたものである。つまり、各リソース4a〜cが備える終了手続き部5は、この新たに提供する本発明の終了手続きを実行する。
終了手続き部5が実行する終了手続きは、図9に示すように、コーディネータ3を利用せず、トランザクションに関係するリソース4a〜cの間で直接通信する方式である。それぞれのリソースにおける終了手続きのフローチャートが対称で、フローの中でランダムな選択を行う個所があるという特徴をもつ。理論的には、非同期ネットワークモデルにおける合意アルゴリズムの一つであるBen-orの合意アルゴリズムと同等である(参考文献:Ben-Or, Another Advantage of Free Choice: Completely Asynchronous Agreement Protocols, Proceedings of the Socond Annual ACM Symposium on Principles of Distributed Computing, pp27-30, 1983)。
それぞれのリソースにおける終了手続きのフローは、
(1)あるリソースの更新処理の状態がコミットまたはアボートまたは更新中であることがわかった場合には、終了処理は自明であるから即座にコミットまたはアボートを決定する。
(2)それ以外の場合には、W状態またはP状態をそれぞれのリソースの更新処理の状態の初期値と考え、Ben-orの合意アルゴリズムを実行し、W状態での合意はアボート、P状態での合意はコミットとする。
というものである。
Ben-orの合意アルゴリズムは、初期値がすべてW状態であったときにはすべてのリソースの更新処理ががアボートに統一され、初期値がすべてP状態であったときはすべてのリソースの更新処理がコミットに統一され、それ以外の場合では、すべてのリソースの更新処理がコミットまたはアボートのいずれかに統一されることを保証する。これによって、トランザクションのAtomicityが保証される。
この終了手続きでは、障害となるリソースの数がリソースの全体数の半数未満である場合に、トランザクションのコミットまたはアボートを決定できる。なお、終了手続きが完了する前に、障害が発生したリソースの数が全体の半数以上となった場合には、終了手続きはブロックし、したがってトランザクションがブロックする。ただし、障害となったリソースが復旧した場合には、そのリソースは任意に再び終了手続きに参加できる。そのため、障害の復旧により正常なリソースの数が全体の半数以上となれば、本発明の終了手続きはトランザクションのコミットまたはアボートを決定できる。
また、この終了手続きは、任意の時点で開始する事ができる。したがって、本発明の合理的な展開としてさまざまな終了手続きの開始方法が可能である。たとえば、まったく障害の発生していない状況で終了手続きを開始したとしても、それは正しく動作する。ただし、終了手続きを開始することによって、本来コミットできるはずのトランザクションがアボートしてしまう可能性もあるため、終了手続きを使わずにコーディネータによる制御でトランザクションが完了できることが期待できる場合には、終了手続きを開始しないほうが全体としての効率がよいという傾向もある。
例えば、任意に設定可能なタイムアウト値を使って、コーディネータがいずれかのリソースのタイムアウトを検出するか、あるいは、いずれかのリソースがコーディネータのタイムアウトを検出した場合に、この終了手続きを開始するような方式とすれば、タイムアウト値の設定によって全体の効率のバランスを調節できるようになる。あるいは、外部の障害検出機構があれば、それによってこの終了手続きを開始するような方式でもよい。
なお、本実施形態におけるコーディネータ3の動作手順は、図7に示す3相コミット方式のそれとまったく同一である。そして、終了手続き部5が実行する終了手続きには、コーディネータ3は参加せず、それぞれのリソース間で通信する事により行われる。それぞれのリソースにおける終了手続きのフローは、番号付けされたステップを順次処理するようになっており、各ステップの基本動作は、全体の過半数以上のリソースの更新処理の状態を他のリソースと通信することにより収集し、次のステップでの自身の更新処理の状態を決定する。それぞれのリソースにおける更新処理の状態は、3相コミット方式のそれに加えて、図10に示すように、ステップ番号で添え字付けされたW状態、P状態およびZ状態(ステップ番号が偶数だけ)からなる。ステップ番号1のW1状態とP1状態は、それぞれW状態とP状態のことを指すものとする
次に、図11〜図13のフローチャートを参照して、この終了手続き部5の具体的な動作手順を説明する。なお、説明中のSはステップに付される順序番号、Nはトランザクションに関係するリソースの数、QはNの過半数となる最小の数、FはN−Qである。
図11は、基本フローであり、自身の更新処理の状態がコミットまたはアボートであれば(ステップC1のYES)、終了手続きは完了である。一方、自身の更新処理の状態が更新中であれば(ステップC1のNO,ステップC2のYES)、更新処理をアボートし(ステップC3)、終了手続きは完了である。そして、自身の更新処理の状態がW状態またはP状態であれば(ステップC2のNO)、図12〜図13にその詳細な流れが示される判定処理に進む。
判定処理では、まず、ステップ番号を1にセットし(ステップD1)、他のリソースと通信して、それぞれのリソースの更新処理の状態を収集する(ステップD2)。もし、その中にコミットがあれば(ステップD3のYES)、自身の更新処理をコミットし(ステップD4)、終了手続きは完了である。また、もし、その中にアボートまたは更新中があれば(ステップD5のYES)、自身の更新処理をアボートし(ステップD6)、終了手続きは完了である。
もし、その中に、自身のステップ番号より大きなステップ番号をもつ状態があれば(ステップD7のYES)、自身の更新処理の状態をその状態と同じにし(ステップD8)、ステップD2からの処理を繰り返す。また、もし、その中に、自身のステップ番号より小さなステップ番号をもつ状態があれば(ステップD9のYES)、それは無視して破棄する(ステップD10)。
そして、自身と同じステップ番号の状態を、全体の過半数のリソースについて収集(この中には自身の状態を含んでもよい)できた場合(ステップD11のYES)、以下の判定基準にしたがって、次のステップでの自身の更新処理の状態を決定し、次のステップに進む。
ステップ番号が奇数の場合(ステップD12のYES)、収集したリソースの更新状態はWs かPs で、Q個以上あることになる。そこで、もし、Ws がQ個以上あれば(ステップD13のYES)、次のステップでの自身の更新処理の状態をWs+1 とし(ステップD14)、また、Ps がQ個以上あれば(ステップD15のYES)、次のステップでの自身の更新処理の状態をPs+1 とする(ステップD16)。また、それ以外では、次のステップでの自身の更新処理の状態をZs+1 とする(ステップD17)。以上の状態遷移を終えたら、ステップ番号をインクリメントして(ステップD27)、ステップD2からの処理を繰り返す。
一方、ステップ番号が偶数の場合には(ステップD12のNO)、収集したリソースの更新状態はWs かPs かZs で、Q個以上あることになる。さらに、Ws とPs が同時に現れる事はない。これは、一つ前のステップ番号で、全体の中でWs-1 とPs-1 が同時に過半数を超える事がないからである。
もし、Ws がF+1個以上あれば(ステップD18のYES)、自身の更新処理をアボートする(ステップD19)。また、F+1個はないが(ステップD18のNO)、Ws が1個以上あれば(ステップD20のYES)、次のステップでの自身の更新処理の状態をWs+1 とする(ステップD21)。
もし、Ps がF+1個以上あれば(ステップD22のYES)、自身の更新処理をコミットする(ステップD23)。また、F+1個はないが(ステップD22のNO)、Ps が1個以上あれば(ステップD24のYES)、次のステップでの自身の更新処理の状態をPs+1 とする(ステップD25)。そして、上記のいずれにも該当しない場合(ステップD24のNO)、次のステップでの自身の更新処理の状態をPs+1 かWs+1 のいずれかにランダムに決定する(ステップD26)。
以上の手順で、コーディネータ3を利用せず、全リソースが他のリソースと矛盾を起こすことなく終了手続きを行うことが可能となる。
ところで、前述した手順によれば、全体の過半数までのリソースの障害については、トランザクションのブロックが発生しない。しかし、過半数以上の障害に対しては、やはりトランザクションのブロックが発生する。この点を実質的に緩和するため、クオラムサイトを導入する例を説明する。
図14に示すように、クオラムサイト6は、インターネット1上に配置されたサーバであって、更新処理の中身としてはなにもせず更新処理の状態遷移だけを行うリソース(状態遷移専用リソース7)を提供する。更新処理は中身がないので、実質的に更新中の状態をもたず、したがって初期状態は実質的にW状態である。このリソースをトランザクションに含めて本発明のコミット方式を用いることにより、上記実質的緩和を実現する。
すなわち、あるトランザクションに関係する本来のリソースの数をNとすると、クオラムサイト6にあるリソース7をN−1個選び、これをこの分散トランザクションに参加させる。すると、全体のリソースの数は2N−1となり、N−1個までのリソースの障害に対してトランザクションのブロックが発生しない。したがって、クオラムサイトに障害が発生しない場合には、本来のリソースがすべて障害とならない限りトランザクションのブロックは発生せず、かならずコミットまたはアボートが決定できる。
クオラムサイトにあるN−1個のリソースは、1つのクオラムサイトから選んでもよいし、例えば地理的に離れた複数のサーバから選んで総和をN−1個としてもよい。全体として、十分な信頼性が選られるようにクオラムサイトのリソースを選択すれば、上記実質的緩和が実現する。
また、クオラムサイトを利用する場合、本発明のコミット方式を少し改変して、図15に示すように、クオラムサイトのリソースと、コーディネータおよび本来のリソースの間での通信が、障害が発生しない通常処理において、まったく発生しないようにできる。これにより、障害がまったく発生しない場合には、クオラムサイトのリソースとはまったく通信せずにトランザクションをコミットまたはアボートできるという利点がある。クオラムサイトは本来のリソースに障害があったときに初めて実質的に使うという性質のものとなるため、1つのクオラムサイトで、数多くのトランザクションおよびリソースをまかなう事が可能である。
以下、このクオラムサイトを利用する場合の原理を詳細に説明する。なお、ここでは通信量の削減に関わる部分について説明する。
コーディネータの手順の改変として、クオラムサイト6のリソース7の更新処理は自動的にW状態まで遷移したとみなして、クオラムサイトのリソースとまったく通信せずに、P状態への遷移を指示するところまで進める。本来のN個のリソースにP状態への遷移を通知したところで、クオラムサイト6のリソース7にはP状態への遷移を指示せず、終了手続きを始める。図16は、この場合のクオラムサイト6の状態遷移図であり、また、図17は、この場合のコーディネータ3の動作フローである。
本発明の終了手続きの改変として、最初のステップ番号1とステップ番号2では、クオラムサイト6のリソース7との間で通信障害があたかも発生したとみなして、クオラムサイトのリソースとまったく通信せずにBen-orのアルゴリズムを進める。すると、Ben-orのアルゴリズムの性質から、本来のリソースに障害がまったく発生していない場合には、ステップ番号2が終わったところですべての本来のリソースの更新処理がコミットする。
このように、改変後の本発明のコミット手順では、障害が発生しない場合でも終了手続きを実行する事になるが、障害が発生しない場合には、ステップ番号2で必ずコミットするため、本来コミットできるはずのトランザクションがアボートしてしまうということはない。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の一実施形態に係る分散システムによる分散トランザクションを示す図 2相コミット方式でのコーディネータ−リソース間の通信の様子を示す図 2相コミット方式でのリソースの状態遷移を示す図 2相コミット方式でのコーディネータの動作手順を示すフローチャート 2相コミット方式でのコーディネータと各リソースとのやり取りを示すタイミングチャート 3相コミット方式でのリソースの状態遷移を示す図 3相コミット方式でのコーディネータの動作手順を示すフローチャート 3相コミット方式でのコーディネータと各リソースとのやり取りを示すタイミングチャート 同実施形態の分散システムの終了手続き時におけるコーディネータ−リソース間の通信の様子を示す図 同実施形態の分散システムにおけるリソースの状態遷移を示す図 同実施形態の分散システムの終了手続き時における基本フロー 同実施形態の分散システムの終了手続き時における詳細フロー(1/2) 同実施形態の分散システムの終了手続き時における詳細フロー(2/2) 同実施形態のクオラムサイトを導入した場合の分散システムを示す図 同実施形態のクオラムサイトを導入した場合の分散システムのコーディネータ−リソース間の通信の様子を示す図 同実施形態のクオラムサイトを導入した場合の分散システムにおけるリソースの状態遷移を示す図 同実施形態のクオラムサイトを導入した場合におけるコーディネータの動作手順を示すフローチャート
符号の説明
1…インターネット、2a〜c…サーバ、3…コーディネータ、4a〜c…リソース、5…終了手続き部、6…クオラムサイト、7…状態遷移専用リソース。

Claims (9)

  1. 複数のリソースによって分散トランザクションが実行される分散システムにおいて、
    前記複数のリソースそれぞれが、
    前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させる第1の状態遷移制御手段と、
    前記複数のリソースそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、前記収集した更新処理の状態から自身の更新処理のコミットまたはアボートを決定して終了手続きを行う第2の状態遷移制御手段と
    を具備することを特徴とする分散システム。
  2. 前記第2の状態遷移制御手段は、前記収集した更新処理の状態を各々の初期値として合意アルゴリズムを実行し、前記複数のリソースのうちの過半数以上での合意が得られた場合に、その合意結果に基づき、自身の更新処理のコミットまたはアボートを決定することを特徴とする請求項1記載の分散システム。
  3. 前記第2の状態遷移制御手段は、前記収集した更新処理の状態の中にコミットが存在した場合、自身の更新処理のコミットを決定し、前記収集した更新処理の状態の中にアボートまたは更新中が存在した場合、自身の更新処理のアボートを決定することを特徴とする請求項1または2記載の分散システム。
  4. 前記複数のリソースの総数は、2N−1個であり、この2N−1個のうちのN−1個のリソースは、前記分散トランザクションの実行に実質的には関係せず、中身のない自身の更新処理の状態遷移のみを行うものであることを特徴とする請求項1、2または3記載の分散システム。
  5. 前記2N−1個のうちのN個のリソースは、前記分散トランザクションの実行に実質的に関係し、このN個のリソースの前記第2の状態遷移制御手段は、所定の事象が発生しない限りにおいては、前記N−1個のリソースからの更新処理の状態の収集を行わずに、前記N個のリソースより収集された更新処理の状態から自身の更新処理のコミットまたはアボートを決定することを特徴とする請求項4記載の分散システム。
  6. 前記N−1個のリソースすべてが同一のコンピュータ上に存在することを特徴とする請求項4または5記載の分散システム。
  7. ネットワークを介して接続される他のコンピュータと共に分散トランザクションを実行するコンピュータにおいて、
    前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させる第1の状態遷移制御手段と、
    前記他のコンピュータそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、自身の更新処理の状態と前記収集した更新処理の状態とから自身の更新処理のコミットまたはアボートを決定して終了手続きを行う第2の状態遷移制御手段と
    を具備することを特徴とするコンピュータ。
  8. ネットワークを介して接続される他のコンピュータと共に分散トランザクションの実行に供されるコンピュータにおいて、
    前記分散トランザクションの実行に実質的には関係せず、中身のない自身の更新処理の状態遷移のみを実行する状態遷移制御手段を具備することを特徴とするコンピュータ。
  9. 複数のリソースによって分散トランザクションが実行される分散システムの状態遷移制御方法であって、
    前記複数のリソースそれぞれが、
    前記分散トランザクションに関わる更新処理の状態遷移を3相コミット方式で調整するコーディネータからの指示に基づき、自身の更新処理の状態を遷移させ、
    前記複数のリソースそれぞれの更新処理の状態を収集し、前記コーディネータからの指示によらずに、前記収集した更新処理の状態から自身の更新処理のコミットまたはアボートを決定して終了手続きを行う
    ことを特徴とする状態遷移制御方法。
JP2005039431A 2005-02-16 2005-02-16 分散システム、コンピュータおよび分散システムの状態遷移制御方法 Active JP4177339B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005039431A JP4177339B2 (ja) 2005-02-16 2005-02-16 分散システム、コンピュータおよび分散システムの状態遷移制御方法
US11/354,034 US7523113B2 (en) 2005-02-16 2006-02-15 Distributed system, computer and state transition control method for distributed system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005039431A JP4177339B2 (ja) 2005-02-16 2005-02-16 分散システム、コンピュータおよび分散システムの状態遷移制御方法

Publications (2)

Publication Number Publication Date
JP2006227816A true JP2006227816A (ja) 2006-08-31
JP4177339B2 JP4177339B2 (ja) 2008-11-05

Family

ID=36817117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005039431A Active JP4177339B2 (ja) 2005-02-16 2005-02-16 分散システム、コンピュータおよび分散システムの状態遷移制御方法

Country Status (2)

Country Link
US (1) US7523113B2 (ja)
JP (1) JP4177339B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097155A (ja) * 2006-10-06 2008-04-24 Fujitsu Ltd データ記憶制御装置およびデータ記憶装置
JP2008542858A (ja) * 2005-05-06 2008-11-27 マラソン テクノロジーズ コーポレイション 耐障害性コンピュータ・システム
KR20160139033A (ko) * 2014-03-31 2016-12-06 아마존 테크놀로지스, 인크. 다중-익스텐트 연산에 대한 원자 기록
JP2016538631A (ja) * 2013-10-29 2016-12-08 華為技術有限公司Huawei Technologies Co.,Ltd. トランザクション処理方法および装置
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106772A1 (en) * 2007-10-18 2009-04-23 Omx Technology Ab Loop checking mechanism in a data processing system
KR101297519B1 (ko) * 2008-08-08 2013-08-16 삼성전자주식회사 Dcd 서비스에서 사용자 콘텐트 제출 방법 및 시스템
US10860341B2 (en) 2016-01-25 2020-12-08 Micro Focus Llc Coordinating operation of a number of different modules

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3988592A (en) * 1974-11-14 1976-10-26 Porter William H Electrical generating system
US4159427A (en) * 1975-12-23 1979-06-26 Messerschmitt-Boelkow-Blohm Gesellschaft Mit Beschraenkter Haftung Apparatus for utilizing natural energies
US4189648A (en) * 1978-06-15 1980-02-19 United Technologies Corporation Wind turbine generator acceleration control
US4994684A (en) * 1989-01-30 1991-02-19 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Doubly fed generator variable speed generation control system
US5028804A (en) * 1989-06-30 1991-07-02 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Brushless doubly-fed generator control system
US5239251A (en) * 1989-06-30 1993-08-24 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Brushless doubly-fed motor control system
US4982141A (en) * 1989-07-24 1991-01-01 Motorola, Inc. Driver circuit for piezoelectric transducer and electroluminescent lamp
US5082077A (en) * 1990-10-09 1992-01-21 Ford Motor Company Offset steering gear assembly
US5798631A (en) * 1995-10-02 1998-08-25 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Performance optimization controller and control method for doubly-fed machines
US6157927A (en) * 1998-04-22 2000-12-05 Unisys Corporation Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
US7290056B1 (en) * 1999-09-09 2007-10-30 Oracle International Corporation Monitoring latency of a network to manage termination of distributed transactions
DE10016912C1 (de) * 2000-04-05 2001-12-13 Aerodyn Eng Gmbh Turmeigenfrequenzabhängige Betriebsführung von Offshore-Windenergieanlagen
US6670721B2 (en) * 2001-07-10 2003-12-30 Abb Ab System, method, rotating machine and computer program product for enhancing electric power produced by renewable facilities

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542858A (ja) * 2005-05-06 2008-11-27 マラソン テクノロジーズ コーポレイション 耐障害性コンピュータ・システム
JP2008097155A (ja) * 2006-10-06 2008-04-24 Fujitsu Ltd データ記憶制御装置およびデータ記憶装置
JP2016538631A (ja) * 2013-10-29 2016-12-08 華為技術有限公司Huawei Technologies Co.,Ltd. トランザクション処理方法および装置
US10055445B2 (en) 2013-10-29 2018-08-21 Huawei Technologies Co., Ltd. Transaction processing method and apparatus
KR20160139033A (ko) * 2014-03-31 2016-12-06 아마존 테크놀로지스, 인크. 다중-익스텐트 연산에 대한 원자 기록
JP2017510002A (ja) * 2014-03-31 2017-04-06 アマゾン・テクノロジーズ・インコーポレーテッド 複数エクステント動作のための原子書き込み
KR101865491B1 (ko) * 2014-03-31 2018-06-07 아마존 테크놀로지스, 인크. 다중-익스텐트 연산에 대한 원자 기록
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service

Also Published As

Publication number Publication date
US7523113B2 (en) 2009-04-21
US20060184947A1 (en) 2006-08-17
JP4177339B2 (ja) 2008-11-05

Similar Documents

Publication Publication Date Title
JP4177339B2 (ja) 分散システム、コンピュータおよび分散システムの状態遷移制御方法
JP4726416B2 (ja) コンピュータ・クラスタを操作するための方法
CN110569305A (zh) 区块同步方法、装置、介质和计算设备
US7194652B2 (en) High availability synchronization architecture
US7076689B2 (en) Use of unique XID range among multiple control processors
US8442958B2 (en) Server change management
US10346270B2 (en) High-availability network controller
US9465648B2 (en) Distributed transaction processing through commit messages sent to a downstream neighbor
US20070206611A1 (en) Effective high availability cluster management and effective state propagation for failure recovery in high availability clusters
US8504873B1 (en) Method and apparatus for providing in-memory checkpoint services within a distributed transaction
JP2003022258A (ja) サーバーのバックアップシステム
EP1386234A2 (en) Resource action in clustered computer system incorporating prepare operation
WO2012000997A1 (en) An apparatus for processing a batched unit of work
US6226694B1 (en) Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring
US20040083404A1 (en) Staged startup after failover or reboot
CN110784331B (zh) 一种共识流程恢复方法及相关节点
CN115794499B (zh) 一种用于分布式块存储集群间双活复制数据的方法和系统
JP3808874B2 (ja) 分散システム及び多重化制御方法
CN110995481A (zh) 配置方法、服务器及计算机可读存储介质
Albassam et al. Model-based recovery connectors for self-adaptation and self-healing
CN112182103A (zh) 一种分布式数据库及其实现跨节点事务强一致性的方法
JP5201134B2 (ja) 二重化システム、切替プログラムおよび切替方法
US20210279255A1 (en) Synchronous state machine replication for achieving consensus
CN112104576B (zh) 一种sdn交换机的常驻流表存储与校准方法
CN114090211A (zh) 协调单任务主从程序的方法、装置和相关多服务器系统

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080718

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: 20080819

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080821

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4177339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350