JP2021501398A - 時間間隔カウンタを使用してコンピュータクラスタを管理すること - Google Patents

時間間隔カウンタを使用してコンピュータクラスタを管理すること Download PDF

Info

Publication number
JP2021501398A
JP2021501398A JP2020521944A JP2020521944A JP2021501398A JP 2021501398 A JP2021501398 A JP 2021501398A JP 2020521944 A JP2020521944 A JP 2020521944A JP 2020521944 A JP2020521944 A JP 2020521944A JP 2021501398 A JP2021501398 A JP 2021501398A
Authority
JP
Japan
Prior art keywords
request
time interval
processing
time
counter
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
JP2020521944A
Other languages
English (en)
Other versions
JP7314127B2 (ja
JP2021501398A6 (ja
Inventor
クレイグ ダブリュ. スタンフィル
クレイグ ダブリュ. スタンフィル
ジョセフ スケフィントン ザ・サード ホーリー
ジョセフ スケフィントン ザ・サード ホーリー
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
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 アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2021501398A publication Critical patent/JP2021501398A/ja
Publication of JP2021501398A6 publication Critical patent/JP2021501398A6/ja
Application granted granted Critical
Publication of JP7314127B2 publication Critical patent/JP7314127B2/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1492Generic software techniques for error detection or fault masking by run-time replication performed by the application software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1088Transfer of content, software, digital rights or licenses by using transactions with atomicity, consistency, or isolation and durability [ACID] properties
    • 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
    • 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
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Mathematical Physics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Hardware Redundancy (AREA)
  • Electrotherapy Devices (AREA)

Abstract

多くの処理ノードを有する分散データ処理システム内の状態更新要求を処理する方法は、現在の時間間隔を示す作業カウンタと、1つの時間間隔を示す複製カウンタであって当該時間間隔に関連付けられたすべての要求が多くの処理ノードの複数の処理ノードにおいて複製される複製カウンタと、多くの時間間隔のうちの1つの時間間隔を示す持続性カウンタであって当該時間間隔に関連付けられたすべての要求が持続性ストレージ内に格納される持続性カウンタと、を含む多くのカウンタを保持する工程を含む。これらのカウンタは状態更新要求の処理を管理するために使用される。

Description

関連出願の相互参照
本出願は、参照のためその全体を本明細書に援用する2017年10月31日出願の米国特許出願第62/579,225号明細書からの優先権を主張する。
本明細書はコンピュータクラスタを管理することに関する。
データフロー計算に対する1つの手法は、グラフ(「データフローグラフ」と呼ばれる)のノード(頂点)に対応するコンピュータコンポーネントがグラフのリンク(有向辺)に対応するデータフローにより結合されるグラフベース表現を使用する。データフローリンクにより上流コンポーネントへ接続される下流コンポーネントは入力データ要素の順序付けられたストリームを受信し、受信された順番に入力データ要素を処理し、そして任意選択的に、出力データ要素の1つ又は複数の対応ストリームを生成する。このようなグラフベース計算を実行するためのシステムは参照により本明細書に援用する米国特許第5,966,072号明細書、表題「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。この先行特許に記載された手法に関係する実施形態では、各コンポーネントは、通常は複数のコンピュータサーバのうちの1つの上でホストされる処理として実現される。各コンピュータサーバは、どの時点においてもアクティブである複数のこのようなコンポーネント処理を有し得、オペレーティングシステム(例えばUnix)スケジューラが、当該サーバ上でホストされるコンポーネント間で資源(例えばCPU時間(processor time)及び/又はプロセッサコア)を共有する。このような実施形態では、コンポーネント間のデータフローは、オペレーティングシステムのデータ通信サービスとサーバ同士を接続するデータネットワーク(例えばパイプ、TCP/IPセッションなどと称する)とを使用して実施され得る。コンポーネントのサブセットは通常、計算全体からの(例えばデータファイル、データベーステーブル、及び外部データフローに対する)データのソース及び/又はシンクとして働く。コンポーネント処理及びデータフローが例えば連携処理により確立された後、データは、各コンポーネントにおける入力データの可用性により通常は規定されるグラフとして表現された計算を実施するとともに各コンポーネントのコンピュータ資源をスケジューリングするコンピュータシステム全体を貫流する。したがって、様々なコンポーネントが様々な処理により並列に実行される(同じ又は異なるサーバコンピュータ又はプロセッサコア上でホストされる)ことを少なくとも可能にすることにより並列性が実現され得る。ここでは、データフローグラフを介し様々な経路上で並列に実行する様々なコンポーネントが本明細書ではコンポーネント並列性と呼ばれ、データフローグラフを介し同じ経路の異なる部分上で並列に実行する様々なコンポーネントは本明細書ではパイプライン並列性と呼ばれる。
他の形式の並列性もまたこのような手法により支援される。例えば、入力データセットは例えばデータセットのレコード内のフィールドの値の区画に従って区画化され得、各部分はデータセットのレコードを処理するコンポーネントの別個のコピーへ送信される。コンポーネントのこのような別のコピー(又は「インスタンス」)は、別個のサーバコンピュータ又はサーバコンピュータの別個のプロセッサコア上で実行され得、これにより、本明細書ではデータ並列性と呼ばれるものを実現する。別個のコンポーネントの結果は、単一データフロー又はデータセットを再び形成するためにマージされ得る。コンポーネントのインスタンスを実行するために使用されるコンピュータ又はプロセッサコアの数はデータフローグラフが開発される時点で開発者により指定されるだろう。
様々な手法がこのような手法の効率を改善するために使用され得る。例えば、コンポーネントの各インスタンスは、例えば複数のコンポーネント(例えば、より大きなグラフの連結サブグラフを形成するコンポーネント)を実現するために1つのオペレーティングシステム処理を使用することにより、それ自身のオペレーティングシステム処理において必ずしもホストされる必要は無い。
上述の手法の少なくともいくつかの実施形態は、根底にあるコンピュータサーバ上のその結果の処理の実行の効率に関する制限に悩まされる。例えば、この制限は、データ並列性の程度を変更するために、様々なコンポーネントをホストするサーバを変更するために、及び/又は様々なコンピュータ資源上の負荷をバランスさせるために、グラフの実行中のインスタンスを再構成する際の困難性に関連し得る。既存グラフベースコンピュータシステムはまた、しばしば余りにも多くの処理が不必要に開始されて膨大な量のメモリを浪費するので、遅い起動時間に悩まされる。一般的に、処理はグラフ実行の起動で始まり、グラフ実行が終了すると終る。
計算全体がより小さな部分に分割される分散計算のための他のシステムが使用され、これらの部分は、マスターコンピュータサーバから、それぞれが独立に計算を行いその結果をマスターサーバへ戻す様々な他の(例えば「スレーブ」)コンピュータサーバへ分散される。このような手法のうちのいくつかは「グリッドコンピューティング」と呼ばれる。しかし、このような手法は通常、これらの部分を呼び出すマスターコンピュータサーバを介することを除いて、データを計算部分間で渡すための機構を設けること無く又はこれらの部分の実行をスケジューリング及び/又は順序付けること無く、各計算の独立性に依存する。したがって、このような手法は、複数のコンポーネント間の相互作用に関与するホスティング計算に対する直接的及び効率的解を提供しない。
大きなデータセット上の分散計算のための別の手法は、例えばApache Hadoop(登録商標)システム内で具現化されるようなMapReduceフレームワークを活用する。通常、Hadoopは、各指名ファイルの一部分が分散される分散ファイルシステムを有する。ユーザは、次の2つの関数の観点で計算を規定する:分散されたやり方で指名入力のすべての部分上で実行されるマップ関数及びマップ関数実行の出力の一部分上で実行されるreduce関数。マップ関数実行の出力は、区画化され、分散ファイルシステム内で中間部分内に再び格納される。次に、reduce関数は中間部分を処理するために分散されたやり方で実行され、計算全体の結果を生じる。MapReduceフレームワーク内で表現され得る計算であってその入力と出力がmap−reduceフレームワークのファイルシステム内の格納のために修正可能である計算は効率的に実行され得るが、多くの計算は、このフレームワークと整合しない、及び/又は分散ファイルシステム内のそれらの入力及び出力をすべて有するようには容易に適応化されない。
一般的態様では、多くの処理ノードを有する分散データ処理システム内の状態更新要求を処理する方法は、処理ノードのうちの2つ以上を使用して複数の組の要求を処理する工程であって、各組の要求の各要求は、上記処理ノードのうちの1つにおいて状態更新を引き起こすように構成され、多くの時間間隔のうちの対応する時間間隔に関連付けられる、工程を含む。複数の組の状態更新要求は第1の時間間隔に関連付けられた第1組の要求を含む。
本方法はまた、分散データ処理システム内の多くの時間間隔のうちの現在の時間間隔及びその値を示す作業カウンタと、多くの時間間隔のうちの1つ時間間隔及びその値を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードの複数の処理ノードにおいて複製される、複製カウンタと、多くの時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、持続性カウンタを含む多くのカウンタを処理ノードのうちの1つにおいて管理する工程を含む。
本方法は、第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供する工程であって、第1のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む、工程を含む。第1のメッセージ内の複製カウンタは、第1の時間間隔に先立つ第2の時間間隔に関連付けられた多くの組の状態更新要求のうちの第2組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということを示す。第2の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製される。第1の時間間隔に関連付けられた第1組の要求のうちの少なくともいくつかの要求は処理ノードのうちの2つ以上において未だ複製されない。
本方法は、第1の処理ノードから第1の時間に続く第2の時間に第2のメッセージを他の処理ノードへ提供する工程を含む。第2のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第2のメッセージ内の複製カウンタの値は、第1の時間間隔に関連付けられた第1組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第2のメッセージは、第1組の要求のうちの1つ又は複数を持続的に格納することを第1組の処理ノードのうちの少なくとも1つに完了させる。
態様は以下の特徴のうちの1つ又は複数を含み得る。
作業カウンタは現在の時間間隔を自律的にインクリメントし得、複製カウンタは、多くの処理ノードのうちの他の処理ノードから第1の処理ノードにおいて受信されたメッセージに応答してインクリメントし得る。他の処理ノードの各処理ノードは処理ノードにおいて受信された状態更新要求の第1のカウントと処理ノードから送信された状態更新要求の第2のカウントとを複数の時間間隔の時間間隔毎に保持し得る。本方法は、第1の時間間隔の状態更新要求の第1のカウントと他の処理ノードの各処理ノードからの第1の時間間隔の状態更新要求の第2のカウントとを第1の処理ノードにおいて受信する工程と、第1の時間間隔の状態更新要求の受信された第1のカウントと第1の時間間隔の状態更新要求の第2のカウントとを集計する工程と、複製カウンタの値をインクリメントするべきかどうかを集計に基づき判定する工程とを含み得る。
本方法は、複製カウンタの値を第1のメッセージ内の複製カウンタの値から第2のメッセージ内の複製カウンタの値へインクリメントする工程を含み得る。本方法は、第1の時間間隔の状態更新要求の受信された第1のカウントと第1の時間間隔の状態更新要求の第2のカウントとを集計する工程は、第1の時間間隔の状態更新要求の受信された第1のカウントの合計と第1の時間間隔の状態更新要求の第2のカウントの合計との差分を計算する工程を含み得る。本方法は、第1の時間間隔の状態更新要求の受信された第1のカウントの合計と第1の時間間隔の状態更新要求の第2のカウントの合計との差が0であれば複製カウンタの値を第1のメッセージ内の複製カウンタの値から第2のメッセージ内の複製カウンタの値へインクリメントする工程を含み得る。
他の処理ノードの各処理ノードは、処理ノードにより受信され最新の時間間隔に関連付けられたすべての状態更新要求が処理ノードにおいて持続的なものにされた多くの時間間隔のうちの最新の時間間隔の指標を保持し得る。本方法は、他の処理ノードの各処理ノードからの最新の時間間隔の指標を第1の処理ノードにおいて受信する工程と持続性カウンタをインクリメントするべきかどうかを最新の時間間隔の指標に基づき判定する工程とを含み得る。
本方法は、持続性カウンタを最新の時間間隔の指標に関連付けられた最も早い時間間隔へインクリメントする工程を含み得る。状態更新要求はデータ処理タスク、データ処理タスク結果及びデータレコードのうちの1つ又は複数を含み得る。
別の一般的態様では、多くの処理ノードを含む分散データ処理システム内の状態更新要求を処理するためのソフトウェアがコンピュータ可読媒体上に非一時的形式で格納される。ソフトウェアは、コンピュータシステムに多くの処理ノードのうちの2つ以上を使用して多くの組の要求を処理させるための指示を含む。各組の要求の各要求は、多くの処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、多くの時間間隔のうちの対応時間間隔に関連付けられる。多くの組の要求は多くの時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む。
ソフトウェアはまた、コンピュータシステムに第1の処理ノードにおいて多くのカウンタを保持させるための指示を含む。カウンタは、分散データ処理システム内の多くの時間間隔のうちの現在の時間間隔を示す作業カウンタと、多くの時間間隔のうちの1つの時間間隔を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードの複数の処理ノードにおいて複製される、複製カウンタと、多くの時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、持続性カウンタとを含む。
ソフトウェアはまた、コンピュータシステムに第1のメッセージを多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第1の時刻に提供させるための指示を含む。第1のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第1のメッセージ内の複製カウンタは、第1の時間間隔に先立つ第2の時間間隔に関連付けられた第2組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第2の時間間隔に先立つ多くの時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第1の時間間隔に関連付けられた第1組の要求のうちの少なくともいくつかの要求は多くの処理ノードのうちの2つ以上において未だ複製されない。
ソフトウェアはまた、コンピュータシステムに多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第2のメッセージを第1の時間に続く第2の時間に提供させるための指示を含む。第2のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第2のメッセージ内の複製カウンタの値は、第1の時間間隔に関連付けられた第1組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第2のメッセージは、第1組の要求のうちの1つ又は複数を持続的に格納することを第1組の処理ノードのうちの少なくとも1つに完了させる。
別の一般的態様では、多くの処理ノードを含む分散データ処理システム内の状態更新要求を処理するための装置は、多くの処理ノードを含む分散データ処理システムを含む。本装置はまた、多くの組の要求を処理するための1つ又は複数のプロセッサを多くの処理ノードのうちの2つ以上において含む。各組の要求の各要求は、多くの処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、多くの時間間隔のうちの対応する時間間隔に関連付けられ、多くの組の要求は多くの時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む。
本装置はまた、多くのカウンタを多くの処理ノードのうちの第1の処理ノードにおいて保持するための1つ又は複数のデータストレージを含む。多くのカウンタは、分散データ処理システム内の多くの時間間隔のうちの現在の時間間隔を示す作業カウンタと、多くの時間間隔のうちの1つの時間間隔を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードの複数の処理ノードにおいて複製される、複製カウンタと、多くの時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、持続性カウンタとを含む。
本装置はまた、多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供するための第1の出力を含む。第1のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第1のメッセージ内の複製カウンタは、第1の時間間隔に先立つ第2の時間間隔に関連付けられた第2組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第2の時間間隔に先立つ多くの時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第1の時間間隔に関連付けられた第1組の要求のうちの少なくともいくつかの要求は多くの処理ノードのうちの2つ以上において未だ複製されない。
本装置はまた、多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第2のメッセージを第1の時間に続く第2の時間に提供するための第2の出力を含む。第2のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第2のメッセージ内の複製カウンタの値は、第1の時間間隔に関連付けられた第1組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第2のメッセージは、第1組の要求のうちの1つ又は複数を持続的に格納することを第1組の処理ノードのうちの少なくとも1つに完了させる。
別の一般的態様では、分散データ処理システム内の状態更新要求を処理するためのコンピュータシステムは多くの処理ノードを含む。コンピュータシステムは、多くの処理ノードのうちの2つ以上を使用して多くの組の要求を処理する手段を含む。各組の要求の各要求は、多くの処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、多くの時間間隔のうちの対応時間間隔に関連付けられる。多くの組の要求は多くの時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む。
コンピュータシステムはまた、多くの処理ノードのうちの第1の処理ノードにおいて多くのカウンタを保持する手段を含む。多くのカウンタは、分散データ処理システム内の多くの時間間隔のうちの現在の時間間隔を示す作業カウンタと、多くの時間間隔のうちの1つの時間間隔を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードの複数の処理ノードにおいて複製される、複製カウンタと、多くの時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が多くの処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、持続性カウンタとを含む。
コンピュータシステムはまた、多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供する手段を含む。第1のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第1のメッセージ内の複製カウンタは、第1の時間間隔に先立つ第2の時間間隔に関連付けられた第2組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第2の時間間隔に先立つ多くの時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第1の時間間隔に関連付けられた第1組の要求のうちの少なくともいくつかの要求は多くの処理ノードのうちの2つ以上において未だ複製されない。
コンピュータシステムはまた、多くの処理ノードのうちの第1の処理ノードから他の処理ノードへ第2のメッセージを第1の時間に続く第2の時間に提供するための手段を含む。第2のメッセージは作業カウンタの値、複製カウンタの値及び持続性カウンタの値を含む。第2のメッセージ内の複製カウンタの値は、第1の時間間隔に関連付けられた第1組の要求のすべての要求が処理ノードのうちの2つ以上において複製されるということと第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が処理ノードのうちの2つ以上において複製されるということとを示す。第2のメッセージは、第1組の要求のうちの1つ又は複数を持続的に格納することを第1組の処理ノードのうちの少なくとも1つに完了させる。
様々な様相は以下の利点のうちの1つ又は複数を有し得る。
一般的に、本明細書において説明されるいくつかの特徴は、コンポーネント(又はコンポーネントの並列実行用コピー)が様々なサーバ上でホストされる上述の手法と比較して、計算(特にその基本的な仕様がグラフベースプログラム仕様の観点のものである計算)の計算効率の増加を可能にする(例えば、多くの処理ノードを含む分散データ処理システムは所与のコンピュータ資源の1ユニット当たりに処理されるレコードの数を増加させることができる)。例えば、コールクラスタコンポーネントは、グラフベースプログラム仕様で配置されており、グラフベースプログラム仕様により必要とされる計算がグラフベースプログラム仕様における処理ノードにより分散されたやり方で行われるように、グラフベースプログラム仕様と分散データ処理システムとをインターフェースするために使用される。さらに、本明細書において説明されるいくつかの特徴は、コンピュータ資源及び計算要件を変更することへ適応化する能力を提供する。本明細書において提供される計算手法は、例えば処理されるデータの特性に起因する、1つ又は複数のグラフベース計算の実行中に利用可能であるコンピュータ資源の変動に及び/又は計算負荷の変動又はこのような計算の様々なコンポーネントの負荷の時間変動に適応化することを許容する。例えば、態様は、処理ノードが分散データ処理システムへ追加される又はそれから除去される(又は、失敗し、オンラインに戻る)ことに適応化することができる。分散データ処理システムが適応化を提供する1つのやり方は本システム内のデータの複製及び持続性を管理することによるものであり、この管理は、処理ノードにより送信受信されるメッセージの計数を保持することと、すべてのメッセージが本システム内で複製される及び/又は持続させる時間間隔の指標を保持することとを含む。
様々な特性を有するコンピュータ資源を効率的に活用する(例えば、サーバ当たり様々な数のプロセッサ、プロセッサ当たりの様々な数のプロセッサコア、等々を有するサーバを使用することにより)こととそして均質環境と異質環境との両方を効率的に支援することとができる計算手法も提供される。本明細書において説明されるいくつかの特徴はまた、グラフベース計算の起動を急速なものにすることもできる。このような効率及び適応性を提供する一態様は、本明細書で述べるように処理ノードのクラスタの適切な管理を提供する。
態様はまた有利には「分散データ処理システムが、処理を適時ロールバックすることにより、発生するいかなる処理エラーからも回復することができる」という点でフォールトトレラントである。本システムは、多くの可能なロールバックシナリオを予想し、可能なロールバックシナリオのそれぞれにおいてロールバックを行うためのアルゴリズムを実施する。
データを処理するためのシステムのブロック図である。 コンピュータクラスタを含む計算システムのブロック図である。 様々な反復時間間隔の時間を表すクロックの概要図である。 手順を操作するための状態遷移図である。 計算システムの通常動作を示す。 第1のロールバック手順を示す。 第2のロールバック手順を示す。 第3のロールバック手順を示す。 第4のロールバック手順を示す。 第5のロールバック手順を示す。 第6のロールバック手順を示す。 第7のロールバック手順を示す。 第8のロールバック手順を示す。
図1は、コンピュータクラスタ管理技術が使用され得るデータ処理システム200の例を示す。システム200は、データの1つ又は複数のソース(ストレージデバイス、又はオンラインデータストリームへの1つ又は複数の接続など)を含み得るデータソース202を含み、その各々は様々なフォーマット(例えばデータベーステーブル、スプレッドシートファイル、フラットテキストファイル又はメインフレームにより使用される固有フォーマット)のうちの任意のものでデータを格納又は提供し得る。実行環境204は前処理モジュール206及び実行モジュール212を含む。実行環境204は、例えばUNIXオペレーティングシステムの1つのバージョン等の好適なオペレーティングシステムの制御下で1つ又は複数の汎用コンピュータ上でホストされ得る。例えば、実行環境204は、複数の処理ユニット(例えば中央処理ユニット:CPU)又はプロセッサコアを使用するコンピュータシステムの構成を含むマルチプルノードパラレルコンピュータ環境であってローカルシステム(例えば、対称型マルチ処理(SMP:symmetric multi−processing)コンピュータ等のマルチプロセッサシステム)又はローカル分散型システム(例えば、クラスタ又は超並列処理(MPP:massively parallel processing)として接続される複数プロセッサ)、又はリモート又はリモート分散型ネットワーク(例えば、ローカルエリアネットワーク(LAN:local area network)及び/又は広域ネットワーク(WAN:wide−area network)を介し接続される複数プロセッサ)、又はその任意の組み合せのいずれかであるマルチプルノードパラレルコンピュータ環境を含み得る。
前処理モジュール206は、プログラム仕様(例えば以下に説明されるグラフベースプログラム仕様)が実行モジュール212により実行される前に必要とされ得る任意の構成設定を行うことができる。前処理モジュール206は、データソース202を具現化し得る多様なタイプのシステム(様々な形式のデータベースシステムを含む)からデータを受信するためのプログラム仕様を構成し得る。データは、恐らくヌル値を含むそれぞれのフィールド(「属性」、「行」又は「列」とも呼ばれる)の値を有するレコードとして編成され得る。データソースからデータを読み出すためのデータ処理アプリケーションなどのコンピュータプログラムを最初に構成する際、前処理モジュール206は通常、当該データソース内のレコードに関するいくつかの初期フォーマット情報により開始する。コンピュータプログラムは本明細書で述べるようなデータフローグラフの形式で表現され得る。いくつかの状況では、データソースのレコード構造は当初知られていないかもしれなく、その代わりにデータソース又はデータの解析後に判定され得る。レコードに関する初期情報は、例えば個別値を表すビットの数、レコード内のフィールドの順序、及びビットにより表される値のタイプ(例えばストリング、符号付き/符号無し整数)を含み得る。
データソース202を提供するストレージデバイスは実行環境204に対してローカルであり得る、例えば、実行環境204をホストするコンピュータへ接続されたストレージ媒体(例えば、ハードドライブ208)上に格納され得る、又は、実行環境204に対してリモートであり得る、例えばリモート接続(例えばクラウドコンピュータインフラストラクチャにより提供される)上で実行環境204をホストするコンピュータと通信するリモートシステム(例えば、メインフレームコンピュータ210)上でホストされ得る。
実行モジュール212は、入力データを読み取る及び/又は出力データを生成するために前処理モジュール206により構成及び/又は生成されるプログラム仕様を実行する。出力データ214は、データソース202内又は実行環境204へアクセス可能なデータ格納システム216内に戻され格納されてもよいし、そうでなければ使用されてもよい。データ格納システム216はまた、開発者220が実行モジュール212を使用してデータを処理するためのアプリケーションを開発することができる開発環境218へアクセス可能である。
換言すれば、データ処理システム200は:
データストレージ216へ接続された任意選択的開発環境218であって、開発環境218は、グラフコンポーネントを処理するグラフを介し1つ又は複数の入力データセットから1つ又は複数の出力データセットへ流れるデータに対し行われるグラフベース計算を実施するデータフローグラフに関連するデータ処理アプリケーションを構築するように構成され、データフローグラフはデータストレージ216内のデータ構造により規定され、多くのノードを有するデータフローグラフはデータ構造により規定され、1つ又は複数のリンクにより接続されるグラフコンポーネントを表し、上記リンクはデータ構造により規定され、グラフコンポーネント間のデータフローを表す、開発環境218と;
データストレージ216へ接続され、1つ又は複数のコンピュータ上でホストされる実行環境212であって、実行環境212は、データフローグラフを規定する格納されたデータ構造を読み出すように、そして前処理モジュール206によりデータフローグラフへ割り当てられるグラフコンポーネントの計算を行うためのコンピュータ資源(処理など)を割り振るように構成された前処理モジュール206を含む、実行環境212と、を含み、
実行環境204は、グラフベース計算が実行されるように、割り当てられた計算又は処理の実行をスケジューリング及び制御するための実行モジュール212を含む、実行環境212を含む。すなわち、実行モジュールは、データソース202からデータを読み取るように、そしてデータフローグラフの形式で表現された実行可能コンピュータプログラムを使用してデータを処理するように構成される。
1.コンピュータクラスタ
ごく一般的には、実行モジュール212を使用してデータを処理するためのいくつかのコンピュータプログラム(本明細書では「アプリケーション」とも呼ばれる)は、コンピュータクラスタへアクセスするためにアプリケーションが使用するコールクラスタコンポーネントを含む。例えば、図2を参照すると、パイプラインデータ処理に対する手法では、コールクラスタコンポーネント110は、その一部分であるアプリケーション(例えばデータフローグラフ又は他の形式のグラフベースプログラム仕様)内のコンポーネントからコールクラスタコンポーネント110において受信されたレコード103を処理するためにコンピュータクラスタ120のコンポーネントと相互作用し、対応結果105をその一部分であるアプリケーションの1つ又は複数の他のコンポーネントへ送信する。入力レコード103毎に、コールクラスタコンポーネント110は、要求113(例えばデータ処理タスクを実行するための要求)をクラスタ120へ送信し、しばらくして、当該要求113に対する応答115をクラスタ120から受信する。応答115の受信後しばらくして、コールクラスタコンポーネント110は、通常は要求を処理した結果がクラスタ120内で適切に持続性があると知られた後、応答115に対応する結果105を送信する。
コールクラスタコンポーネント110がその一部分であるグラフベースプログラム仕様は図2に示されない。図2では、単一コールクラスタコンポーネント110だけが示されるが、同じクラスタ120と相互作用し得る多くのコールクラスタコンポーネント(例えばデータフローグラフなどの同じ又は異なるアプリケーションに参加する各コールクラスタコンポーネント)が一般的には存在し得るということを認識すべきである。グラフベースプログラム仕様は、例えば米国特許第5,966,072号明細書、米国特許第7,167,850号明細書又は米国特許第7,716,630号明細書に記載されるデータフローグラフとして又は米国特許出願公開第2016/0062776号明細書に記載されるデータ処理グラフとして実現され得る。このようなデータフローグラフベースプログラム仕様は通常、グラフ(「データフローグラフ」と呼ばれる)のリンク(有向辺)に対応するデータフローにより結合されるグラフのノード(バーテックス)に対応するコンピュータコンポーネントを含む。データフローリンクにより上流コンポーネントへ接続される下流コンポーネントは入力データ要素の順序付けられたストリームを受信し、受信された順番に入力データ要素を処理し、そして任意選択的に、出力データ要素の1つ又は複数の対応ストリームを生成する。いくつかの例では、各コンポーネントは、通常は複数のコンピュータサーバのうちの1つの上でホストされる処理として実施される。各コンピュータサーバは、どの時点においてもアクティブである複数のこのようなコンポーネント処理を有し得、オペレーティングシステム(例えばUnix)スケジューラは当該サーバ上でホストされるコンポーネント間で資源(例えばCPU時間及び/又はプロセッサコア)を共有する。このような実施形態では、コンポーネント間のデータフローは、オペレーティングシステムのデータ通信サービス(例えばパイプ、TCP/IPセッションなどと称する)とサーバ同士を接続するデータネットワークとを使用して実施され得る。コンポーネントのサブセットは通常、計算全体からの(例えばデータファイル、データベーステーブル、及び外部データフローに対する)データのソース及び/又はシンクとして働く。コンポーネント処理及びデータフローが確立された後、例えば、連携処理により、データは、各コンポーネントにおける入力データの可用性により通常は規定されるグラフとして表現された計算を実施するとともに各コンポーネントのコンピュータ資源をスケジューリングするコンピュータシステム全体を貫流する。
クラスタ120は通信ネットワーク130(「クラウド」として図2に示されており、開始、共有媒体、ハイパーキューブなどの様々な相互接続トポロジーを有し得る)により結合される複数のクラスタコンポーネント140、150a〜150cを含む。各クラスタコンポーネント(又は単純に「コンポーネント」)はクラスタ内で特定役割を有する。いくつかの実施形態では、コンポーネントのそれぞれは個別コンピュータ資源(例えば別個のコンピュータサーバ、マルチコアサーバの別個のコアなど)上でホストされる。これらのコンポーネントがクラスタ内の役割を表すということと、いくつかの実施形態では複数の役割が1つのコンピュータ資源上でホストされ得、単一役割が複数のコンピュータ資源全体にわたって分散され得るということとを理解すべきである。
図2では、ルートコンポーネント140(「ルート」と呼ばれる)は、以下に十分説明されるいくつかの同期機能を行うが、処理対象データの流れ又は計算に直接的に関与しない。多くのワーカーコンポーネント150a〜150c(以下では「ワーカー」と呼ばれる)はコールクラスタコンポーネント110からの要求113を処理する。データ165は、それぞれのワーカー150へアクセス可能なストレージ160内に冗長的やり方で格納され、各要求113は、ストレージ160内に格納され要求113内のキーにより識別されたデータの特定部分へアクセスする(読み出す及び/又は書き込むために)必要があるかもしれなく、キーにより判定されたワーカーの特定サブセットの間で分散される。特定要求に必要とされるキーのデータを保持するワーカーのうち、1つワーカーが、要求113が実行される主要ワーカー(例えばワーカー150a)として指定され、他のワーカーは、要求を通常は又は必ずしも実行しないが当該データのそれらのバージョンが主要ワーカーと同じやり方で又はそれに従って更新されるという意味でバックアップワーカーとして指定される。
図2では、特定入力レコード103の経路(処理対象データユニットと見做され得る又はそれを含み得る)がコールクラスタコンポーネント110に入るものとして示されており、次に、対応要求113(データユニットを有する)は要求の主要ワーカー150a(ワーカーA)へコンポーネント110により送信され、主要ワーカー150aからの応答115は、要求のバックアップワーカー150b(ワーカーB)だけでなくコールクラスタコンポーネント110へも返送され、最後に、対応結果105がコールクラスタコンポーネント110から出力又は送信される。一般的に、要求毎に複数のバックアップコンポーネントが存在し得るが、説明を簡単にするために、単一バックアップコンポーネントだけが以下の多くの例では示される。
以下にさらに論述されるように、コールクラスタコンポーネント110は、要求113を再生バッファ112内にバッファし、そして必要に応じてクラスタ120により正しく受信及び/又は処理されたということを保証するために要求をクラスタ120へ再送信し得る。コンポーネント110はまた、応答115をエスクローバッファ114内にバッファし、そして、エラー条件が検出された場合にはいくつかの応答の冗長コピーを受信し得る。一般的に、コンポーネント110は、応答115がクラスタ内に適切に保持されている(すなわち、好適な永続性レベルでデータストレージにおいて格納された)ということをクラスタ120がコンポーネント110に通知するまで、応答を「エスクロー状態に」保持する。
ルート140は、時間(間隔)値を保持しそして他のコンポーネントへ分配し、そして時間値のいくつかをコールクラスタコンポーネント110へ分配することにより同期機能を行う。図3を参照すると、ルート140のクロック142は3つの時間を保持する。時間T1は、例えば整数値として表される現在の作業時間又は時間間隔であり、繰り返し更新され、例えば毎秒1だけインクリメントされる。
要求113がコールクラスタコンポーネント110からクラスタ120により受信され、応答115がクラスタにより生成(又は送信)されると、それぞれは、それぞれ受信されそして生成(又は送信)された作業(T1)時間(又は、等価的に、時間T1が同じ値を有する時間区間(すなわち、T1の増分同士間))に関連付けられる。ルートは、時間T1に遅れる第2の時間T2を保持し配布する。以下にかなり詳細に説明されるように、時間T2は、エラーを処理するための操作のロールバックの場合に再送信される必要が無いように、クラスタ120のコンポーネント150a〜150c間で送信された時間に又はそれ以前に生成されたすべての要求及び/又は応答が複数のコンポーネント150a〜150cにおいて(例えば揮発性メモリ内に)複製されているような時間(間隔)を表す。いくつかの例では、複製(例えば揮発性メモリ内の)は、第1のレベルの永続性でもってデータストレージ内に格納されることを指す。ルートは、当該時間に又はそれ以前に生成されたすべての要求及び/又は応答がクラスタ120内のコンポーネントの故障を処理するための操作のロールバックの場合には再送信又は再計算される必要が無いように、当該データ165が格納されるワーカー150a〜150cのうちの少なくとも1つにおいて又はさらにはそのすべてにおいて持続性メモリ内に格納され、恒久的なものにされるような時間を表す第3の時間(間隔)T3(時間T1及びT2に遅れる)を保持し配布する。いくつかの例では、持続性メモリ内に(例えばディスクへ)格納されることは、第1のレベルの永続性より比較的永続性がある第2のレベルの永続性でもってデータストレージ内に格納されることを指す。データストレージは第1のレベルの永続性を有するデータストレージ及び第2のレベルの永続性を有するデータストレージより比較的永続性がある又は無い多くの異なるレベルの永続性に関連付けされ得るということに注意すべきである。例えば、クラスタの外にあるオフサイトデータストレージは、第1及び第2のレベルの永続性より比較的永続性がある第3のレベルの永続性を有し得る。いくつかの例では、時間間隔T1、T2及びT3は代替的に「状態一貫性(state consistency)指標」と呼ばれる。
複製(T2)時間又は持続(T3)時間をいつインクリメントすべきかを判定するためのルート140の機構は、時間(T1〜T3)の値をワーカー150a〜150cへ分配するための機構と同様に本明細書の後で説明される。
通常動作では、クラスタ120により受信された要求113は、要求のデータユニットのキーに基づき主要ワーカーとして識別されたワーカー150において(そして、一般的に1つ又は複数のバックアップワーカー150において)処理され、また、必要とされるデータのキーに基づき識別される。図4を参照すると、この処理は、コールクラスタコンポーネント110及び主要及びバックアップワーカー150において当該要求の様々な状態間の遷移として表され得る。「様々な要求は、様々な状態にあり、そして一般的には、参照されるデータに依存して様々なワーカーにおいて処理され、したがって、コールクラスタコンポーネント及び任意の特定ワーカーは様々な状態において多くの要求を有し得る」ということに留意されたい。
一般的に、各キーは、対応するサブセットのワーカー150に関連付けられ、例えばキー(例えば、キー値毎にバックアップワーカーを予測不能に分散するキーの決定論的機能)に基づき疑似ランダムなやり方で選択される。より一般的には、そして好適には、これらのサブセットは、キー値に従って完全な一組のワーカーの区画を形成するのではなくむしろサブセットの他の区画と重なる。
一意的識別子ridを有する(又はコールクラスタコンポーネントにより割り当てられる)要求113が入力レコード103毎にコールクラスタコンポーネント110において形成されると、この要求はコールクラスタコンポーネントの状態Aに入る。以下の説明では、各要求113はコールクラスタコンポーネントの3つの状態(A〜Cと表記される)のうちの1つにあり、この要求を処理するワーカー150のそれぞれにおいて9つの異なる状態(A〜Iと表記される)のうちの1つにある。要求113を記録した後、コールクラスタコンポーネント110は、要求の主要ワーカーへ割り当てられるワーカー150を決定し、要求113を当該ワーカー150(図2においてワーカーAとして示される)へ送信する。代替実施態様では、「コールクラスタコンポーネント110はどのワーカーが指定された主要ワーカーかについて気付いていないかもしれなく、したがって、要求113は、指定された主要ワーカワーカー150aへ到達するようにクラスタ120において内部的にルーティングされ得る」ということに留意されたい。要求113は、要求の応答115がクラスタ120から戻され受信されるまでコールクラスタコンポーネント110において状態Aのままである。
要求113が主要ワーカー(図2ではワーカーAと表記される)において受信されると、要求は主要ワーカーにおいて状態Aに入る。主要ワーカーは、ルート140から配布されたとして知らされた現在の作業時間T1に等しい(taで表された)要求時間を要求に割り当てる(ルートがT1を増分したときとワーカーがこの増分について知ったときとの間に時間遅れが存在し得るということを認識することにより)。この状態で、要求113は、要求id、rid及びこの例ではtaとして表された要求時間に関連付けられた揮発性メモリ155内に格納され、主要ワーカーにおいて実行することを待つ状態に指定される。この状態Aにおいて、主要ワーカーは、要求113を当該要求の1つ又は複数のバックアップワーカー150(すなわち、キーにより判定された)へ送信する。主要ワーカーにおいて、当該要求は、例えば要求へ割り当てられた時間(ta)と任意選択的に主要ワーカーにおける要求の到着順とに従って資源の順番通り割り当てに基づき実行するために最終的に割り当てられた資源である。要求113が主要ワーカーにおいて実行を開始すると、要求は主要ワーカーにおいて状態Bに入る。処理が応答115を生成すると(この例では、T1作業時間がtbであると仮定する)、主要ワーカーにおける要求の状態は状態Cになる。状態Cにおいて、応答115は時間tbに関連付けられて揮発性メモリ156内に格納される。以下にさらに論述されるように、ワーカーにおける応答115及びデータストレージ160に対する任意の更新は、例えば改版されたデータベース又は他の形式の改版されたデータ構造を使用することにより、従来のロールバック時間による効果の除去を許容するやり方で時間(ここでは時間tb)に関連付けられて格納される。この状態Cにおいて、応答115は、コールクラスタコンポーネント110とバックアップコンポーネント150との両方へ送信される。
コールクラスタコンポーネント110において、応答115が主要ワーカーから受信されると、要求は、主要ワーカーにより生成された時間tbに関連付けられて応答が格納される状態Bに入る。応答115は、ルート140からtbに等しい又はそれより大きいエスクロー時間を受信するまでエスクローバッファ114内のコールクラスタコンポーネントにおいて保持される。当該コールクラスタコンポーネントからの要求の持続性要件に依存して、ルートは、コールクラスタコンポーネントのエスクロー時間として複製時間T2又は持続時間T3のいずれかを提供し得る。tbに等しい又はそれより大きいエスクロー時間を受信すると、コールクラスタコンポーネント110は結果105をコールクラスタコンポーネントから送信し、対応する要求113は、要求113のいかなるさらなる記録又はその応答115も必要とされない(例えば、完全に消去され得る)ヌル状態Cに入る。
バックアップワーカー150において、要求113を主要ワーカーから受信すると、バックアップワーカーは、要求がオリジナル要求時間taに関連付けられた状態Fに入り(現在の作業時間T1がそれを越えてインクリメントされていたとしても)、要求は主要ワーカーからの応答を待つ状態である。バックアップワーカー150bが主要ワーカーから応答115を受信し、したがって応答115が当該バックアップの揮発性メモリ156内に複製されると、バックアップワーカー150bは状態Gに入る。
主要又はバックアップワーカーが新たに生成された応答115を有すると直ちに、主要又はバックアップワーカーは、当該応答をディスクベース又は不揮発性メモリベースデータベース又はファイルシステムなどの持続性ストレージ160へ保存する処理を自由に開始することができる(状態D及びHを参照)。持続性メモリに対する更新が最初に揮発性メモリベースジャーナル内でジャーナル化されるジャーナルベース手法が使用され得、当該ジャーナルの一部分は持続性ストレージ160へ折々に書き込まれる。「更新のこのジャーナルの一部分が持続性ストレージ160へ書き込まれる場合ですら、それらの更新は、恒久的であると考えられる更新の程度に関する明示的指標が持続性ストレージへ書き込まれるまで恒久的な(すなわち、「コミットされた」)ものにされない」ということに留意されたい。
時間tb及びそれより早い時間に関連するすべての要求及び応答がすべての適切なワーカーにおいて複製されたということをルート140が判定した時点で、T2はtbに達する又はtbまでインクリメントする。時間T2=tbがルート140から主要及びバックアップワーカー150へ配布された後、これらのワーカーは応答を持続性ストレージ160内で恒久的なものにする。時間tbを介した更新のジャーナルが持続性メモリへ未だ書き込まれていなければ、それらは当該時間に書き込まれる。より一般的には、時間tbを介したジャーナルは、T2がtbに達する又はそれまでインクリメントする時間までにワーカーにより持続性ストレージ160へ書き込まれた。この時間においてなされなければならないことは、「持続性ジャーナル内で時間tbを介した更新が恒久的ものとして処理される」という指標を記録することにより更新を恒久的なものにするタスクを完了することだけである。主要ワーカーがジャーナルを恒久的なものにする恐らく短い時間中、ジャーナルは状態Dにある。主要ワーカーが持続性ストレージにおいて図4に示す要求の応答をすると、主要ワーカーは状態Eに入る。同様に、バックアップワーカーが応答を恒久的なものにする間、バックアップワーカーは状態Hにあり、バックアップワーカーが応答を持続性メモリ内で恒久的なものにすると、バックアップワーカーは状態Iに入る。時間tb(及びそれ以前の時間)に関連付けられたすべての応答が持続性メモリ内で恒久的である(すなわち、すべて状態E又はIにある)ということをルートワーカーが判定すると、ルートワーカーは持続時間T3をtbへインクリメントする。上に紹介したように、エスクロー時間がコールクラスタコンポーネントにおける要求に対するものであり、持続時間T3である状況に関して、ルート140は、エスクロー時間がtb以上となったということをコールクラスタコンポーネント110に通知し、コールクラスタコンポーネント110は当該要求113の対応する結果105をリリースし、応答115をアプリケーション(例えばグラフ)内の1つ又は複数の他のコンポーネントへリリースする。
上に紹介したように、通常動作において、ルートは、コールクラスタコンポーネントからの連続要求113がクラスタにおいて処理されると作業時間T1を更新し、応答115はコールクラスタコンポーネントへ戻され、エスクロー時間T2又はT3の更新に従ってコールクラスタコンポーネントからグラフへリリースされる。一般的に、特定要求113の処理は、作業時間T1のうちの多くの時間「ティック(tick)」(例えば10又は100のティック)がかかり得、したがって、クラスタは、進行中である多くの要求であってこれらに関連付けられた多くの異なる要求時間を有する要求を有し得る。さらに、データはワーカー間で分散されるので、負荷は、各ワーカーが主要ワーカーとして(すなわち、状態A〜Eのうちの1つの状態において)働いている複数の要求を有し、バックアップワーカーとして(すなわち、状態F〜Iのうちの1つの状態で)働いている複数の要求もまた有し得るように、それらの要求のキーに従ってワーカー間で効果的に分散される。
タスクを行うためのクラスタに対するいくつかの要求はタスクを複製するためのそして当該タスクを行った対応結果を複製するための本明細書で述べたような手順を使用するということに注意すべきである。例えば、タスクがバックアップワーカーにおいてタグ付け及び複製された(必ずしもではないが持続的なものにされた)後、このタスクは主要ワーカーにおいて初期化される。タスクがデータ記録に作用すれば、初期化はレコードのオリジナル版1を保持することに関与し得る。次に、タスクは、主要ワーカー上で実行するがバックアップワーカー上では実行されない状態である。処理が完了した後、レコードの修正版2が存在する。次に、タスクの最終化は、レコードの修正版2を主要ワーカーからバックアップワーカーへ送信する工程を含み得る。次に、主要ワーカーとバックアップワーカーとの両方は、レコードのオリジナル版1を(複製されたタスクと共に)消去することができる。これらの工程のそれぞれは合理的に効率的なものであるがタスクの継続時間が非常に短ければ、これらの初期化及び最終化手順に関連するオーバーヘッドはタスクをあまり効率的でないものにし得る。
代替的に、異なる手順が、継続時間が比較的短いいくつかのタスク(「短いタスク」)には使用され得る。短いタスクは、バックアップワーカーにおいて依然としてタグ付け及び複製される。しかし、初期化はレコードのオリジナル版1を保持する必要が無い。その代りに、短いタスクと短いタスクのレプリカとの両方が主要及びバックアップワーカーにおいてそれぞれに持続的に格納されたということをコミット操作(commit operation)が示した後、短いタスクは両方のワーカーにおいて実行される。当該実行の終わりに、修正されたレコードを送信するために必要とされるいかなる通信も無く、主要及びバックアップワーカーの両方においてレコードの修正版2のコピーが存在することになる。両方のワーカーにおいて冗長処理が存在するが、この冗長性は、タスクが短いので、効率に著しい影響を与えない。この代替手順は、どのワーカーがこれを実行しているかにかかわらず、例えば短いタスクが決定論的であり同じ結果を生成すれば有用である。
2.通常動作の例
図5〜12を参照すると、コールクラスタコンポーネント110及びクラスタ120の通常動作の一例が示されている。図5では、入力レコード103がコールクラスタコンポーネント110に到達し、コールクラスタコンポーネント110は入力レコード103の要求113を形成する。コールクラスタコンポーネント110は要求113と一意的要求識別子ridとを関連付け、これをコールクラスタコンポーネント110の再生バッファ112内に格納する。
コールクラスタコンポーネント110は要求113をクラスタ120へ送信し、要求113は、時間T1=taにクラスタ120内の主要ワーカー150a(ワーカーA)において受信される。要求113は、主要ワーカー150aの揮発性メモリ155内に格納され、現在の作業時間(T1=ta)に等しい要求時間が割り当てられる。要求113の要求時間はコールクラスタコンポーネント110へ提供され、コールクラスタコンポーネント110は要求時間(すなわち、ta)と再生バッファ112内に格納された要求113とを関連付ける。コールクラスタコンポーネント110の再生バッファ112内に格納された要求113は状態A(図4を参照)にあり、クラスタ120からの応答を待つ。主要ワーカーの揮発性メモリ155内に格納された要求113は状態Aにあり、コンピュータ資源が要求113の実行のために割り当てられるのを待つ。
図6を参照すると、主要ワーカーは要求113をバックアップワーカー150b(ワーカーB)へ送信し、要求113はバックアップワーカー150bの揮発性メモリ155内に格納される。バックアップワーカー150bの揮発性メモリ155内に格納された要求113は、主要ワーカーからの応答を受信することを待つ状態Fにある。
図7を参照すると、主要ワーカー105がコンピュータ資源(例えば主要ワーカーのコンピュータ資源又はクラスタの別の部分のコンピュータ資源)を要求113へ割り当てると、要求113は主要ワーカー105において状態Bに入り、実行を開始する。
図8を参照すると、時間T1=tbにおいて、主要ワーカー105は要求113の実行を完了する。要求113の実行は、主要ワーカーの揮発性メモリ156内に格納される応答115を生成する。応答115は、要求113の要求識別子(rid)とそれが生成された時間(tb)とへ関連付けられる。主要ワーカーは応答115をコールクラスタコンポーネント110とバックアップワーカー150bとへ送信し、次に、要求113は状態Cになり、持続時間T3がtbへ到達するのを待つ。
コールクラスタコンポーネント110は応答115を受信し、これをそのエスクローバッファ114内に格納する。エスクローバッファ114内に格納された応答により、結果115はコールクラスタコンポーネント110において状態Bになり、持続時間T3(この例ではエスクロー時間)がtbへ到達するのを待つ。バックアップワーカー150bは応答115を受信し、これを揮発性メモリ156内に格納する。バックアップワーカー150bにおける要求113は状態Gに入り、持続時間T3がtbへ到達するのを待つ。
図8には示さないが、主要ワーカー150a及びバックアップワーカー150bの揮発性メモリ156内に格納された(複製された)応答115により、複製時間(T2)はtbへ設定される。
図9を参照すると、応答115が主要ワーカー150a及びバックアップワーカー150bの一方又は両方の揮発性メモリ156内に格納されると、主要ワーカー150a及びバックアップワーカー150bは、応答115がそれぞれの揮発性メモリ155、156内にも格納されたまま応答115をそれぞれの持続性ストレージ160へ格納し始める。
図10を参照すると、応答115が主要ワーカーにおいて格納され、そしてバックアップワーカー150bにおいて複製された後、持続時間(T3)はtbへ設定される。主要ワーカー150a及びバックアップワーカー150bは持続性ストレージ160内の応答115の恒久的格納を終了する。主要ワーカーにおいて格納された要求113は状態Dにあり、バックアップワーカー150bにおいて格納された要求113は、要求113及び応答115が揮発性メモリ155、156内に依然としてそれぞれ格納された状態Hにある。
図11を参照すると、この例のエスクロー時間は持続時間T3であるので、tbへ更新されたT3により、コールクラスタコンポーネント110において格納された要求113は状態Cに入り、応答115(時間tbへ関連付けられた)がそのエスクローバッファ114からリリースされる。
図12を参照すると、主要ワーカー150aの持続性ストレージ内に恒久的に格納された応答115により、要求113は、要求113又は応答115のいずれもその揮発性メモリ155、156内にそれぞれに格納されない状態Eに入る。同様に、バックアップワーカー150bの持続性ストレージ内に恒久的に格納された応答115により、要求113は、要求113又は応答115のいずれもその揮発性メモリ155、156内に格納されない状態Iに入る。
3.ロールバックシナリオ
図4の状態遷移図は通常動作を表すが、ワーカー間のメッセージが成功裡に受信されないということ(うまく受信されないということ)が頻繁ではないがあり得る。さらに、ワーカーがその揮発性メモリを失った後に再始動すること又はワーカーが要求をさらに処理しないように完全に失敗することがあり得る(すなわち、主要役割又はバックアップ役割のいずれかにおいて)。本明細書において説明されるデータ処理システムのいくつかの実施形態がこのセクションにおいて説明されたロールバックシナリオのすべてを実現するということに注意すべきである。データ処理システムの他の実施形態がこのセクションにおいて説明されたロールバックシナリオのすべてではないが1つ又は複数を実現し得るということにも留意すべきである。
3.1 シナリオ1:tr<ta
成功裡に受信されなかったいくつかのワーカー間メッセージであって時間teに関連付けられたメッセージが存在するということをクラスタが判定する状況を最初に考察する。一般的に、ルートは、時間がteに先立つ時間tr(すなわち、tr<te、例えばtr=te−1)へ「ロールバック」されなければならないということをすべてのワーカーに通知する。このようなロールバックによってすら、コールクラスタコンポーネント110により提供される結果は、あたかもロールバックが発生しなかったかのようにアプリケーション又はグラフへ提供され、ワーカー間に分配されたデータへの更新はコールクラスタコンポーネントにより提供された結果と整合したままである。特に、結果は、多くのノード(例えばワーカー)において格納される(例えば、複製又は保持される)までコールクラスタコンポーネント110からアプリケーション又はグラフへリリースされなく、これにより、結果が決して呼び出されることなく無効になるということを保証する。別の言い方をすると、発生するいかなるロールバックも、結果がコールクラスタコンポーネント110によりアプリケーション又はグラフへ提供されるのに先立って必ず発生する。
ロールバックはいくつかのワーカー間メッセージが成功裡に受信されなかったので行われなければならないということをルート140が判定すると、ルートはロールバック時間trをコールクラスタコンポーネント110に通知する。現在時間T1がインクリメントされ、そして一般的に、時間tr+1からT1−1を含むT1−1までのすべての活動はあたかもそれらが発生しなかったかのように処理される。コールクラスタコンポーネント110における効果は「状態B(すなわち、エスクロー時間により到達されていない応答時間を有する)の(再生バッファ112内に格納された)すべての要求は状態Aへ戻され、エスクローバッファ114内のいかなる対応する応答115も廃棄される」ということである。次に、状態Aにある要求113(既に状態Aにあったか状態Bから状態Aへ戻されたかのいずれかであるので)はクラスタ120へ再送信される。
実行を未だ開始していないが主要ワーカーとバックアップワーカー(すなわち、主要ワーカーが状態Aにあり、バックアップワーカーは状態Fにある)との間で複製された要求へのクラスタ(すなわち、ワーカー150における)の影響は、要求がロールバック時間trより大きい要求時間ta(すなわち、tr<ta)を有する状況に関し最初に考慮される。この図に関して、現在の作業時間はtcで表される。taはtrより大きいので、コールクラスタコンポーネントは、要求が正しく複製されたということを想定することができなく、したがって主要ワーカー及びバックアップワーカーの揮発性メモリ155内に格納されたバージョンの要求は除去される。要求113は、同じ要求id、ridを有するクラスタ120においてコールクラスタコンポーネント110から受信され、新しい要求時間tcへ関連付けられる。要求113を受信すると、主要ワーカーは要求113をその揮発性メモリ155内に格納し、状態Aにある。主要ワーカーは要求113をバックアップワーカー150へ送信し、バックアップワーカー150は要求113をその揮発性メモリ155内に格納し、状態Fにある。次に、主要及びバックアップワーカーにおけるさらなる処理は図4に示すやり方で進む。
「バックアップワーカーが、主要ワーカーから時間tcを有する更新された要求を受信する前に要求に気付かなければ、バックアップワーカーはまた、今や正しく複製されなかった要求により同じやり方で進む」ということに留意されたい。
図13〜15を参照すると、最初のロールバックシナリオの一例が示される。図13では、時間taにおいて発行された要求113が、コールクラスタコンポーネント110において再生バッファ112内に格納され、状態Aにある。要求113は、主要ワーカーにおいて揮発性メモリ155内に格納されるが、実行を未だ開始していないので状態Aにある。要求113はまた、バックアップワーカー150bにおいて格納され、状態Fにある。
システムを時間tr<taへロールバックするためにロールバック要求が受信される。図14では、ロールバック要求が受信された後、要求113は、主要ワーカー150aの揮発性メモリ155及びバックアップワーカー150bの揮発性メモリ155から除去される。オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の新しい要求113’は状態Aにある。
クラスタでは、新しい要求113’は主要ワーカーへ送信される。主要ワーカー150aは新しい要求113’を要求時間tcと共にその揮発性メモリ155内に格納する。主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図15を参照すると、主要ワーカーは新しい要求113’をバックアップワーカー150bへ送信する。バックアップワーカー150bは、新しい要求113’をその揮発性メモリ155内に格納し、要求時間tcに関連付けられる。バックアップワーカーの揮発性メモリ155内に格納された更新された要求113’は状態Fにある。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.2 シナリオ2:tr<ta、実行が始まった
第2の状況では、以前の要求の要求時間taはロールバック時間trより大きい(すなわち、tr<ta)が、要求は実行を開始し、主要ワーカーにおいて実行を完了しなかった(すなわち、要求は主要ワーカーにおいて状態B(恐らく、部分応答115が計算される)にあり、要求はバックアップワーカーにおいて状態Fにある)。この場合、実行は終了され、部分応答115は主要ワーカー及びバックアップワーカーにおいて廃棄され(又は、実行は完了することが許可され、応答は廃棄され)、コールクラスタコンポーネント110は要求113をクラスタ120へ再送信する。主要ワーカーとバックアップワーカーとにおいて格納された要求は状態Aと状態Fとへそれぞれ戻る。主要ワーカーは、あたかも要求が主要ワーカーにおいて実行を開始していなかったかのようなやり方と同じやり方で要求をバックアップワーカーに通知する。
図16〜18を参照すると、第2のロールバックシナリオの一例が示される。図16において、時間taにおいて発行された要求113は、コールクラスタコンポーネント110において再生バッファ112内に格納され、状態Aにある。要求113は、主要ワーカー150aにおいて揮発性メモリ155内に格納され、そして、実行を開始したので状態Bにある。要求はまた、バックアップワーカー150bにおいて格納され、状態Fにある。
ロールバック要求が、システムを時間tr<taへロールバックするために受信される。図17では、ロールバック要求が受信された後、要求113は、主要ワーカー150aの揮発性メモリ155及びバックアップワーカー150bの揮発性メモリ155から除去される。オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の新しい要求113’は状態Aにある。
クラスタでは、新しい要求113’は主要ワーカーへ送信される。主要ワーカー150aは新しい要求113’を要求時間tcと共にその揮発性メモリ155内に格納する。主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図18を参照すると、主要ワーカー150aは新しい要求113’をバックアップワーカー150bへ送信する。バックアップワーカー150bは、新しい要求113’をその揮発性メモリ155内に格納し、要求時間tcに関連付けられる。バックアップワーカーの揮発性メモリ155内に格納された更新された要求113’は状態Fにある。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.3 シナリオ3:tr<ta<tb、実行は完了した
第3の状況では、以前の要求の要求時間taは再びロールバック時間trより大きい。しかし、この場合、我々は、実行は時間tb(すなわち、tr<ta<tb)において完了したということと応答はバックアップワーカーにおいて複製され、コールクラスタコンポーネント110において受信されたということとを仮定する。すなわち、要求113はコールクラスタコンポーネント110において状態Bにあり、要求は主要ワーカー150aにおいて状態Cにあり、要求113はバックアップワーカー150bにおいて状態Gにある。第2の状況と同様に進行中の実行の実行を単に終了する必要があるのではなく、主要及びバックアップワーカーにおいて格納されていた応答115が除去される。図4を参照して上に導入されたように、時間tbにおいて生成された応答は、特定時間及びその後の時間におけるすべての更新がデータ構造から除去され得るようなやり方で、時間tbに関連付けられた改版されたデータ構造内に格納される。この状態では、時間trより遅く更新されたすべてのデータ版を除去することにより、時間tbにおいてなされた図示された要求の更新は必ず除去され、要求は、実行を待つtcの要求時間を有する主要ワーカーにおいて状態Aへ戻され、主要ワーカーからの応答を待つバックアップワーカーにおいて状態Fへ戻された。コールクラスタコンポーネントにおいて、応答は廃棄され、要求は状態Aへ戻される。
図19〜21を参照すると、第3のロールバックシナリオの1つの単純な例が示される。図19では、時間taにおいて発行された要求113は、コールクラスタコンポーネント110において再生バッファ112内に格納される。時間tbにおいて生成された要求115に対する応答はエスクローバッファ114内に格納される。したがって、要求113はコールクラスタコンポーネントにおいて状態Bにある。
クラスタでは、要求113及び応答115は主要ワーカー150aにおいて揮発性メモリ155、156内に格納される。したがって、要求113は主要ワーカー150aにおいて状態Cにある。要求113及び応答115はまた、バックアップワーカーにおいて揮発性メモリ155、156内に格納される。したがって、この要求はバックアップワーカー150bにおいて状態Gにある。
ロールバック要求が、システムを時間tr<ta<tbへロールバックするために受信される。図20では、ロールバック要求が受信された後、応答115はコールクラスタコンポーネント110のエスクローバッファ114から除去される。クラスタ120では、要求113と応答115との両方は、主要ワーカー150aの揮発性メモリ155及びバックアップワーカー150bの揮発性メモリ155から除去される。
オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の新しい要求113’は状態Aにある。
クラスタでは、新しい要求113’が主要ワーカー150aへ送信される。主要ワーカー150aは新しい要求113’を要求時間tcと共にその揮発性メモリ155内に格納する。主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図21を参照すると、主要ワーカー150aは新しい要求113’をバックアップワーカー150bへ送信する。バックアップワーカー150bは、新しい要求113’をその揮発性メモリ155内に格納し、要求時間tcに関連付けられる。バックアップワーカーの揮発性メモリ155内に格納された更新された要求113’は状態Fにある。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.4 シナリオ4:ta<tr、実行は始まっていない
第4の状況では、ロールバック時間trはオリジナル要求時間taにおける又はその後(すなわち、ta≦tr)のものであり、オリジナル要求は実行を開始していない。要求は、クラスタ120へ再送信され、主要ワーカーとバックアップワーカーとにおけるオリジナル要求(すなわち、{rid,ta})の後の実行のための待ち行列に入れられる。主要ワーカーはオリジナル要求を実行し、応答(すなわち、{rid,tb})を生成する。次に、主要ワーカーは、再送信された要求(すなわち、{rid,tc})の実行を開始することに進むが、再送信された要求のridに関連付けられた応答が既に存在していることを検知し、再送信された要求の実行を見送る。
図22〜25を参照すると、第4のロールバックシナリオの一例が示される。図22では、時間taにおいて発行されたオリジナル要求113は、コールクラスタコンポーネント110において再生バッファ112内に格納され、状態Aにある。オリジナル要求113は主要ワーカー150aにおいて揮発性メモリ155内に格納され、実行を未だ開始していないので状態Aにある。オリジナル要求113はまた、バックアップワーカー150bにおいて格納され、状態Fにある。
ロールバック要求が、システムを時間ta<trへロールバックするために受信される。図23では、オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の要求113は状態Aのままである。
クラスタでは、新しい要求113’が主要ワーカー150aへ送信される。主要ワーカー150aは新しい要求113’を受信し、新しい要求113’を実行のためにオリジナル要求113の後の待ち行列に入れる。主要ワーカー150aの揮発性メモリ155内に格納されたオリジナル要求113と新しい要求113’との両方は状態Aにある。
図24を参照すると、主要ワーカー150aは新しい要求113’をバックアップワーカー150bへ送信する。バックアップワーカー150bは新しい要求113’を受信し、新しい要求113’を実行のためにオリジナル要求113の後の待ち行列に入れる。バックアップワーカー150bの揮発性メモリ155内に格納されたオリジナル要求113と新しい要求113’との両方は状態Fにある。
図25を参照すると、主要ワーカー150aは応答115を生成するためにオリジナル要求113を実行し、応答115はその持続性ストレージ160内に保持される。この結果、オリジナル要求113は主要ワーカー150aにおいて状態Dにある。新しい要求113’は主要ワーカー150aにおいて実行を未だ開始していなく、したがって状態Aにある。
応答115はまた、バックアップワーカー150b及びコールクラスタコンポーネント110へ提供された。バックアップワーカー150bは、応答115をその揮発性メモリ156内に格納し、この応答をその持続性ストレージ160に対し保持した。したがって、オリジナル要求113はバックアップワーカーにおいて状態Hにある。コールクラスタコンポーネント110は応答115をそのエスクローバッファ114内に格納した。コールクラスタコンポーネントの再生バッファ112内の要求113は状態Bにある。
新しい要求113’が主要ワーカー150aにおいて実行を開始すると、主要ワーカー150aは、新しい要求113’が応答115と同じ要求識別子ridに関連しているということを認識し、したがって、それが複製であるので、新しい要求113’を実行しない。いくつかの例では、応答115はコールクラスタコンポーネントへ再送信され得、コールクラスタコンポーネントは応答115を複製として無視する。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.5 シナリオ5:ta<tr、実行が始まった
第5の状況では、ロールバック時間trはオリジナル要求時間taにおける又はその後のものであり(すなわち、ta≦tr)、オリジナル要求は実行を開始したが、主要ワーカーにおいて実行を完了していない(すなわち、要求は主要ワーカーにおいて状態Bにあり、要求はバックアップワーカーにおいて状態Fにある)。この状況では、実行は主要ワーカー及びバックアップワーカーにおいて終了される(又は完了することを許容され、応答は廃棄される)(すなわち、主要及びバックアップワーカーにおいて格納された要求は状態A、Fへそれぞれ戻る)。
コールクラスタコンポーネント110は要求をクラスタ120へ再送信し、ここで、要求クラスタ120は主要ワーカーとバックアップワーカーとにおけるオリジナル要求(すなわち、{rid,ta})の後の実行のために待ち行列に入れられる。主要ワーカーはオリジナル要求を実行し、応答(すなわち、{rid,tb})を生成する。次に、主要ワーカーは、再送信された要求(すなわち、{rid,tc})の実行を開始することに進むが、再送信された要求のridに関連付けられた応答が既に存在しているということを検知し、再送信された要求の実行を見送る。
図26〜29を参照すると、第5のロールバックシナリオの一例が示される。図26では、時間taにおいて発行されたオリジナル要求113は、コールクラスタコンポーネント110において再生バッファ112内に格納され、状態Aにある。オリジナル要求113は主要ワーカー150aにおいて揮発性メモリ155内に格納され、実行を開始したので状態Bにある。オリジナル要求113はまた、バックアップワーカー150bにおいて格納され、状態Fにある。
ロールバック要求が、システムを時間ta<trへロールバックするために受信される。図27では、オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’はクラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の要求113は状態Aのままである。
クラスタ120では、主要ワーカー150aの揮発性メモリ155内に格納されたオリジナル要求113の実行は終了され、オリジナル要求113は状態Aへ戻される。新しい要求113’が主要ワーカー150aへ送信される。主要ワーカー150aは新しい要求113’を受信し、新しい要求113’を実行のためにオリジナル要求113の後の待ち行列に入れる。主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図28を参照すると、主要ワーカー150aは新しい要求113’をバックアップワーカー150bへ送信する。バックアップワーカー150bは新しい要求113’を受信し、新しい要求113’を実行のためにオリジナル要求113の後の待ち行列に入れる。バックアップワーカー150bの揮発性メモリ155内に格納されたオリジナル要求113と新しい要求113’との両方は状態Fにある。
図29を参照すると、主要ワーカー150aはオリジナル要求113を実行し、応答115を生成した。応答115はその持続性ストレージ160内に保持される。この結果、オリジナル要求113は主要ワーカー150aにおいて状態Dにある。新しい要求113’は主要ワーカー150aにおいて実行を未だ開始していなく、したがって状態Aにある。
応答115はまた、バックアップワーカー150b及びコールクラスタコンポーネント110へ複製された。バックアップワーカー150bは、応答115をその揮発性メモリ156内に格納し、この応答をその持続性ストレージ160に対し保持した。したがって、オリジナル要求113はバックアップワーカーにおいて状態Hにある。コールクラスタコンポーネント110は応答115をそのエスクローバッファ114内に格納し、コールクラスタコンポーネントの再生バッファ112内の要求113’は状態Bにある。
新しい要求113’が主要ワーカー150aにおいて実行を開始すると、主要ワーカー150aは、新しい要求113’が応答115と同じ要求識別子ridに関連しているということを認識し、したがって、それが複製であるので、新しい要求113’を実行しない。いくつかの例では、応答115はコールクラスタコンポーネント110へ再送信され得、コールクラスタコンポーネントは応答115を複製として無視する。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.6 シナリオ6:ta<tb<tr、実行は完了した
第6の状況では、ロールバック時間trは要求時間ta又はその後のものであり、要求はまた、時間tbにおいて、またロールバック時間又はその前(すなわち、ta≦tb≦tr)に実行を完了した。応答がコールクラスタコンポーネント110へ成功裡に提供されれば(すなわち、この要求はコールクラスタコンポーネントにおいて状態Bにある)、ロールバック要求は、要求を再送信させないし、またエスクローバッファ114からのいかなる応答の除去も引き起こさない。すなわち、taに関連付けられたいかなる要求とtbに関連付けられたいかなる応答も不変なままにされる。
しかし、応答がコールクラスタコンポーネント110へ成功裡に提供されなければ、コールクラスタコンポーネント110は要求をクラスタ120へ再送信する。再送信された要求を受信すると、主要ワーカーは、再送信された要求(すなわち、{rid,tc})の実行を開始するが、要求識別子ridに関連付けられた応答115が既に存在しているということを検出する。したがって、再送信された要求は実行されなく、オリジナル要求の実行により生成された応答がコールクラスタコンポーネント110へ再送信される。コールクラスタコンポーネント110は、いつ応答がエスクローから送信され得るかをコールクラスタコンポーネントにおいて判定するために使用される応答時間tbを有する応答を受信する。
図30〜32を参照すると、第6のロールバックシナリオの一例が示される。図30では、時間taにおいて発行されたオリジナル要求113がコールクラスタコンポーネント110において再生バッファ112内に格納される。オリジナル要求113に対する応答115が時間tbにおいて生成されたが、コールクラスタコンポーネント110のエスクローバッファ114へ到達しなかった。したがって、要求113はコールクラスタコンポーネント110において状態Aにある。
クラスタでは、要求113及び応答115は主要ワーカー150aにおいて揮発性メモリ155、156内に格納され、したがって要求113は主要ワーカー150aにおいて状態Cにある。要求113及び応答115はまた、バックアップワーカーにおいて揮発性メモリ155、156内に格納される。したがって、この要求はバックアップワーカー150bにおいて状態Gにある。
ロールバック要求が、システムを時間ta<tb<trへロールバックするために受信される。図31では、オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。
新しい要求113’はクラスタ120内の主要ワーカー150aへ送信される。主要ワーカー150aは新しい要求113’を受信し、新しい要求113’を実行のために揮発性メモリ155内の待ち行列に入れる。主要ワーカー150aの揮発性メモリ155内に格納されたオリジナル要求113は状態Cのままであり、主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図32を参照すると、主要ワーカー150aが新しい要求の実行を開始すると、主要ワーカー150aは、新しい要求113’がオリジナル要求113と同じ要求識別子ridを有するということと、要求識別子ridに関連付けられた応答115が主要ワーカー150aにおいて既に存在しているということとを認識する。したがって、主要ワーカー150aは新しい要求113’を実行しないが、その代りに応答115をコールクラスタコンポーネント110へ再送信する。コールクラスタコンポーネント110は応答115を受信し、これをエスクローバッファ114内に格納する。コールクラスタコンポーネント110のエスクローバッファ114内に格納された応答115により、コールクラスタコンポーネント110は状態Bにある。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.7 シナリオ7:ta<tr<tb、実行は完了した
第7の状況では、ロールバック時間trは要求時間taにおける又はその後のものであり、要求はロールバック時間後の時間tb(すなわち、ta≦tr<tb)において実行を完了しており、ワーカー間の応答の複製は成功しなかったかもしれない。ワーカーはtr後の時間を有するすべての応答115を廃棄する。バックアップワーカーにおいて格納された要求113は状態Fへ戻り、主要ワーカーにおいて格納された要求113は状態Bへ戻る。コールクラスタコンポーネント110は、エスクローバッファ114内のすべての応答115を廃棄し、再生バッファ112内に格納された要求113を状態Aへ戻し、要求113を、要求を再処理するクラスタ120へ再送信する。
図33〜35を参照すると、第7のロールバックシナリオの一例が示される。図33では、時間taにおいて発行された要求113がコールクラスタコンポーネント110において再生バッファ112内に格納される。時間tbにおいて生成された要求115に対する応答はエスクローバッファ114内に格納される。したがって、要求113はコールクラスタコンポーネント110において状態Bにある。
クラスタ120では、要求113及び応答115は主要ワーカー150aにおいて揮発性メモリ155、156内に格納される。したがって、要求113は主要ワーカー150aにおいて状態Cにある。要求113はまた、バックアップワーカー105において揮発性メモリ155、156内に格納されるが、応答115はバックアップワーカー150bへ成功裡に複製されていないかもしれない。したがって、要求はバックアップワーカー150bにおいて状態Gにないかもしれない。
ロールバック要求が、システムを時間ta<tr<tbへロールバックするために受信される。図34では、コールクラスタコンポーネント110のエスクローバッファ114内に格納された応答115が除去される。オリジナル要求113と同じ要求識別子(rid)に関連付けられた新しい要求113’がコールクラスタコンポーネント110によりクラスタ120へ発行される。時間tcにおいて、新しい要求113’は、クラスタ120により受信され、要求時間tcに関連付けられる。クラスタ120は、新しい要求113’に関連付けられた要求時間tcをコールクラスタコンポーネント110に通知する。再生バッファ112内の新しい要求113’は状態Aにある。
クラスタ120では、バックアップワーカー150bは、tr後の時間に関連付けられたその揮発性メモリ156内に格納されたいかなる応答も除去し、したがって、状態Fへ戻る。主要ワーカー150aは状態Bへ戻る。新しい要求113’が主要ワーカー150aへ送信される。主要ワーカーは新しい要求113’を受信し、新しい要求113’を実行のためにオリジナル要求113の後の待ち行列に入れる。主要ワーカー150aの揮発性メモリ155内に格納された新しい要求113’は状態Aにある。
図35では、主要ワーカー150aは、オリジナル要求113の実行を完了し、時間tdにおいて新しい応答115’を生成する。主要ワーカー150aは、新しい応答115’をバックアップワーカー150b及びコールクラスタコンポーネント110へ送信し、主要ワーカー150aの揮発性メモリ内に格納されたオリジナル要求113の状態を状態Cへ移行させる。バックアップワーカー150bは新しい応答115’を受信し、新しい応答115’をその揮発性メモリ155内に格納し、バックアップワーカーの揮発性メモリ155内に格納されたオリジナル要求113を状態Gへ移行させる。コールクラスタコンポーネント110は新しい応答115’を受信し、それをエスクローバッファ114内に格納し、再生バッファ112内に格納された新しい要求113’を状態Bへ移行させる。
新しい要求113’が主要ワーカー150aにおいて実行を開始すると、主要ワーカー150aは、新しい要求113’がオリジナル要求113と同じ要求識別子ridを有するということを認識し、したがって、それが複製であるので、新しい要求113’を実行しない。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
3.8 シナリオ8:ta<tr<tb、実行は完了した
最後に、第8の状況では、主要ワーカーが失われる(lost)(例えば、失敗することが知られる)と要求を処理するワーカーが存在する。ごく一般的には、失われた主要ワーカーが応答を提供するのを待っているバックアップワーカー(すなわち、バックアップワーカーは状態Fにある)におけるいかなる要求によっても、バックアップワーカーは主要ワーカーとなるように促される。例えば、当該ワーカーからのメッセージに対する返答を受信しないことにより、ワーカーが失われたことを検知すると、ルート140は、最後に複製された時間に等しい時間tr(すなわち、tr=T2)へのロールバックを開始する。バックアップワーカーは、失われたワーカーに対処するための新しい区画情報を伴い得る時間trへのロールバック要求を受信すると、バックアップワーカーは、資源が要求を実行するのを待っている状態Aへ要求の状態を変更することにより新しい主要ワーカーとして働き始める。
図36〜37を参照すると、第8のロールバックシナリオの一例が示される。図36では、時間taにおいて発行された要求113がコールクラスタコンポーネント110において再生バッファ112内に格納され、状態Aにある。要求113は主要ワーカー150aにおいて揮発性メモリ155内に格納され、実行を開始したが実行を終了しなかったので状態Bにある。要求はまた、バックアップワーカー150bにおいて格納され、状態Fにある。要求113の実行中、主要ワーカー150aは失敗する又は失われる。
図37では、ルートは、最後に複製された時間に等しい時間trへのロールバックを要求した。この時、バックアップワーカー150bは主要ワーカー150aとなるように促され、その状態を状態Aへ変更する。別のワーカー150cが状態Fのバックアップワーカーとして割り当てられる。
次に、クラスタはその通常動作に従って進む(図5〜12に記載のように)。
4.ルートノード
次にルート140の動作に移ると、上に紹介したように、ルートは現在の作業時間(間隔)T1 144を定期的にインクリメントする。一般的に、作業時間を更新する際、ルートは一組の時間(T1,T2,T3)144〜146をすべてのワーカーへ分配(例えば同報通信)する。それに応じて、ワーカーは、それに基づきT2及び/又はT3時間を更新し得る情報をルートへ提供する。
各ワーカーは、特定作業時間に関連付けられた一組のカウンタ151〜152を保持する。1つのカウンタ151は、Sent(t1)と呼ばれる作業時間t1に関連付けられ、バックアップワーカーへ送信された要求時間t1を有する要求の当該ワーカーからの通信の数とバックアップワーカーへ送信された応答時間t1を有する応答の数とをカウントする。図4では、Sent(ta)はバックアップワーカーへ送信された要求時間taを有する要求毎に状態Aにおいて更新され、Sent(tb)はバックアップワーカーにおける複製のために送信される時間tbにおいて生成された応答毎にインクリメントされる。Sent()カウンタは、ワーカーからコールクラスタコンポーネントへ送信されたメッセージに関してはインクリメントされないということに留意されたい。別のカウンタ152、Rec(t1)は、時間t1に関連付けられたワーカーにおいて受信される通信の数をカウントする。特に、バックアップワーカーは、状態Fに入ったときの要求時間taを有する要求の複製を受信するとRec(ta)をインクリメントし、状態Gに入ったときの時間tbにおいて生成された応答の複製を受信するとRec(tb)をインクリメントする。各ワーカーはワーカーwのこれらのカウンタ(Sentw(t)及びRecw(t)で表される)のそれ自体のローカルコピーを有する。時間t1に関連付けられて送信されたすべての通信もまたそれらの宛先において受信される限りにおいて、すべてのワーカーw全体にわたるSentw(t)の総和がワーカーw全体にわたるRecw(t)の総和に等しいということは明らかなはずである。
時々、例えばルート140から現在時間(T1,T2,T3)の同報通信を受信することに応答して、ワーカー150のそれぞれは、複製時間T2より大きいすべての時間のその現在のカウントSent(t)151、Rec(t)152を送信する。これらのカウントは、ルートがT2より大きい各時間tのSent(t)とRec(t)との合計を判定するように、ルートにおいて受信され集計され、対応する時間に関連付けられてカウンタ141と142へ格納される。Sent(T2+1)がRec(T2+1)に等しければ、時間T2+1からのすべての送信は受信されており、T2は次の複製時間になるようにインクリメントされる。この処理は、Sent(T2+1)がRec(T2+1)に等しくなくなるか又はT2+1がT1に到達するまで、繰り返される。次に、このインクリメントされたT2時間(145)はルートからの次の同報通信において使用される。
上に紹介したように、ワーカーにおけるデータ更新は、最初に揮発性メモリ内にジャーナル化され、このジャーナルは持続性ストレージへ折々に書き込まれる。各ワーカーは、持続性メモリ内のジャーナル化された変更を最大複製時間T2までの変更に関し恒久的なものにすることができる。一般的に、各ワーカーwは時間T3(w)にわたるすべての変更を恒久的なものにする機会を有し、通常、様々なワーカーは異なる時間に達した。現在時間の同報通信に応答してRec()及びSent()をルートへ戻すことに加えて、各ワーカーはまた、ルートにおいて又はルートへ戻る通信経路上でのいずれかでmin()演算に従って集計されるそのT3(w)時間を戻す。すなわち、ルートはT3=minwT3(w)を判定し、現在時間を配布する次の時間にT3のこの新しい値を配布する。
いくつかの実施形態では、ルートは、ルートとワーカーのそれぞれとの間の直接(例えばユニキャスト)通信において時間組(T1,T2,T3)を配布する。他の実施形態では、この組はフラッディングベース(flooding−based)同報通信などの別のやり方で配布される。別の実施形態では、この組は、この組の各受側がこの組を複数の別の受側へ転送する所定のツリー構造分配ネットワークに沿って配布され、その結果、最終的にすべてのワーカーがこの時間組を受信した。
ワーカーからのカウントの集計は各ワーカーとルートノードとの間のユニキャスト通信により行われ得、ルートはすべてのワーカーにわたる完全な加算を行う。より効率的な解決策として、カウントは時間組と同じ経路に沿って返送され得、経路内の中間ノードはカウントの合計の部分的集計を行い、これにより、ルートによる加算の負担を分散し、それにもかかわらずすべてのワーカーにわたるカウントの合計を得る。
代替動作モードでは、応答は、応答時間が保持されるよりむしろ複製される場合にコールクラスタコンポーネントからリリースされ得る。このようにして、応答は、より少ない遅延でもってグラフへ提供され得、応答はクラスタストレージ内で未だ持続的でないかもしれない可能性がある。
上に紹介したように、要求の実行の応答は改版されたデータ構造内に格納される。1つのこのようなデータ構造では、データ項目の各更新は別個に回復可能なバージョンとして格納され、当該バージョンは更新に関連付けられ時間でタグを付けられる。例えば、データ構造は、組(tb,値)のリストとしてアクセスキー毎に少なくとも概念的に格納され得、ここで、tbは値の更新の時間である。様々な時間の値は、下部構造を共有してもよいし格納の他の最適化を使用してもよい。いくつかの例では、これらの値は時間同士間のデータ値の編集に基づき格納される。一例として、値はツリーベース構造として表され得、各バージョンは、旧バージョンから次バージョンを生成するのに十分な「前方」増分操作として、又は現バージョンから旧バージョンを再構築するのに十分な「後方」増分操作として格納され得る。上に論述したように、この種の改版されたデータ構造はロールバック時間後にすべての更新をロールバックすることを許容する。データ項目に対するすべての更新を保持するのではなく、更新時間の開始に対する更新だけが保持され、この結果、任意の更新時間の開始へのロールバックが成し遂げられ得る。
「ルートが複製時間T2をインクリメントした後、ワーカーは当該時間における又はそれより前の時間のバージョンへロールバックすることを要求されることはない」ということを認識すべきである。したがって、改版されたデータ構造の最適化は、複製時間T2における又はそれより前の時間のバージョンがデータ構造から除去され得るということである。
いくつかの実施形態では、いくつかの要求が、それらの実行時間が短いという意味で「軽量」であり、したがって、バックアップワーカーにおける要求の実行は、主要ワーカーからバックアップワーカーへの応答の複製より少ない資源を消費し得る。このような実施形態では、主要ワーカーからバックアップワーカーへの応答の複製は行われない。各ワーカーは処理を異なる時間に完了し得る。ワーカーの間のデータの同期を維持するために、主要ワーカーは、上述のように終了時間tbを配布し、バックアップワーカーは、ローカルに計算された応答をあたかも当該時間に計算されたかのように処理する。
代替の実施形態では、コールクラスタコンポーネントは、ルートから時間組を受信するという意味でクラスタに参加し、Sent()カウントとRec()カウントとをルートへ戻す。この実施形態では、コールクラスタコンポーネントは、要求の複製中にワーカーにより使用される要求の要求時間を割り当てる。ロールバックが発生すると、コールクラスタコンポーネントは保持している要求の要求時間を知るので、ロールバック時間後に要求だけを再送信するだけでよく、ロールバック時間に又はその前に生成された応答を廃棄しない。ワーカーの動作は、コールクラスタコンポーネントのこの動作に対処するために修正される。
5.代替案
より一般的には、ta<trである上記ロールバックシナリオ4〜8では、要求を再送信する際、コールクラスタコンポーネント110は、オリジナル要求が時間taにおいて送信されたということに気付かない(またそれに注意も行わない)。一方、クラスタ120は、ロールバックするべきかどうかを判定するために当該時間を使用するのでオリジナル要求の要求時間を考慮する必要がある。したがって、コールクラスタコンポーネント110が、ta<tr<tcとなるように要求(要求識別子ridを有する)をクラスタ120へ再送信すると、要求は、主要ワーカー150aにおいて受信され、時間tcに関連付けられる。主要ワーカー150aは要求をバックアップワーカー150bへ転送する。この状況では、主要ワーカーは再送信された要求(すなわち、{rid,tc})を実行する前にオリジナル要求(すなわち、{rid,ta})を実行し得る。再送信された要求(すなわち、{rid,tc}を実行することに進むと、主要ワーカー150aは、オリジナル要求(すなわち、{rid,ta})の応答が既に保持されているので、再送信された要求を複製として処理することになる。
いくつかの例では、要求はその後のタスクを生み出す(「タスクチェイニング:task chaining」と時折呼ばれる)。このような例では、要求の応答は、生み出されたタスクが完了される後まで生成されない。いくつかの例では、要求{rid,ta}に対する応答が格納されれば、その応答をコールクラスタコンポーネントへ戻す。しかし、要求{rid,ta}に対する応答は要求{rid,ta}が未だ完了していないので未だ存在しなければ、複製ridを有するその後の要求{rid,tc}は、クラスタが「オリジナル要求は最終的に完了しそして応答(コールクラスタコンポーネントへ戻される)を生成することになる」ということを知るので、無視される。
上述の例では、クラスタが要求を受信すると、クラスタは時間(例えばta)と要求とを関連付け、次に、この時間をコールクラスタコンポーネントに通知する。コールクラスタコンポーネントはこの時間とその応答バッファ内に格納された要求とを関連付ける。コールクラスタコンポーネントの再生バッファ内の要求に関連付けられた時間は、ロールバックの場合に要求を選択的に再生するためにコールクラスタコンポーネントにより使用され得る。しかし、いくつかの例では、クラスタ又はコールクラスタコンポーネントのいずれも要求と時間とを関連付けない。これらの例では、コールクラスタコンポーネントは、ロールバックシナリオの場合、要求を再生する際それほど選択的なものではない。例えば、コールクラスタコンポーネントは、ロールバック要求の場合、その再生バッファ内のすべての要求を系統的に再生し得る。
6.実施形態
上述のコンピュータクラスタ管理手法は、例えば、好適なソフトウェア指示を実行するプログラム可能コンピュータシステムを使用して実施されてもよいし、フィールドプログラマブルゲートアレイ(FPGA)などの好適なハードウェアにおいて又はいくつかのハイブリッド形態で実施されてもよい。例えば、プログラム手法では、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、少なくとも1つのデータストレージシステム(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)、少なくとも1つのユーザインターフェース(少なくとも1つの入力デバイス又はポートを使用することにより入力を受信するための、及び少なくとも1つの出力デバイス又はポートを使用することにより出力を提供するための)を含む1つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム(分散クライアント/サーバ又はグリッドなどの様々なアーキテクチャのものであり得る)上で実行する1つ又は複数のコンピュータプログラム内の手順を含み得る。ソフトウェアは、例えばデータフローグラフの設計、構成、及び実行に関係するサービスを提供するより大きなプログラムの1つ又は複数のモジュールを含み得る。プログラムのモジュール(例えばデータフローグラフの要素)は、データレポジトリ内に格納されたデータモデルに準拠するデータ構造又は他の編成されたデータとして実装され得る。
ソフトウェアは、非一時的形式で格納され得、例えば、媒体の物理的性質(例えば表面のピット及びランド、磁区、又は電荷)を一定期間(例えばダイナミックRAMなどのダイナミックメモリデバイスのリフレッシュ期間同士間の時間)の間使用することにより揮発性又は不揮発性ストレージ媒体又は任意の他の非一時的媒体内に具現化される。指示をロードすることに備えて、ソフトウェアは、CD−ROM又は他のコンピュータ可読媒体(例えば、汎用又は特殊用途コンピュータシステム又はデバイスにより可読な)などの有形な非一時的な媒体上で提供されてもよいし、ネットワークの通信媒体上で、それが実行されるコンピュータシステムの有形な非一時的媒体へ配送されてもよい(例えば、伝播信号において符号化されてもよい)。処理の一部又はすべては、特殊用途コンピュータ上で、又はコプロセサ又はフィールドプログラマブルゲートアレイ(FPGA:field−programmable gate array)又は特定用途向け集積回路(ASIC:application−specific integrated circuit)などの専用ハードウェアを使用することにより行われ得る。処理は、ソフトウェアにより規定された計算の様々な部分が様々なコンピュータ要素により実行される分散的やり方で実施され得る。このような各コンピュータプログラムは好適には、本明細書で説明された処理を行うためにストレージデバイス媒体がコンピュータにより読み出されると、コンピュータを構成及び操作するための汎用又は特殊用途プログラム可能コンピュータによりアクセス可能なストレージデバイスのコンピュータ可読格納媒体(例えば固体メモリ又は媒体、又は磁気又は光学媒体)上に格納される又はそれへダウンロードされる。本発明システムはまた、コンピュータプログラムにより構成される有形な非一時的媒体として実現されると考えられ得、ここでは、そのように構成された媒体は、コンピュータシステムを、本明細書に記載の処理のうちの1つ又は複数を実行するように特定及び所定やり方で動作させる。
本発明の多くの実施形態が説明された。それにもかかわらず、これまでの説明は、例示することを意図しているが、添付の特許請求の範囲により規定される本発明の範囲を制限しないように意図されているということを理解すべきである。したがって、他の実施形態もまた以下の特許請求の範囲に含まれる。例えば、様々な修正が本発明の範囲から逸脱することなく行われ得る。加えて、上に記載された工程のいくつかは、順序非依存であり得、したがって記載されたものと異なる順序で実行され得る。

Claims (14)

  1. 複数の処理ノードを含む分散データ処理システムにおいて状態更新要求を処理する方法であって、前記方法は、
    前記複数の処理ノードのうちの2又は3以上を使用して複数の組の要求を処理する工程であって、各組の要求のうちの各要求は、前記複数の処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、複数の時間間隔のうちの1つの対応する時間間隔に関連付けられ、前記複数の組の状態更新要求は前記複数の時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む、前記処理する工程と、
    前記複数の処理ノードの第1の処理ノードにおいて複数のカウンタを保持する工程であって、前記複数のカウンタは、
    前記分散データ処理システム内の前記複数の時間間隔のうちの現在の時間間隔及びその値を示す作業カウンタと、
    前記複数の時間間隔のうちの1つの時間間隔及びその値を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードの複数の処理ノードにおいて複製される、前記複製カウンタと、
    前記複数の時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、前記持続性カウンタを含む、前記保持する工程と、
    前記複数の処理ノードのうちの前記第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供する工程であって、
    前記第1のメッセージは前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、
    前記第1のメッセージ内の前記複製カウンタは、前記第1の時間間隔に先立つ第2の時間間隔に関連付けられた前記複数の組の状態更新要求の第2組の要求のすべての要求が前記処理ノードのうちの2又は3以上において複製されるということと、
    前記第2の時間間隔に先立つ前記複数の時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2又は3以上において複製されるということを示し、
    前記第1の時間間隔に関連付けられた前記第1組の要求のうちの少なくともいくつかの要求は、前記複数の処理ノードのうちの2又は3以上の処理ノードにおいて未だ複製されない、前記提供する工程と、
    前記複数の処理ノードのうちの第1の処理ノードから他の処理ノードへ第2のメッセージを第1の時間に続く第2の時間に提供する工程であって、
    前記第2のメッセージは、前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、
    前記第2のメッセージ内の前記複製カウンタの値は、
    前記第1の時間間隔に関連付けられた前記第1組の要求のすべての要求が前記処理ノードのうちの2又は3以上において複製されるということと、
    前記第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2又は3以上において複製されるということとを示し、
    前記第2のメッセージは、前記第1組の処理ノードのうちの少なくとも1つに前記第1組の要求のうちの1又は2以上の要求を持続的に格納することを完了させる、前記提供する工程を含む、前記方法。
  2. 前記作業カウンタは現在の時間間隔を自律的にインクリメントし、前記複製カウンタは前記複数の処理ノードのうちの他の処理ノードから前記第1の処理ノードにおいて受信されたメッセージに応答してインクリメントする、請求項1に記載の方法。
  3. 前記他の処理ノードの各処理ノードは前記処理ノードにおいて受信された状態更新要求の第1のカウントと前記処理ノードから送信された状態更新要求の第2のカウントとを複数の時間間隔の時間間隔毎に保持する、請求項1又は2に記載の方法。
  4. 前記第1の時間間隔の状態更新要求の前記第1のカウントと他の処理ノードの各処理ノードからの前記第1の時間間隔の状態更新要求の前記第2のカウントとを前記第1の処理ノードにおいて受信する工程と、
    前記第1の時間間隔の状態更新要求の前記受信された第1のカウントと前記第1の時間間隔の状態更新要求の前記第2のカウントとを集計する工程と、
    前記複製カウンタの値をインクリメントするべきかどうかを前記集計に基づき判定する工程と、をさらに含む、請求項1乃至3のいずれか一項に記載の方法。
  5. 前記複製カウンタの値を前記第1のメッセージ内の前記複製カウンタの値から前記第2のメッセージ内の前記複製カウンタの値へインクリメントする工程をさらに含む、請求項1乃至4のいずれか一項に記載の方法。
  6. 前記第1の時間間隔の状態更新要求の前記受信された第1のカウントと前記第1の時間間隔の状態更新要求の前記第2のカウントとを集計する工程は、前記第1の時間間隔の状態更新要求の前記受信された第1のカウントの合計と前記第1の時間間隔の状態更新要求の前記第2のカウントの合計との差分を計算する工程を含む、請求項4に記載の方法。
  7. 前記第1の時間間隔の状態更新要求の前記受信された第1のカウントの合計と前記第1の時間間隔の状態更新要求の前記第2のカウントの合計との差が0であれば前記複製カウンタの値を前記第1のメッセージ内の前記複製カウンタの値から前記第2のメッセージ内の前記複製カウンタの値へインクリメントする工程をさらに含む、請求項6に記載の方法。
  8. 前記他の処理ノードの各処理ノードは、前記処理ノードにより受信され、前記最新の時間間隔に関連付けられたすべての状態更新要求が前記処理ノードにおいて持続的なものにされた前記複数の時間間隔のうちの最新の時間間隔の指標を保持する、請求項1乃至7のいずれか一項に記載の方法。
  9. 前記他の処理ノードの各処理ノードからの前記最新の時間間隔の前記指標を前記第1の処理ノードにおいて受信する工程と、前記持続性カウンタをインクリメントするべきかどうかを前記最新の時間間隔の前記指標に基づき判定する工程とをさらに含む、請求項8に記載の方法。
  10. 前記持続性カウンタを前記最新の時間間隔の指標に関連付けられた最も早い時間間隔へインクリメントする工程をさらに含む、請求項9に記載の方法。
  11. 前記状態更新要求はデータ処理タスク、データ処理タスク結果及びデータレコードのうちの1又は2以上を含む、請求項1乃至10のいずれか一項に記載の方法。
  12. 複数の処理ノードを含む分散データ処理システムにおいて状態更新要求を処理するためのコンピュータ可読媒体上に非一時的形式で格納されたソフトウェアであって、請求項1乃至11のいずれか一項に記載の工程のすべてをコンピュータシステムに行なわせるための命令を含む、前記ソフトウェア。
  13. 複数の処理ノードを含む分散データ処理システムにおいて状態更新要求を処理するための装置であって、前記装置は、
    複数の処理ノードを含む分散データ処理システムと、
    複数の組の要求を処理するための前記複数の処理ノードのうちの2又は3以上において含まれる1又2以上のプロセッサであって、各組の要求のうちの各要求は、前記複数の処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、複数の時間間隔のうちの対応時間間隔に関連付けられ、前記複数の組の要求は前記複数の時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む、前記1又は2以上のプロセッサと、
    前記複数の処理ノードのうちの第1の処理ノードにおいて複数のカウンタを保持するための1又は2以上のデータストレージであって、前記複数のカウンタは、
    前記分散データ処理システム内の前記複数の時間間隔のうちの現在の時間間隔を示す作業カウンタと、
    前記複数の時間間隔のうちの1つの時間間隔を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードの複数の処理ノードにおいて複製される、前記複製カウンタと
    前記複数の時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、前記持続性カウンタを含む、前記1又は2以上のデータストレージと、
    前記複数の処理ノードのうちの前記第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供するための第1の出力であって、前記第1のメッセージは前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、前記第1のメッセージ内の前記複製カウンタは、
    前記第1の時間間隔に先立つ第2の時間間隔に関連付けられた第2組の要求のすべての要求が前記処理ノードのうちの2又は3以上において複製されるということと、
    前記第2の時間間隔に先立つ前記複数の時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2又は3以上において複製されるということとを示し、
    前記第1の時間間隔に関連付けられた前記第1組の要求のうちの少なくともいくつかの要求は前記複数の処理ノードのうちの2又は3以上の処理ノードにおいて未だ複製されない、第1の出力と、
    前記複数の処理ノードのうちの前記第1の処理ノードから他の処理ノードへ第2のメッセージを前記第1の時間に続く第2の時間に提供するための第2の出力であって、前記第2のメッセージは前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、前記第2のメッセージ内の複製カウンタの値は、
    前記第1の時間間隔に関連付けられた前記第1組の要求のすべての要求は前記処理ノードのうちの2又は3以上において複製されるということと、
    前記第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2つ以上において複製されるということとを示し、
    前記第2のメッセージは、前記第1組の要求のうちの1又は2以上の要求を持続的に格納することを前記第1組の処理ノードのうちの少なくとも1つに完了させる、前記第2の出力と、を含む、前記装置。
  14. 複数の処理ノードを含む分散データ処理システム内の状態更新要求を処理するためのコンピュータシステムであって、前記コンピュータシステムは、
    前記複数の処理ノードのうちの2つ以上を使用して複数の組の要求を処理する手段であって、各組の要求のうちの各要求は、前記複数の処理ノードのうちの1つの処理ノードにおいて状態更新を引き起こすように構成され、複数の時間間隔のうちの対応時間間隔に関連付けられ、前記複数の組の要求は前記複数の時間間隔のうちの第1の時間間隔に関連付けられた第1組の要求を含む、前記処理する手段と、
    前記複数の処理ノードの第1の処理ノードにおいて複数のカウンタを保持する手段であって、前記複数のカウンタは、
    前記分散データ処理システム内の前記複数の時間間隔のうちの現在の時間間隔を示す作業カウンタと、
    前記複数の時間間隔のうちの1つの時間間隔を示す複製カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードの複数の処理ノードにおいて複製される、前記複製カウンタと
    前記複数の時間間隔のうちの1つの時間間隔を示す持続性カウンタであって、当該時間間隔に関連付けられたすべての要求が前記複数の処理ノードのうちの少なくとも1つの処理ノードに関連付けられた持続的ストレージ内に格納される、前記持続性カウンタを含む、前記保持する手段と、
    前記複数の処理ノードのうちの前記第1の処理ノードから他の処理ノードへ第1のメッセージを第1の時間に提供する手段であって、前記第1のメッセージは前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、前記第1のメッセージ内の前記複製カウンタは、
    前記第1の時間間隔に先立つ第2の時間間隔に関連付けられた第2組の要求のすべての要求が前記処理ノードのうちの2つ以上において複製されるということと、
    前記第2の時間間隔に先立つ前記複数の時間間隔のうちのいくつかの時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2つ以上において複製されるということとを示し、
    前記第1の時間間隔に関連付けられた前記第1組の要求のうちの少なくともいくつかの要求は前記複数の処理ノードのうちの2つ以上の処理ノードにおいて未だ複製されない、前記提供する手段と、
    前記複数の処理ノードのうちの第1の処理ノードから他の処理ノードへ第2のメッセージを前記第1の時間に続く第2の時間に提供する手段であって、前記第2のメッセージは前記作業カウンタの値、前記複製カウンタの値及び前記持続性カウンタの値を含み、前記第2のメッセージ内の複製カウンタの値は、
    前記第1の時間間隔に関連付けられた前記第1組の要求のすべての要求は前記処理ノードのうちの2又は3以上において複製されるということと、
    前記第1の時間間隔に先立つ時間間隔に関連付けられた任意の非持続的に格納された要求が前記処理ノードのうちの2又は3以上において複製されるということとを示し、
    前記第2のメッセージは、前記第1組の要求のうちの1又は2以上の要求を持続的に格納することを前記第1組の処理ノードのうちの少なくとも1つに完了させる、前記提供する手段と、を含む、前記コンピュータシステム。
JP2020521944A 2017-10-31 2018-10-30 時間間隔カウンタを使用してコンピュータクラスタを管理すること Active JP7314127B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762579225P 2017-10-31 2017-10-31
US62/579,225 2017-10-31
PCT/US2018/058211 WO2019089593A1 (en) 2017-10-31 2018-10-30 Managing a computing cluster using time interval counters

Publications (3)

Publication Number Publication Date
JP2021501398A true JP2021501398A (ja) 2021-01-14
JP2021501398A6 JP2021501398A6 (ja) 2021-03-11
JP7314127B2 JP7314127B2 (ja) 2023-07-25

Family

ID=64277932

Family Applications (6)

Application Number Title Priority Date Filing Date
JP2020521954A Active JP7038204B2 (ja) 2017-10-31 2018-10-30 永続性レベル表示器を使用してコンピュータクラスタを管理すること
JP2020521999A Active JP7203102B2 (ja) 2017-10-31 2018-10-30 コンピュータクラスタインターフェースを管理すること
JP2020522044A Active JP6931745B2 (ja) 2017-10-31 2018-10-30 状態更新の一貫性に基づきコンピュータクラスタを管理すること
JP2020521944A Active JP7314127B2 (ja) 2017-10-31 2018-10-30 時間間隔カウンタを使用してコンピュータクラスタを管理すること
JP2020522052A Pending JP2021503640A (ja) 2017-10-31 2018-10-30 複製されたタスク結果を使用してコンピュータクラスタを管理すること
JP2023068386A Pending JP2023093614A (ja) 2017-10-31 2023-04-19 複製されたタスク結果を使用してコンピュータクラスタを管理すること

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2020521954A Active JP7038204B2 (ja) 2017-10-31 2018-10-30 永続性レベル表示器を使用してコンピュータクラスタを管理すること
JP2020521999A Active JP7203102B2 (ja) 2017-10-31 2018-10-30 コンピュータクラスタインターフェースを管理すること
JP2020522044A Active JP6931745B2 (ja) 2017-10-31 2018-10-30 状態更新の一貫性に基づきコンピュータクラスタを管理すること

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2020522052A Pending JP2021503640A (ja) 2017-10-31 2018-10-30 複製されたタスク結果を使用してコンピュータクラスタを管理すること
JP2023068386A Pending JP2023093614A (ja) 2017-10-31 2023-04-19 複製されたタスク結果を使用してコンピュータクラスタを管理すること

Country Status (9)

Country Link
US (6) US10949414B2 (ja)
EP (5) EP3704576A1 (ja)
JP (6) JP7038204B2 (ja)
KR (5) KR102442431B1 (ja)
CN (5) CN111316240B (ja)
AU (6) AU2018359380B2 (ja)
CA (5) CA3078483C (ja)
SG (5) SG11202003045VA (ja)
WO (5) WO2019089619A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789274B2 (en) * 2018-02-27 2020-09-29 Sap Se Replicating data in a multi-cloud environment
WO2019101245A2 (en) 2019-03-18 2019-05-31 Alibaba Group Holding Limited Consensus system downtime recovery
SG11201908544UA (en) 2019-03-18 2019-10-30 Alibaba Group Holding Ltd Consensus system downtime recovery
US10938750B2 (en) * 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
CN111208949B (zh) * 2020-01-13 2020-12-25 上海依图网络科技有限公司 一种确定分布式存储系统中的数据回滚时段的方法
KR102357314B1 (ko) * 2020-10-28 2022-02-07 주식회사 마크베이스 센서 데이터 복제 방법을 수행하는 클라우드 시스템
CN112965858B (zh) * 2021-03-04 2023-07-18 电信科学技术第五研究所有限公司 一种组网分布式存储数据冲突处理的实现方法
US11886920B2 (en) * 2021-03-19 2024-01-30 Shopify Inc. Methods and apparatus for load sharing between primary and secondary computing environments based on expected completion latency differences
US11514080B1 (en) * 2022-05-31 2022-11-29 Snowflake Inc. Cross domain transactions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013046352A1 (ja) * 2011-09-28 2013-04-04 株式会社日立製作所 計算機システム、データ管理方法及びデータ管理プログラム
JP2014170573A (ja) * 2014-04-25 2014-09-18 Hitachi Ltd メッセージシステムおよびデータストアサーバ
JP2015527670A (ja) * 2013-07-26 2015-09-17 ▲ホア▼▲ウェイ▼技術有限公司 データ送信方法、データ受信方法、及びストレージデバイス
WO2016135705A1 (en) * 2015-02-27 2016-09-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
JP2017527216A (ja) * 2014-09-03 2017-09-14 マイクロソフト テクノロジー ライセンシング,エルエルシー 選択されたネットワークトラフィックの収集と分析

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68917592T2 (de) * 1989-03-14 1995-01-26 Alcatel Nv Fernmeldevermittlungssystem.
JP3407358B2 (ja) * 1993-11-05 2003-05-19 富士通株式会社 バリア同期における非同期通信完了保証方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
CA2213213A1 (en) * 1996-08-26 1998-02-26 Tandem Computers Incorporated Method and apparatus for performing efficient corba transactions
GB2335518A (en) 1998-03-18 1999-09-22 Ibm Triggering event causes creation of Coordinator transaction state object
US6615225B1 (en) 2000-04-27 2003-09-02 International Business Machines Corporation System and method for relating files in a distributed data storage environment
US7103664B1 (en) 2000-05-31 2006-09-05 International Business Machines Corporation Method, system and program products for ordering lists of service addresses to provide load balancing of a clustered environment
US6990606B2 (en) * 2000-07-28 2006-01-24 International Business Machines Corporation Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US20030023775A1 (en) * 2001-07-13 2003-01-30 International Business Machines Corporation Efficient notification of multiple message completions in message passing multi-node data processing systems
JP4133068B2 (ja) 2002-07-23 2008-08-13 株式会社日立製作所 計算機システム
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US20040254964A1 (en) * 2003-06-12 2004-12-16 Shoji Kodama Data replication with rollback
JP2005078461A (ja) * 2003-09-01 2005-03-24 Ricoh Co Ltd 分散画像処理ネットワークシステム
CN1938984B (zh) * 2004-03-31 2010-05-26 Lg电子株式会社 用于网络层的数据处理方法
CA2484694A1 (en) 2004-10-14 2006-04-14 Alcatel Database ram cache
US7778984B2 (en) * 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
JP2008533564A (ja) 2005-02-24 2008-08-21 ゼラウンド システムズ リミテッド データ管理のための方法および装置
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7848261B2 (en) * 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
GB0613192D0 (en) * 2006-07-01 2006-08-09 Ibm Methods, apparatus and computer programs for managing persistence
US8086805B2 (en) * 2006-10-05 2011-12-27 Waratek Pty Ltd. Advanced contention detection
US8880480B2 (en) 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
JP4916420B2 (ja) * 2007-11-16 2012-04-11 株式会社日立製作所 ストレージシステム及びリモートコピー制御方法
JP2009151376A (ja) * 2007-12-18 2009-07-09 Ntt Docomo Inc 分散処理方法、計算機管理装置及び分散処理システム
US20100332718A1 (en) * 2009-06-26 2010-12-30 Micron Technology, Inc. System and method for providing configurable latency and/or density in memory devices
US8275964B2 (en) * 2010-01-08 2012-09-25 International Business Machines Corporation Hardware support for collecting performance counters directly to memory
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8555018B1 (en) 2010-03-11 2013-10-08 Amazon Technologies, Inc. Techniques for storing data
US8671074B2 (en) 2010-04-12 2014-03-11 Microsoft Corporation Logical replication in clustered database system with adaptive cloning
US8381015B2 (en) 2010-06-30 2013-02-19 International Business Machines Corporation Fault tolerance for map/reduce computing
CN102421110B (zh) * 2010-09-27 2014-11-05 中国移动通信集团四川有限公司 端到端关联的实现方法和装置
CN103180826B (zh) * 2010-10-25 2017-04-05 起元技术有限责任公司 在代表计算机程序的数据流图中管理数据集对象
JP5146523B2 (ja) * 2010-11-26 2013-02-20 株式会社デンソー 車両用挙動データ記録装置
JP2012129857A (ja) * 2010-12-16 2012-07-05 Hitachi Ltd データ処理システム、およびデータ順序保証方法
US9053073B1 (en) * 2011-04-18 2015-06-09 American Megatrends, Inc. Use of timestamp logic in synchronous replication
US8918362B2 (en) 2011-05-23 2014-12-23 Microsoft Corporation Replication processes in a distributed storage environment
US8935493B1 (en) 2011-06-30 2015-01-13 Emc Corporation Performing data storage optimizations across multiple data storage systems
US9965381B1 (en) 2011-06-30 2018-05-08 EMC IP Holding Company LLC Indentifying data for placement in a storage system
EP2555129B1 (en) 2011-08-03 2019-02-06 Amadeus S.A.S. Method and system to maintain strong consistency of distributed replicated contents in a client/server system
CN102339315B (zh) * 2011-09-30 2014-11-19 亿赞普(北京)科技有限公司 一种广告数据的索引更新方法和系统
US9246996B1 (en) 2012-05-07 2016-01-26 Amazon Technologies, Inc. Data volume placement techniques
US10387448B2 (en) 2012-05-15 2019-08-20 Splunk Inc. Replication of summary data in a clustered computing environment
EP2667541B1 (en) * 2012-05-23 2015-08-05 Alcatel Lucent Connectivity service orchestrator
JP2015525419A (ja) * 2012-06-18 2015-09-03 アクテフィオ,インク. 高度データ管理仮想化システム
US9223626B2 (en) 2012-08-30 2015-12-29 International Business Machines Corporation Task execution and management in a clustered computing environment
CA2790479C (en) * 2012-09-24 2020-12-15 Ibm Canada Limited - Ibm Canada Limitee Partitioning a search space for distributed crawling
US8972491B2 (en) 2012-10-05 2015-03-03 Microsoft Technology Licensing, Llc Consistency-based service-level agreements in cloud storage environments
US9373074B2 (en) 2012-10-09 2016-06-21 Qualcomm Incorporated Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes
WO2014077918A1 (en) 2012-11-19 2014-05-22 Board Of Regents, The University Of Texas System Robustness in a scalable block storage system
US9449039B2 (en) 2012-11-26 2016-09-20 Amazon Technologies, Inc. Automatic repair of corrupted blocks in a database
US9002805B1 (en) 2012-12-14 2015-04-07 Amazon Technologies, Inc. Conditional storage object deletion
US11086898B2 (en) * 2013-03-13 2021-08-10 Amazon Technologies, Inc. Token-based admission control for replicated writes
US10225136B2 (en) 2013-04-30 2019-03-05 Splunk Inc. Processing of log data and performance data obtained via an application programming interface (API)
US9208032B1 (en) * 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
KR102201510B1 (ko) * 2013-05-17 2021-01-11 아브 이니티오 테크놀로지 엘엘시 데이터 운영을 위한 메모리 및 스토리지 공간 관리
US9384227B1 (en) 2013-06-04 2016-07-05 Amazon Technologies, Inc. Database system providing skew metrics across a key space
US9298651B2 (en) * 2013-06-24 2016-03-29 International Business Machines Corporation Continuous in-memory accumulation of hardware performance counter data
US9621401B1 (en) 2013-08-08 2017-04-11 The Boeing Company Performing dynamic data analysis within a dynamic network
US20150157880A1 (en) 2013-12-05 2015-06-11 Image Owl Inc. Cloud-based adaptive quality assurance facilities
US9183148B2 (en) * 2013-12-12 2015-11-10 International Business Machines Corporation Efficient distributed cache consistency
US10474493B2 (en) 2014-02-28 2019-11-12 Red Hat, Inc. Systems and methods for semi-durable transaction log storage in two-phase commit protocol transaction processing
US10803012B1 (en) 2014-05-09 2020-10-13 Amazon Technologies, Inc. Variable data replication for storage systems implementing quorum-based durability schemes
US10409920B1 (en) * 2014-05-23 2019-09-10 EMC IP Holding Company LLC Data services for tiered memory
US9525599B1 (en) 2014-06-24 2016-12-20 Google Inc. Modeling distributed systems
WO2016025321A1 (en) 2014-08-13 2016-02-18 OneCloud Labs, Inc. Replication of virtualized infrastructure within distributed computing environments
US10242027B2 (en) 2014-08-15 2019-03-26 Hewlett-Packard Development Company, L.P. Three phase commit for a distributed file system
US9256761B1 (en) 2014-08-18 2016-02-09 Yp Llc Data storage service for personalization system
AU2015312003B2 (en) 2014-09-02 2019-08-29 Ab Initio Technology Llc Executing graph-based program specifications
US10303795B2 (en) 2014-09-10 2019-05-28 Amazon Technologies, Inc. Read descriptors at heterogeneous storage systems
US10025802B2 (en) * 2014-09-19 2018-07-17 Amazon Technologies, Inc. Automated configuration of log-coordinated storage groups
US9799017B1 (en) 2014-09-19 2017-10-24 Amazon Technologies, Inc. Cross-data-store operations in log-coordinated storage systems
EP3195117B1 (en) 2014-09-19 2020-12-02 Amazon Technologies Inc. Automated configuration of log-coordinated storage groups
US10373247B2 (en) 2014-09-19 2019-08-06 Amazon Technologies, Inc. Lifecycle transitions in log-coordinated data stores
CN107111532B (zh) 2014-10-20 2021-03-05 起元科技有限公司 计算不确定性情况下的恢复和容错
US9892180B2 (en) * 2014-11-21 2018-02-13 International Business Machines Corporation Data transfer between multiple databases
US10095425B1 (en) 2014-12-30 2018-10-09 EMC IP Holding Company LLC Techniques for storing data
US9886347B2 (en) * 2015-01-08 2018-02-06 International Business Machines Corporation Data replication in a database management system
WO2016134035A1 (en) 2015-02-17 2016-08-25 Coho Data, Inc. Virtualized application-layer space for data processing in data storage systems
US9891973B2 (en) 2015-02-18 2018-02-13 Seagate Technology Llc Data storage system durability using hardware failure risk indicators
JP2016174268A (ja) 2015-03-17 2016-09-29 株式会社日立製作所 ネットワークシステム、ネットワークシステムの制御方法、通信装置、及びプログラム
JP6434131B2 (ja) 2015-04-15 2018-12-05 株式会社日立製作所 分散処理システム、タスク処理方法、記憶媒体
US20160306581A1 (en) 2015-04-15 2016-10-20 Intermodal Data, Inc. Automated configuration of storage pools methods and apparatus
CN106155929A (zh) 2015-04-17 2016-11-23 伊姆西公司 数据存储管理系统和方法
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9778883B2 (en) 2015-06-23 2017-10-03 Netapp, Inc. Methods and systems for resource management in a networked storage environment
US10650024B2 (en) * 2015-07-30 2020-05-12 Google Llc System and method of replicating data in a distributed system
US9753813B1 (en) 2015-09-25 2017-09-05 Amazon Technologies, Inc. Data replication snapshots for persistent storage using operation numbers
WO2017058823A1 (en) * 2015-09-28 2017-04-06 Wal-Mart Stores, Inc. Cloud based session management system
US9672082B2 (en) * 2015-10-21 2017-06-06 Oracle International Corporation Guaranteeing the event order for multi-stage processing in distributed systems
US10795881B2 (en) * 2015-12-18 2020-10-06 Sap Se Table replication in a database environment
US10567500B1 (en) 2015-12-21 2020-02-18 Amazon Technologies, Inc. Continuous backup of data in a distributed data store
US10601890B2 (en) 2016-01-14 2020-03-24 Ab Initio Technology Llc Recoverable stream processing
US20170212891A1 (en) 2016-01-25 2017-07-27 Netapp, Inc. Scheduling technique to smooth metadata processing latency
US10237149B1 (en) 2016-03-21 2019-03-19 EMC IP Holding Company LLC Application-level monitoring and profiling services in computing environments
US10474636B2 (en) * 2016-03-25 2019-11-12 Amazon Technologies, Inc. Block allocation for low latency file systems
US10469582B2 (en) 2016-04-13 2019-11-05 Netapp, Inc. Methods and systems for managing provisioning requests in a networked storage environment
CN107302469B (zh) * 2016-04-14 2020-03-31 北京京东尚科信息技术有限公司 分布式服务集群系统数据更新的监控装置及方法
US10158743B2 (en) * 2016-06-12 2018-12-18 International Business Machines Corporation Compute node cluster management
CN106201338B (zh) * 2016-06-28 2019-10-22 华为技术有限公司 数据存储方法及装置
US10650017B1 (en) 2016-08-29 2020-05-12 Amazon Technologies, Inc. Tiered storage for data processing
US10810103B2 (en) 2016-12-14 2020-10-20 Vmware, Inc. Method and system for identifying event-message transactions
US11307998B2 (en) * 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US10423609B1 (en) * 2017-03-29 2019-09-24 Amazon Technologies, Inc. Consistent snapshot points in a distributed storage service
US11010193B2 (en) * 2017-04-17 2021-05-18 Microsoft Technology Licensing, Llc Efficient queue management for cluster scheduling
US10613791B2 (en) * 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US10387673B2 (en) * 2017-06-30 2019-08-20 Microsoft Technology Licensing, Llc Fully managed account level blob data encryption in a distributed storage environment
US10425473B1 (en) * 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US20190102262A1 (en) 2017-09-29 2019-04-04 Intel Corporation Automated continuous checkpointing
US10862965B2 (en) 2017-10-01 2020-12-08 Oracle International Corporation System and method for topics implementation in a distributed data computing environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013046352A1 (ja) * 2011-09-28 2013-04-04 株式会社日立製作所 計算機システム、データ管理方法及びデータ管理プログラム
JP2015527670A (ja) * 2013-07-26 2015-09-17 ▲ホア▼▲ウェイ▼技術有限公司 データ送信方法、データ受信方法、及びストレージデバイス
JP2014170573A (ja) * 2014-04-25 2014-09-18 Hitachi Ltd メッセージシステムおよびデータストアサーバ
JP2017527216A (ja) * 2014-09-03 2017-09-14 マイクロソフト テクノロジー ライセンシング,エルエルシー 選択されたネットワークトラフィックの収集と分析
WO2016135705A1 (en) * 2015-02-27 2016-09-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources

Also Published As

Publication number Publication date
JP7314127B2 (ja) 2023-07-25
AU2018357856B2 (en) 2021-03-18
US11074240B2 (en) 2021-07-27
CN111316240B (zh) 2023-11-10
KR20200080286A (ko) 2020-07-06
CN111316241A (zh) 2020-06-19
WO2019089593A1 (en) 2019-05-09
SG11202003041YA (en) 2020-04-29
CA3078483C (en) 2022-11-01
KR20200078577A (ko) 2020-07-01
SG11202002986TA (en) 2020-04-29
CA3078478C (en) 2023-03-07
CA3078469C (en) 2023-01-17
AU2018357870B2 (en) 2021-04-22
KR102442431B1 (ko) 2022-09-08
CA3078482C (en) 2022-10-25
JP6931745B2 (ja) 2021-09-08
AU2018357870A1 (en) 2020-04-23
EP3704579A1 (en) 2020-09-09
CA3078469A1 (en) 2019-05-09
WO2019089606A1 (en) 2019-05-09
US11269918B2 (en) 2022-03-08
CN111295643B (zh) 2023-10-24
CA3078476C (en) 2022-10-18
US20190129993A1 (en) 2019-05-02
CN111316243B (zh) 2023-11-10
CA3078476A1 (en) 2019-05-09
KR102444421B1 (ko) 2022-09-16
US20190129951A1 (en) 2019-05-02
SG11202002998QA (en) 2020-04-29
CN111295643A (zh) 2020-06-16
WO2019089601A1 (en) 2019-05-09
CA3078483A1 (en) 2019-05-09
KR20200077547A (ko) 2020-06-30
US10558493B2 (en) 2020-02-11
JP2021501399A (ja) 2021-01-14
KR102396002B1 (ko) 2022-05-09
AU2018357856A1 (en) 2020-04-23
AU2018359385B2 (en) 2021-06-17
KR20200078581A (ko) 2020-07-01
US20190129772A1 (en) 2019-05-02
US20190129883A1 (en) 2019-05-02
CN111373373A (zh) 2020-07-03
CN111316241B (zh) 2023-11-10
SG11202003045VA (en) 2020-04-29
AU2018359385A1 (en) 2020-04-23
CN111316240A (zh) 2020-06-19
JP7203102B2 (ja) 2023-01-12
JP2021503113A (ja) 2021-02-04
SG11202003048QA (en) 2020-04-29
EP3704580A1 (en) 2020-09-09
WO2019089619A1 (en) 2019-05-09
CA3078482A1 (en) 2019-05-09
US20190129751A1 (en) 2019-05-02
CN111316243A (zh) 2020-06-19
AU2018359380B2 (en) 2021-03-11
EP3704578A1 (en) 2020-09-09
WO2019089599A1 (en) 2019-05-09
KR20200077548A (ko) 2020-06-30
JP7038204B2 (ja) 2022-03-17
JP2023093614A (ja) 2023-07-04
EP3704576A1 (en) 2020-09-09
US20190129758A1 (en) 2019-05-02
AU2018359378B2 (en) 2021-09-09
AU2021277733A1 (en) 2022-01-06
US11288284B2 (en) 2022-03-29
US11281693B2 (en) 2022-03-22
KR102402150B1 (ko) 2022-05-25
AU2018359378A1 (en) 2020-04-23
CN111373373B (zh) 2023-11-10
AU2021277733B2 (en) 2023-05-18
US10949414B2 (en) 2021-03-16
EP3704579B1 (en) 2023-10-18
CA3078478A1 (en) 2019-05-09
KR102372540B1 (ko) 2022-03-08
EP3704577A1 (en) 2020-09-09
JP2021503640A (ja) 2021-02-12
AU2018359380A1 (en) 2020-04-23
JP2021501400A (ja) 2021-01-14

Similar Documents

Publication Publication Date Title
JP6931745B2 (ja) 状態更新の一貫性に基づきコンピュータクラスタを管理すること
JP2021501398A6 (ja) 時間間隔カウンタを使用してコンピュータクラスタを管理すること
JP2021501399A6 (ja) 永続性レベル表示器を使用してコンピュータクラスタを管理すること
JP2021501400A6 (ja) コンピュータクラスタインターフェースを管理すること

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210810

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230522

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230712

R150 Certificate of patent or registration of utility model

Ref document number: 7314127

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150