IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2023-147903分散トランザクション制御システム及び分散トランザクション制御方法
<>
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図1
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図2
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図3
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図4A
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図4B
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図4C
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図5A
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図5B
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図5C
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図6
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図7
  • 特開-分散トランザクション制御システム及び分散トランザクション制御方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023147903
(43)【公開日】2023-10-13
(54)【発明の名称】分散トランザクション制御システム及び分散トランザクション制御方法
(51)【国際特許分類】
   G06F 16/27 20190101AFI20231005BHJP
【FI】
G06F16/27
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022055670
(22)【出願日】2022-03-30
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】山本 展之
(72)【発明者】
【氏名】馬庭 尚志
(72)【発明者】
【氏名】西谷 淳平
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
(57)【要約】      (修正有)
【課題】二相コミットに起因する不整合と業務停滞を適宜に抑制可能な分散トランザクション制御システム及び分散トランザクション制御方法を提供する。
【解決手段】分散トランザクション制御システム10は、調停者装置100は、参加者端末200からの入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部111へ入力する判定部110と、判定部110からの入力である前記判定の内容を、分散合意にて一つに決定する分散合意処理部111と、分散合意処理部111の出力を決着結果として参加者装置200に通知する決着部112と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
トランザクション決着における、参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムであって、
前記判定部は、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、
前記分散合意処理部は、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、
前記決着部は、前記分散合意処理部の出力を決着結果として前記参加者装置に通知するものである、
ことを特徴とする分散トランザクション制御システム。
【請求項2】
前記トランザクションの開始者装置は、
前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部を有し、
前記参加者一覧管理部は、前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、
前記調停者装置それぞれにおける前記判定部は、前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行うものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項3】
前記開始者装置の前記参加者一覧管理部は、
予め保持する枝情報を取得して前記参加者一覧を生成するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項4】
前記判定部は、
前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項5】
前記開始者装置は、
トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項6】
前記参加者装置は、トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行うものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項7】
前記参加者装置は、トランザクション処理の結果に関与しない場合、棄権投票を行い、
前記調停者装置の判定部は、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外するものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項8】
トランザクション決着における、参加者装置からの入力投票を待ち合わせて判定する判
定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムにおいて、
前記調停者装置における、
前記判定部が、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、
前記分散合意処理部が、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、
前記決着部が、前記分散合意処理部の出力を決着結果として前記参加者装置に通知する、
ことを特徴とする分散トランザクション制御方法。
【請求項9】
前記トランザクションの開始者装置において、
前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部が、
前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、
前記調停者装置それぞれにおける前記判定部が、
前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行う、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【請求項10】
前記開始者装置の前記参加者一覧管理部が、
予め保持する枝情報を取得して前記参加者一覧を生成する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項11】
前記判定部が、
前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項12】
前記開始者装置が、
トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項13】
前記参加者装置が、
トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行う、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【請求項14】
前記参加者装置が、
トランザクション処理の結果に関与しない場合、棄権投票を行い、
前記調停者装置の判定部が、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外する、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散トランザクション制御システム及び分散トランザクション制御方法に関するものである。
【背景技術】
【0002】
マイクロサービス・アーキテクチャの採用が始まりつつあり、分散トランザクションの手段として弱整合性のSagaが提唱されている。ところが、整合性の確保が課題となっている。一方、エンタープライズシステムでは強整合性が求められるため、強整合分散トランザクション技術における課題解決に向け、いくつかの技術開発等が進んでいる。
例えば、二相コミットの単一障害点の課題を解決する技術として、非特許文献1及び非特許文献2に示すものが存在する。これらが示す技術においては、トランザクション調停者を分散合意で冗長化することで、単一障害点の課題解決を試みている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Generating Fast Atomic Commit from Hyperfast Consensus,F. Goncalves Pereira Jean-Pierre Le Narzul,Springer-VerlagBerlin, Heidelberg,Conference:Salvador Brazil October 25-28,2005
【非特許文献2】Consensus on Transaction Commit, Microsoft Research 1 January 2004 revised 19 April 2004, 8 September 2005, 5 July 2017 MSR-TR-2003-96
【発明の概要】
【発明が解決しようとする課題】
【0004】
分散トランザクションではXA準拠の二相コミット技術が普及しているが、トランザクション調停者が単一障害点となることや、通信遅延によりヒューリスティック不整合や業務停滞が発生する課題があった。
また、分散アプリケーション呼出トポロジに沿って二相コミットを行うため、枝部分が単一障害点となる、通信時間増加によりDBロック期間が増加し並行性を阻害する、という課題も存在する。
【0005】
従来技術にて例示したように、トランザクション調停者が単一障害点である課題については、分散合意によって解決する手法は存在する。ただし、そこで開示されているのは、トランザクションのコミット処理部分のみであり、XAやトポロジの扱いとの親和性がない。
【0006】
そこで本発明の目的は、二相コミットに起因する不整合と業務停滞を適宜に抑制可能とする技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決する本発明の分散トランザクション制御システムは、トランザクション決着における、参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムであって、前記判定部は、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、前記分散合意処理部は、複数の前記判定
部からの入力である前記判定の内容を、分散合意にて一つに決定し、前記決着部は、前記分散合意処理部の出力を決着結果として前記参加者装置に通知するものである、ことを特徴とする。
また、本発明の分散トランザクション制御方法は、トランザクション決着における、参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムにおいて、前記調停者装置における、前記判定部が、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、前記分散合意処理部が、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、前記決着部が、前記分散合意処理部の出力を決着結果として前記参加者装置に通知する、ことを特徴とする。
【発明の効果】
【0008】
本発明によれば、二相コミットに起因する不整合と業務停滞を適宜に抑制可能となる。
【図面の簡単な説明】
【0009】
図1】本実施形態の分散トランザクション制御システムの構成例を示す図である。
図2】本実施形態における計算機のハードウェア構成例を示す図である。
図3】本実施形態における枝情報の構成例を示す図である。
図4A】本実施形態の分散トランザクション制御方法における判定部の処理フロー例を示す図である。
図4B】本実施形態の参加者一覧テーブルの構成例を示す図である。
図4C】本実施形態の投票テーブルの構成例を示す図である。
図5A】本実施形態の分散トランザクション制御方法における参加者一覧登録の処理フロー例を示す図である。
図5B】本実施形態における参加者一覧テーブルの構成例を示す図である。
図5C】本実施形態における参加者の親子関係例を示す図である。
図6】本実施形態における参加者の追加と登録の処理動作例を示す図である。
図7】本実施形態における開始装置の処理例を示すフロー図である。
図8】本実施形態における参加者装置の処理例を示すフロー図である。
【発明を実施するための形態】
【0010】
<システム構成>
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態の
分散トランザクション制御システム10を含むネットワーク構成図である。図1に示す分散トランザクション制御システム10は、二相コミットに起因する不整合と業務停滞を適宜に抑制可能とするコンピュータシステムである。
【0011】
本実施形態の分散トランザクション制御システム10は、図1で示すように、ネットワーク1を介して、調停者装置100、参加者装置200、及び開始者装置300らが通信可能に接続され、構成されている。
【0012】
このうち調停者装置100は、主に本実施形態の分散トランザクション制御システム10を構成する情報処理装置であり、判定部110、分散合意処理部111、及び決着部112の各機能を備えている。
【0013】
また、判定部110は、開始者装置300から得た参加者一覧に基づく参加者一覧テー
ブル1101や、参加者装置200からの入力投票を集約する投票テーブル1102を保持、管理する。
【0014】
なお、調停者装置100は冗長化されており、本実施形態における分散トランザクション制御システム10において複数配置されているものとする。
【0015】
また、参加者装置200は、トランザクション管理部210、プリペア処理部211、合意確定部212、及びコミット・ロールバック処理部213の各機能を備えている。このうちトランザクション管理部210は、枝情報225を保持、管理している。
【0016】
この枝情報225は、二相コミットを行うための、分散アプリケーション呼出のトポロジに関する情報となる(図3参照)。トランザクション管理部210は、いわゆるトランザクション・マネージャとも呼ばれ、XAリソース・インスタンスを使用して各トランザクションのブランチすなわち枝を準備して協調させ、すべてのブランチを適切にコミットまたはロールバックする存在である。こうしたトランザクション管理部210の機能自体は、開始者装置300におけるトランザクション管理部311も同様に備える。
【0017】
一方、開始者装置300は、参加者一覧管理部310、及びトランザクション管理部311の各機能を有している。このうち参加者一覧管理部310は、本開始者装置300により発行されたトランザクションの処理を分担する、各参加者の情報に該当する。また、トランザクション管理部311は、枝情報325を有している。この枝情報325は、二相コミットを行うための、分散アプリケーション呼出のトポロジに関する情報となる(図3参照)。
<ハードウェア構成>
また、本実施形態の分散トランザクション制御システム10を構成する、各装置らのハードウェア構成例を図2に示す。ここで対象とする装置は、調停者装置100、参加者装置200、及び開始者装置300となる。
【0018】
図2で例示するように、分散トランザクション制御システム10を構成する各装置、すなわち計算機50は、記憶装置51、メモリ53、演算装置54、および通信装置55、を備える。
【0019】
このうち記憶装置51は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される。
【0020】
また、メモリ53は、RAMなど揮発性記憶素子で構成される。
【0021】
また、演算装置54は、記憶装置51に保持されるプログラム512をメモリ53に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうCPUである。
【0022】
また、通信装置55は、ネットワーク1と接続して他装置との通信処理を担うネットワークインターフェイスカード等を想定する。
【0023】
なお、計算機50は エンドユーザからのキー入力や音声入力を受け付ける入力装置、処理データの表示を行うディスプレイ等の出力装置、を更に備えるとすれば好適である。
【0024】
また、記憶装置51内には、本実施形態の分散トランザクション制御システム10を構成する計算機50として必要な機能を実装する為のプログラム512に加えて、各種データ513が少なくとも記憶されている。
<前提となる概念や処理>
ここで、本実施形態における分散トランザクション制御の基本的な概念やその処理について説明しておく。既に述べたように、分散トランザクションではXA準拠の二相コミット技術が普及しているが、トランザクション調停者が単一障害点となることや、通信遅延によりヒューリスティック不整合や業務停滞が発生する課題があった。
【0025】
また、分散アプリケーション呼出トポロジに沿って二相コミットを行うため、枝部分が単一障害点となる、通信時間増加によりDBロック期間が増加し並行性を阻害する、という課題も存在する。従来技術にて例示したように、トランザクション調停者が単一障害点である課題については、分散合意によって解決する手法は存在する。ただし、そこで開示されているのは、トランザクションのコミット処理部分のみであり、XAやトポロジの扱いとの親和性がない。
【0026】
そこで本発明では、二相コミットに起因する不整合と業務停滞を適宜に抑制可能とすることを目的として、以下の構成を採用した。すなわち、まず、単一障害点を除去するため、トランザクションの調停者装置100を分散合意で冗長化した構成としている(図1参照)。
【0027】
また、トランザクションのブランチすなわち枝に起因する単一障害点と、通信遅延の課題を除去するため、コミット処理のトポロジを平坦化する。この平坦化には、トランザクションのプリペア投票者一覧、すなわち参加者一覧の集積が必要である。そこで、本実施形態においては、アプリケーション呼出元たる開始者装置300が保持するXAの枝情報325(図3参照)を使用して参加者一覧を決定する。これにより、従来技術(Paxos Commit文献)で発生する、参加者側からの枝登録通信を抑える。また、アプリケーション呼出しが多段の場合、中間段(にあたる参加者装置200)から、トポロジ情報たる枝情報225を部分木として調停者装置100に送信し、判定部110で参加者全体を再構成する。
【0028】
こうした前提の下、トランザクションの開始者装置300は、XAの枝情報325を使用して参加者一覧を生成し、調停者装置100に配信する。
【0029】
また、参加者装置200は、当該トランザクションの枝に関して各々プリペアを実行する(または、開始者装置300から、各参加者装置200にプリペア要求を配信する)。参加者装置200は、そのプリペア成否を、冗長化された各調停者装置100へ送信することとなる。
【0030】
各調停者装置100の判定部110は、開始者装置300から得ている参加者一覧と、参加者装置200から得たプリペア成否が配信されるのを、実時間タイムアウトで待ちつつ、決着結果を判定する。この判定は、参加者装置200それぞれから得たプリペア成否がすべて成功ならコミットに、一つでも失敗であればそれ以上待つことなくロールバックに決定する。
【0031】
また、各調停者装置100の判定部110は、分散合意を使用して決着結果を決定し、参加者装置200に対し、決着結果を配送する。他方、参加者装置200は、決着結果に従い、コミット/ロールバックする。
<フロー例:調停者装置の判定部>
以下、本実施形態における分散トランザクション制御方法の実際手順について図に基づき説明する。以下で説明する分散トランザクション制御方法に対応する各種動作は、分散トランザクション制御システム10を構成する各装置らがメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【0032】
図4Aは、本実施形態における分散トランザクション制御方法のフロー例を示す図であり、具体的には、調停者装置100の判定部110における処理フロー例を示す。
【0033】
この場合、調停者装置100の判定部110は、参加者装置200らからプリペア成否すなわち入力投票を受信したか、またはタイムアウトを検知する(s10)。このタイムアウトの時間長については、予め知見のある者が規定しているものとする。
【0034】
上述のs10にて、タイムアウトを検知した場合(s11:Y)、調停者装置100の判定部110は、処理をs16に遷移させ、当該トランザクションについてはロールバックと判定し、その結果を分散合意処理部111に出力する(s21)。
【0035】
一方、上述のs10にて、タイムアウトを検知しなかった場合(s11:N)、調停者装置100の判定部110は、参加者装置200からの受信メッセージが入力投票の棄権を示すものか判定する(s12)。
【0036】
上述の判定の結果、受信メッセージが「棄権」を示すものであった場合(s12:Y)、調停者装置100の判定部110は、参加者一覧テーブル1101(図4B参照)から、当該参加者の情報を削除し(s13)、処理をs10に戻す。
【0037】
一方、上述の判定の結果、受信メッセージが「棄権」を示すものでなかった場合(s12:N)、調停者装置100の判定部110は、受信メッセージが入力投票か判定する(s14)。
【0038】
この判定の結果、受信メッセージが入力投票であった場合(s14:Y)、調停者装置100の判定部110は、入力投票が「失敗」を示すものであれば(s15:Y)、処理をs16に遷移させ、上述と同様、当該トランザクションについてはロールバックと判定し、その結果を分散合意処理部111に出力する(s21)。
【0039】
一方、上述の判定の結果、入力投票が「失敗」を示すものでなければ(s15:N)、調停者装置100の判定部110は、参加者の情報と入力投票の内容を、投票テーブル1102(図4C参照)に登録し、処理をs19に遷移させる。
【0040】
一方、s14の判定の結果、受信メッセージが入力投票でなかった場合(s14:N)、調停者装置100の判定部110は、s18に処理を遷移させ、参加者一覧を参加者一覧テーブル1101に登録し、その一覧状態を「完成」に設定する(図4B図4C参照)。
【0041】
続いて、調停者装置100の判定部110は、一覧状態が完成、かつ参加者一覧テーブル1101に対応する入力投票が全て「成功」となっているか判定する(s19)。
【0042】
この判定の結果、一覧状態が完成し、かつ入力投票が全て「成功」となっている状態にはない場合(s19:N)、調停者装置100の判定部110は、処理をs10に戻す。
【0043】
一方、上述の判定の結果、一覧状態が完成し、かつ入力投票が全て「成功」となっている場合(s19:Y)、調停者装置100の判定部110は、当該トランザクションはコミットと判定し(s20)、その結果を分散合意処理部111に出力する(s21)。
【0044】
ここまでに示したように、本実施形態においては、動的なアプリケーション呼出トポロジに対応しつつ、トポロジに沿ったツリー形状二相コミットの課題を解決するため、コミ
ット処理はツリー形状ではなく、トランザクションの調停者装置100が行う。このために、調停者装置100は参加者一覧を入力情報として受取り使用することとなる。
<フロー例:動的なアプリケーション呼出しトポロジの場合における、調停者装置の判定部>
続いて、調停者装置100の判定部110における処理フローについて、図5A図5Cに基づき説明する。動的なアプリケーション呼出しトポロジの場合、各枝は、枝の上側と直下のノードとの関係などの部分的な情報しか持たないため、調停者装置100に部分的な情報を集約して、トポロジ全体を再構築して、参加者一覧を得るものとする。
【0045】
この場合、判定部110は、予め保持する枝情報325及び参加者装置200が保持する枝情報225を、それぞれ取得して(s30、s31、s32)、参加者一覧テーブル1101を生成する(s33、s34)。図5Aの処理は、動的なアプリケーション呼出しトポロジの場合における、図4Aのs18の処理を置き換えたものである。また、動的なアプリケーション呼出しトポロジの場合、図4Aのs10におけるメッセージ受信は、枝情報の断片の入力も含む。
【0046】
なお、図5Cに示すように、ここで想定している開始者、参加者、子参加者の関係性は、開始者を起点として、開始者から直接にトランザクションを受けてプリペア成否を判定する参加者1、3と、この参加者1、3からの処理要求を受けて、当該トランザクションの全部または一部についてプリペア成否を判定する子参加者である、参加者2、4が存在する構成となっている。
【0047】
なお、この場合の参加者一覧管理部310は、参加者のうち子参加者が確定していない状態、すなわち参加者一覧テーブル1101の「子確定状態」欄に「未確定」のものがないか判定する(s33)。この判定の結果、「子確定状態」欄に「未確定」のものがない場合(s33:Y)、参加者一覧管理部310は、一覧状態を「完成」にし(s34。図5B参照)、処理を終了する。
【0048】
こうした参加者の追加と登録の処理動作の例を図6で示す。ここで示すように、開始者を含めた各参加者の親子関係は、状態(a)から、状態(b)、状態(c)、そして状態(d)と変化する。
【0049】
このうち状態(a)では、参加者は開始者のみであり、参加者一覧テーブル1101も、この開始者の情報のみが登録される。
【0050】
また、状態(b)では、上述の開始者の依頼を受けた参加者1、この参加者1から依頼を受けた参加者2が登場し、参加者一覧テーブル1101にも、開始者を含む各参加者の情報が登録されている。ただし、この時、開始者を含む参加者1、2のいずれも、トランザクションの処理中である。
【0051】
また、状態(c)では、上述の状態(b)から参加者1,2における処理は完了し、開始者のみが処理中の状態である。当然ながら、その状態は、参加者一覧テーブル1101にも設定されている。
【0052】
また、状態(d)では、上述の状態(c)における参加者構成に、参加者3、4が加わり、それぞれに皆、処理を完了した状態となっている。当然ながら、その状態は、参加者一覧テーブル1101にも設定されている。
<フロー例:開始者装置の参加者一覧送信>
上述のように参加者一覧テーブルを管理する開始者装置300は、それを図7で示すフローのように、最終的に調停者装置100に送信する。
【0053】
この場合、開始者装置300の参加者一覧管理部310は、参加者の呼出の有無(例:参加者1→参加者2、など)を、例えば、参加者の最後の呼出であることの設定情報、あるいは、参加者装置200からの通知など所定のデータから感知し(s40)、呼出がこれ以上ないか判定する(s41)。
【0054】
上述の判定の結果、呼出がこれ以上無いとなれば(s41:Y)、開始者装置300は、ここまでで得られた参加者一覧テーブルを調停者装置100に送信する(s42)。このように、開始者装置300は、トランザクション処理の完了を参加者一覧テーブルの確定にて認識し、当該参加者一覧を調停者装置100に送信して、決着投票を開始指示するものである。
【0055】
一方、上述の判定の結果、呼出がまだあるとなれば(s41:N)、開始者装置300は、処理を続行するとして(s43)、処理をs40に戻す。
【0056】
なお、開始者装置300や参加者装置200は、任意のタイミングと方法で判定部110へ情報を送信してよい。タイミングについては、開始者や参加者、親子関係が変化する都度、または、親子関係が確定したタイミングなどが可能である。送信方法については、判定部110へ直接送信する、親子関係にある呼出元への応答メッセージに重畳して呼出元に戻して、呼出元がまとめて判定部110へ送信する、などが可能である。
【0057】
なお、これらのタイミングと方法に限定される訳ではなく、情報が判定部110へ到達すれば他のタイミングと方法でも構わない。
【0058】
なお、開始者装置300は、コミットに必要な通信時間を低減するため、アプリケーション呼出しが全て完了して応答が返るまで待たず、参加者一覧が確定した最速タイミングで参加者一覧を調停者装置100に送信する。最速タイミングの決定方法は多岐の代替方法があるため、所定の情報から得ることとする。
<参加者装置のフロー>
続いて、参加者装置200における、プリペア成否の投票を行うフローについて、図8に基づき説明する。この場合、参加者装置200は、トランザクション処理の完了を、例えば、当該参加者装置と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し(s51、s52)、プリペア投票を調停者装置100に送信する(s53)。
【0059】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【0060】
こうした本実施形態によれば、二相コミットに起因する不整合と業務停滞を適宜に抑制可能となる。
【0061】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の分散トランザクション制御システムにおいて、前記トランザクションの開始者装置は、前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部を有し、前記参加者一覧管理部は、前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、前記調停者装置それぞれにおける前記判定部は、前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行うものである、としてもよい。
【0062】
これによれば、動的なアプリケーション呼出トポロジに対応しつつ、トポロジに沿った
ツリー形状二相コミットの課題を解決するため、コミット処理はツリー形状ではなく、参加者一覧を入力情報としてトランザクション調停者が行うことが可能となる。
【0063】
また、本実施形態の分散トランザクション制御システムにおいて、前記開始者装置の前記参加者一覧管理部は、予め保持する枝情報を取得して前記参加者一覧を生成するものである、としてもよい。
【0064】
これによれば、呼出し元である開始者装置が、自身で保持する枝情報を使用し、結果として参加者一覧を得る通信時間とオーバヘッドが減少する。
【0065】
また、本実施形態の分散トランザクション制御システムにおいて、前記判定部は、前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成するものである、としてもよい。
【0066】
これによれば、動的なアプリケーション呼出しトポロジにおいて、各枝は、枝の上側と直下のノードとの関係などの部分的な情報しか持たないが、調停者装置にて部分的な情報を集約してトポロジ全体を再構築して、参加者一覧を得ることが可能となる。ひいては、多段呼出構成で参加者一覧を得る通信時間が減少する。
【0067】
また、本実施形態の分散トランザクション制御システムにおいて、前記開始者装置は、トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示するものである、としてもよい。
【0068】
これによれば、アプリケーション呼出しが全て完了して応答が返るまで待たず、参加者一覧が確定した最速タイミングで参加者一覧を調停者装置に提供可能となり、コミットに必要な通信時間を低減できる。
【0069】
また、本実施形態の分散トランザクション制御システムにおいて、前記参加者装置は、トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行うものである、としてもよい。
【0070】
これによれば、参加者の処理が完了したタイミングで、早期にプリペア投票を行うこととなり、コミットに必要な通信時間を低減可能となる。
【0071】
また、本実施形態の分散トランザクション制御システムにおいて、前記参加者装置は、トランザクション処理の結果に関与しない場合、棄権投票を行い、前記調停者装置の判定部は、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外するものである、としてもよい。
【0072】
これによれば、参加者がリードオンリだった場合や、データベースをアクセスしなかった場合など、トランザクションの結果に関与しない場合にも柔軟に対応可能となる。
【0073】
また、本実施形態の分散トランザクション制御方法において、前記トランザクションの開始者装置において、前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部が、前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、前記調停者装置それぞれにおける前記判定部が、前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行う、としてもよい。
【0074】
また、本実施形態の分散トランザクション制御方法において、前記開始者装置の前記参加者一覧管理部が、予め保持する枝情報を取得して前記参加者一覧を生成する、としてもよい。
【0075】
また、本実施形態の分散トランザクション制御方法において、前記判定部が、前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成する、としてもよい。
【0076】
また、本実施形態の分散トランザクション制御方法において、前記開始者装置が、トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示する、としてもよい。
【0077】
また、本実施形態の分散トランザクション制御方法において、前記参加者装置が、トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行う、としてもよい。
【0078】
また、本実施形態の分散トランザクション制御方法において、前記参加者装置が、トランザクション処理の結果に関与しない場合、棄権投票を行い、前記調停者装置の判定部が、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外する、としてもよい。
【符号の説明】
【0079】
1 ネットワーク
10 分散トランザクション制御システム
50 計算機
51 記憶装置
512 プログラム
513 各種データ
53 メモリ
54 演算装置
55 通信装置
100 調停者装置
110 判定部
1101 投票テーブル
111 分散合意処理部
112 決着部
200 参加者装置
210 トランザクション管理部
211 プリペア処理部
212 合意確定部
213 コミット・ロールバック処理部
225 枝情報
300 開始者装置
310 参加者一覧管理部
3101 参加者一覧
311 トランザクション管理部
325 枝情報
図1
図2
図3
図4A
図4B
図4C
図5A
図5B
図5C
図6
図7
図8
【手続補正書】
【提出日】2023-08-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
トランザクションのコミット又はロールバックを決定するトランザクション決着に伴い、プリペア投票者たる参加者の参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムであって、
前記判定部は、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、
前記分散合意処理部は、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、
前記決着部は、前記分散合意処理部の出力を決着結果として前記参加者装置に通知するものである、
ことを特徴とする分散トランザクション制御システム。
【請求項2】
前記トランザクションの開始者装置は、
前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部を有し、
前記参加者一覧管理部は、前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、
前記調停者装置それぞれにおける前記判定部は、前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行うものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項3】
前記開始者装置の前記参加者一覧管理部は、
予め保持する枝情報を取得して前記参加者一覧を生成するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項4】
前記判定部は、
前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項5】
前記開始者装置は、
トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示するものである、
ことを特徴とする請求項2に記載の分散トランザクション制御システム。
【請求項6】
前記参加者装置は、トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行うものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項7】
前記参加者装置は、トランザクション処理の結果に関与しない場合、棄権投票を行い、
前記調停者装置の判定部は、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外するものである、
ことを特徴とする請求項1に記載の分散トランザクション制御システム。
【請求項8】
トランザクションのコミット又はロールバックを決定するトランザクション決着に伴い、プリペア投票者たる参加者の参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムにおいて、
前記調停者装置における、
前記判定部が、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、
前記分散合意処理部が、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、
前記決着部が、前記分散合意処理部の出力を決着結果として前記参加者装置に通知する、
ことを特徴とする分散トランザクション制御方法。
【請求項9】
前記トランザクションの開始者装置において、
前記トランザクション決着に参加する参加者一覧を管理する参加者一覧管理部が、
前記参加者一覧を前記調停者装置それぞれの判定部へ送信し、
前記調停者装置それぞれにおける前記判定部が、
前記入力投票について判定する際、タイムアウト前に完成している前記参加者一覧に基づき、全ての参加者からの入力投票が得られていることを前提に、前記判定を行う、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【請求項10】
前記開始者装置の前記参加者一覧管理部が、
予め保持する枝情報を取得して前記参加者一覧を生成する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項11】
前記判定部が、
前記開始者装置にて予め保持する枝情報及び前記参加者装置が保持する枝情報を、それぞれ取得して前記参加者一覧を生成する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項12】
前記開始者装置が、
トランザクション処理の完了を前記参加者一覧の確定にて認識し、当該参加者一覧を前記調停者装置に送信して、決着投票を開始指示する、
ことを特徴とする請求項9に記載の分散トランザクション制御方法。
【請求項13】
前記参加者装置が、
トランザクション処理の完了を、当該参加者と処理の入出力関係がある一連の参加者それぞれでの処理が完了したタイミングと認識し、プリペア投票を行う、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【請求項14】
前記参加者装置が、
トランザクション処理の結果に関与しない場合、棄権投票を行い、
前記調停者装置の判定部が、前記参加者装置からの入力投票が前記棄権投票の場合、当該参加者装置からの入力投票を前記判定から除外する、
ことを特徴とする請求項8に記載の分散トランザクション制御方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】変更
【補正の内容】
【0007】
上記課題を解決する本発明の分散トランザクション制御システムは、トランザクションのコミット又はロールバックを決定するトランザクション決着に伴い、プリペア投票者たる参加者の参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムであって、前記判定部は、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、前記分散合意処理部は、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、前記決着部は、前記分散合意処理部の出力を決着結果として前記参加者装置に通知するものである、ことを特徴とする。
また、本発明の分散トランザクション制御方法は、トランザクションのコミット又はロールバックを決定するトランザクション決着に伴い、プリペア投票者たる参加者の参加者装置からの入力投票を待ち合わせて判定する判定部と、前記判定部の判定結果を決定する分散合意処理部と、前記決定の結果に基づいて当該トランザクションのコミットかロールバックかを決定する決着部とをそれぞれ有する、冗長化された調停者装置を含むシステムにおいて、前記調停者装置における、前記判定部が、前記入力投票がタイムアウトした場合、プリペア失敗の投票に置換し、全ての入力投票がプリペア成功の投票の場合、コミットに判定し、各入力投票のうち一つでもプリペア失敗の投票を含む場合、ロールバックに判定し、当該判定の内容を分散合意処理部へ入力し、前記分散合意処理部が、複数の前記判定部からの入力である前記判定の内容を、分散合意にて一つに決定し、前記決着部が、前記分散合意処理部の出力を決着結果として前記参加者装置に通知する、ことを特徴とする。