JP5373770B2 - 分散型、耐障害性、および高可用性を達成するための決定性コンピューティング・システム、方法、およびプログラム・ストレージ・デバイス(分散型、耐障害性、および高可用性のコンピューティング・システム) - Google Patents
分散型、耐障害性、および高可用性を達成するための決定性コンピューティング・システム、方法、およびプログラム・ストレージ・デバイス(分散型、耐障害性、および高可用性のコンピューティング・システム) Download PDFInfo
- Publication number
- JP5373770B2 JP5373770B2 JP2010506208A JP2010506208A JP5373770B2 JP 5373770 B2 JP5373770 B2 JP 5373770B2 JP 2010506208 A JP2010506208 A JP 2010506208A JP 2010506208 A JP2010506208 A JP 2010506208A JP 5373770 B2 JP5373770 B2 JP 5373770B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- message
- execution
- messages
- deterministic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 49
- 238000012545 processing Methods 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 14
- 238000013461 design Methods 0.000 claims description 13
- 230000003190 augmentative effect Effects 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 5
- 244000046052 Phaseolus vulgaris Species 0.000 description 5
- 241000508269 Psidium Species 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002688 persistence Effects 0.000 description 4
- 230000003416 augmentation Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 241000238876 Acari Species 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000010420 art technique Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000003623 enhancer Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Retry When Errors Occur (AREA)
Description
タスクを実行するための論理をそれぞれが実装する複数のソフトウェア・コンポーネントであって、このコンポーネントが、ネットワーク内で接続され、コンポーネント間でメッセージを通信するように適合された、1つまたは複数のマシンを備える実行環境内で実行する、複数のソフトウェア・コンポーネントと、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージに関して、決定性タイムスタンプを自動的に関連付けるための手段であって、当該タイムスタンプが受信側コンポーネントでの当該メッセージの着信の推定時刻を表す、自動的に関連付けるための手段と、
入力メッセージの固有の着信順序を生成するために当該タイムスタンプを使用することによって、当該コンポーネントを決定的に実行するための手段と、
プログラム実行中にコンポーネント状態を追跡し、その状態をローカル・ストレージ・デバイスに定期的にチェックポインティング(checkpointing)するための手段と、
を備え、
マシンの障害時には、最近格納されたチェックポイントを回復すること、および最後のチェックポイント以降に発生したイベントを再実行することによって、このコンポーネント状態が復元される。
コンピューティング・システム内のコンポーネントを、それらのコンポーネント間でのメッセージ通信を実行可能にするように適合されたコンピューティング・システム内で決定的に実行するための方法であって、各コンポーネントがタスクを実行するための論理を実装し、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージに関して、タイムスタンプを自動的に関連付けることであって、このタイムスタンプが受信側コンポーネントでのメッセージの着信の推定時刻を表す、自動的に関連付けることと、
入力メッセージの固有の着信順序を生成するために当該タイムスタンプを使用することによって、当該コンポーネントを決定的に実行することと、
プログラム実行中にそのコンポーネント状態を追跡し、その状態をローカル・ストレージ・デバイスに定期的にチェックポインティングすることと、
を含み、
コンポーネントの障害時には、最近格納されたチェックポイントを回復すること、および最後のチェックポイント以降に発生したイベントを再実行することによって、このコンポーネント状態が復元される。
各コンポーネントがタスクを実行するための論理を実装する、メッセージのコンポーネントへの入力およびコンポーネントからの出力を表すポートの仕様を含む、コンポーネントの高水準設計を実行可能にするサブシステムと、
コンポーネントが当該実行環境の特定の処理エンジンに割り当てられた低水準実装に、高水準設計をマッピングするための、配置サービスと、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージに関して、タイムスタンプに関連付けられたコンポーネントの入力または出力メッセージを自動的に増補するためであって、このタイムスタンプが受信側コンポーネントでのメッセージの着信の推定時刻を表す、自動的に増補するため、および
その状態に対する増分変化を追跡するためのコードでコンポーネントを増補するための、
コード強化手段と、
を備え、
プログラム実行中にコンポーネント状態が追跡され、コンポーネント状態はローカル・ストレージ・デバイス内でチェックポインティングされ、
コンポーネントの障害時には、最近のチェックポイントを回復すること、および最後のチェックポイント以降に発生したイベントを再実行することによって、このコンポーネント状態が復元される。
周知のように、コンポーネントはサービス指向またはイベント指向とすることが可能であり、SCAのようなコンポーネント・モデルに適合した「オブジェクト」の任意の集合とすることができる。典型的には、Java言語またはC++言語または同様のオブジェクト指向言語、あるいは、PythonまたはPerlなどの他の言語が、SCAサービス・コンポーネントおよびコンポーネント間で送信されるデータを実装するために使用される。すなわち、コンポーネント間の対話は、ポートを横切ってデータ・メッセージを渡すことによって、またはサービス消費者からサービス提供者へのサービス呼び出しによってのみ、実行され、ここではデータ値を渡すことおよび戻すことが可能である。送信されたメッセージまたはサービス呼び出しの受信者は、同期方法を備えたオブジェクトとして表される。いかなる時点でも、コンポーネント内には1つの制御スレッドが存在する。コンポーネント間ではいかなるオブジェクトも共有されない。オブジェクトは、(a)コンポーネント・オブジェクトそれ自体、同期方法を備えた「モニタ」、(b)コンポーネント間で渡すことが可能であるが決して共有されない、「値」オブジェクト、または(c)共有可能であるが、コンポーネント・オブジェクト自体の中で、または同じ値オブジェクト内での、いずれかのみで可能な、「実装」オブジェクトの、いずれかである。とりわけ、複数の実行コンポーネントによってデータが同時に所有されないことを保証する、この規律は、David Bacon、Robert Strom、Ashis Tarafdar等による、「Guava:a dialect of Java without data races」と題するオブジェクト指向のプログラミング、システム、言語、およびアプリケーションに関する第15回ACM SIGPLAN会議2000の議事録において、様式化および記述されている。Guava技法によれば、特定のコンポーネントがこの規律に従うことを静的にチェックすることが可能である。JVMで実行されるJavaのGuava言語は、本発明の環境で使用するのに好適なコンポーネント実装言語の単なる一例である。
本発明の実行サーバは、(1)開発環境が根本的に簡略化されており、コンポーネントはプレーンJavaで作成可能であり、分散型フロー・ネットワークを構築するためにSCAコンポーネント・モデルのように配線可能であること、(2)コンポーネントは、プレーンJavaの基本変数および集合クラスで状態を格納すること、(3)プログラマは、コンポーネント状態を別々のオブジェクトに分割するため、およびその状態を持続するために、トランザクション、JDBC、またはエンティティ・ビーンなどの、特化された方法および構造を使用する必要がないこと、という理由から、他の手法と区別される。その代わりに、マシン障害、ならびに、メッセージをドロップ、再順序付け、または複製する可能性のある不良ネットワークにもかかわらず、本発明の実行サーバによって、持続性および耐障害性が自動的に提供される。
本発明の方法によれば、耐障害性に関する技術は、決定的で再生可能なシステムの実行を保証することに基づく。これは、トランザクションに基づく、または複製に基づく、またはすべてのコンポーネント間メッセージの持続的記録に基づく、他の手法に勝る、改良点である。決定的実行とは、システムに同じ状態および同じ入力メッセージが与えられた場合、同じ出力メッセージを生成することを意味する。決定性とは、コンポーネントの障害時に、最近のチェックポイントを回復すること、およびそのチェックポイント以降に発生したイベントを再生することによって、その状態を復元できることを示唆する。決定性のために、再生以後の状態は失われた状態と同じであることが保証される。これは、状態を、更新されるごとに持続的に保存しておく必要がなく、断続的に保存すればよいことを意味する。
持続的な分散型計算に関する決定的実行メカニズム間の主な相違点として、本発明の手法では、わずかながらユーザの介入が必要である。具体的に言えば、開発者は、VTまたはそれらの計算方法を知る必要がない。アプリケーション開発者の作業を劇的に簡略化するためのツール・セットが提供されるが、本明細書で説明される恩恵はまったく損なわれることがない。
図3に示されるように、設計時、コンポーネントの計算論理は、プレーンJava、C++、または同様のオブジェクト指向コード、あるいはPythonまたはPerlなどの他の言語で作成することができる。ポートは、たとえばJavaインターフェースで定義される。論理接続は、2つまたはそれ以上のポートを配線することにより、設計者によって作成される。この高水準設計は、結果として生じるシステムの分散性を完全に取り除く(abstract)。さらに、決定的実行および耐障害性などの特性を当然のものとみなす。図4に示されるように、ミドルウェア配置サービス・コンポーネント50を使用して、図3に示される設計などのこの高水準設計を、低水準実装にマッピングし、ここでは最も相互に関係するコンポーネントがスケジューラにグループ化され、スケジューラは、おそらくは異なるマシン上のJVM内に割り当てられる。実行前の配置は、マシンの計算能力のメトリクス、ネットワーク機能、および配置プリファレンスなどの、ユーザ供給パラメータにより、半自動式である。性能を最大限にするために、異なるマシン上の作業負荷は平均化される。実行時、全体の性能を良くするために、スケジューラをそれらの元のマシンから他のマシンへと移動させることによって、初期の配置を微調整することができる。配置に応じて、開発者ビューにおける論理接続を物理接続にマッピングすることもできる。
本発明では、プログラム変換器が、実行時実行環境に適合可能なコンポーネントを生成するために、ユーザ作成コンポーネントを増補する。具体的に言えば、プログラム変換器は、以下の拡張機能を供給する。1)入力および出力メッセージまたは方法呼び出しのすべてのインターフェースが、VTを保持するフィールドで増補される。2)入力ポートに着信するメッセージを処理する各方法が、生成する各出力メッセージに関して、およびその方法からの戻りに関して、「デルタVT」を算出するエスティメータで増補される。デルタVTは、方法の開始から生成された出力メッセージまで、または戻りまで、経過することになる、実時間量の決定的推定を表す。さらに3)各コンポーネントは、最後のソフト・チェックポイント以降のその状態に対する増分変化を追跡し、スケジューラからの要求時に、増分ソフト・チェックポイント記録を直列化する、コードで増補される。
前述のように、JVM内では、コンポーネント間の通信は参照を渡すことによって効率的に実施される。さらにJVM内通信は、損失が無く、順序が保持される。JVM間では、たとえメッセージ損失または再順序付けが発生する可能性があっても、スケジューラ間では送信されるがスケジューラ内では送信されない、沈黙および好奇メッセージの概念を実装する、本発明のミドルウェア・コンポーネントによって、こうした損失または再順序付けが許容されるため、UDP通信を使用することができる。
1.スケジューラは、速度をダウンまたはアップし、相違を少なくするように、マシンの他のスケジューラに対してその優先順位を変更することが可能である。
2.スケジューラは、スケジューラ内で使用されるエスティメータに対してパラメータを調節するために、非決定性決定、いわゆる「決定性障害」を実行することが可能である。この調節は、通常の計算遅延の推定とは異なり、非決定性要素を考慮に入れるために、非決定性とすることができる。こうした決定によって決定性が侵害されることから、適切な再生を保証するために、この処置は安定ストレージ内にログ記録しなければならない。実際のところ、決定以前には、いかなるVTの再生も古いエスティメータを使用しなければならず、決定後には、いかなるVTの再生も新しいエスティメータを使用しなければならない。決定性障害は、結果として、特定のメッセージに関する特定の時間推定値の変更を生じさせる可能性がある。このシステムの目標は、VTと実時間との間のドリフトが最小限となり、スケジューリング優先順位の調整によって制御可能であるように、さらに結果として、決定性障害が極端に稀なイベントであるように、静的エスティメータを十分良好にすることである。
非時間認識コンポーネントの場合、本発明のミドルウェアのVTエスティメータを使用してタイムスタンプの導入が自動化される。しかしながら、一部のアプリケーションは時間認識とする必要がある可能性があり、またはより複雑なシナリオの場合、ある種のアプリケーションが非時間認識コンポーネントおよび時間認識コンポーネントの混合を含む可能性がある。タイミング制御の必要性を満たすために、本発明のミドルウェア・コンポーネントでは、特別な時間制御コードに自動的にコンパイルされるタイミング制約を、設計者によって指定することができる。実行時、このコードは、コンポーネントの優先順位付けまたはコンポーネントの移動によって、スケジューラが時間制約を満たすように実行することができる。すなわち、実時間スケジューラは、実時間デッドラインを保証するために配置サービスと共に動作するようにプログラミングすることができる。配置サービスは、デッドラインを満たすだけの十分な予約容量があることを確認するために、こうしたスケジューラを展開する前に、何らかの入場制御を実行する必要がある確率が高い。加えて、新しい種類の決定性障害が発生する可能性もあり、異常な条件によって所与の計算が実時間デッドラインを満たさないことが明らかになった場合、(おそらくはオーバヘッドの少ない)代替計算を使用するという非決定性決定を実行することができる。いずれの決定性障害とも同様に、こうした変更を行うという決定は、ログ記録しておく必要がある。
分散型システムでは、予期せずにマシンがシャットダウンされ、ネットワークから切断されるか、または障害を起こす可能性がある。多くの現在のアプリケーションは、マシン間の協働を利用する。複数のマシンを使用することによって、高可用性が実行可能になる。この特性により、いくつかのマシンの障害がアプリケーション全体の機能を妨害することはない。本発明の実行サーバでは、耐障害性はトランスペアレントである。ミドルウェア・コンポーネントは、個々のスケジューラに対して断続的にソフト・チェックポイントを作成する。ソフト・チェックポイントとは、内部にコンポーネント、確立された接続、キューに入れられたメッセージ、待機中のサービス呼び出しなどを含む、スケジューラの状態のコンパクト・イメージである。ソフト・チェックポイントは、全状態を含むか、または前のソフト・チェックポイント以降の増分変化を含むことができる。ユーザ定義コンポーネントの状態(たとえば、相互参照のJava基本値およびオブジェクトなどの言語水準エンティティを含む)もチェックポイントに記録されるため、マシンに障害が発生し、回復した場合、計算を再開することができる。
Claims (22)
- タスクを実行するための論理をそれぞれが実装する複数のコンポーネントであって、前記コンポーネントが、ネットワーク内で接続され、前記コンポーネント間でメッセージを通信するように適合された、1つまたは複数のマシンを備える実行環境内で実行する、複数のソフトウェア・コンポーネントと、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージであって受信側コンポーネントにおいて非決定性着信順序をもつものとして特徴付けられるメッセージに関して、決定性タイムスタンプを自動的に生成して関連付けるための手段であって、前記タイムスタンプが受信側コンポーネントでの前記メッセージの着信の推定時刻を表す、自動的に生成して関連付けるための手段と、
入力メッセージの固有の着信順序を生成するために前記タイムスタンプを使用することによって、前記コンポーネントを決定的に実行するための手段と、
プログラム実行中にコンポーネント状態を追跡し、前記状態をローカル・ストレージ・デバイスにチェックポインティングするための手段と、
を備え、
マシンの障害時には、最近格納されたチェックポイントを回復すること、前記最後のチェックポイント以降に発生したイベントを再実行することによって、前記コンポーネント状態が復元される、
コンピューティング・システム。 - 前記コンポーネント状態がバックアップ・プロセッサ・デバイスにチェックポインティングされる、請求項1に記載のコンピューティング・システム。
- 前記実行環境が単一のJava仮想マシンを備え、前記コンポーネントのそれぞれが前記単一のJava仮想マシンに格納される、請求項1に記載のコンピューティング・システム。
- 前記実行環境が複数のJava仮想マシンを備え、前記コンポーネントが、前記複数のJava仮想マシン全体にわたって分散様式で実行する、請求項1に記載のコンピューティング・システム。
- 前記実行環境が、1つまたは複数のコンポーネントの実行を管理するためのスケジューラ・コンポーネントを含み、スケジューリングが、前記実行環境内のコンポーネントに関する実行スレッドを割り振ることを含む、請求項4に記載のコンピューティング・システム。
- コンポーネントが複数の先行コンポーネントから入力メッセージを受信し、前記システムが、前記入力メッセージのタイムスタンプに基づいて決定性マージを実行するためのマージャ手段をさらに備える、請求項4に記載のコンピューティング・システム。
- 前記コンポーネントの状態が断続的に更新される、請求項1に記載のコンピューティング・システム。
- 前記タイムスタンプが、メッセージが前記受信側コンポーネントに着信する実時間の推定として計算される、請求項1に記載のコンピューティング・システム。
- コンポーネントからの連続するメッセージ伝送間の時間のギャップを検出するための手段と、
前記実行環境における前記コンポーネントからのメッセージの正しい一時フローを保証するために、沈黙メッセージの伝送を実行可能にする手段と、
をさらに備える、請求項1に記載のコンピューティング・システム。 - マシン間のネットワーク接続における障害によって何らかのメッセージまたは沈黙メッセージが失われたものと、コンポーネント受信側が決定した場合、いずれかの以前のメッセージまたは沈黙メッセージの再送をトリガするために、送信側コンポーネントに好奇メッセージを逆に発行するための手段、
をさらに備える、請求項9に記載のコンピューティング・システム。 - コンポーネント間でのメッセージ通信を実行可能にするように適合された実行環境を提供するコンピューティング・システム内でコンポーネントを決定的に実行するための方法であって、各前記コンポーネントがタスクを実行するための論理を実装し、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージであって受信側コンポーネントにおいて非決定性着信順序をもつものとして特徴付けられるメッセージに関して、決定性タイムスタンプを自動的に生成して関連付けることであって、前記決定性タイムスタンプが受信側コンポーネントでの前記メッセージの着信の推定時刻を表す、自動的に生成して関連付けることと、
入力メッセージの固有の着信順序を生成するために前記タイムスタンプを使用することによって、前記コンポーネントを決定的に実行することと、
プログラム実行中に前記コンポーネントの状態を追跡し、前記状態をローカル・ストレージ・デバイスにチェックポインティングすることと、
を含み、
コンポーネントの障害時には、最近格納されたチェックポイントを回復すること、および前記最後のチェックポイント以降に発生したイベントを再実行することによって、前記コンポーネントの状態が復元される、
方法。 - 前記メッセージを、前記格納された状態で記録された前記タイムスタンプに関連付けられたメッセージと同じ順序で処理することによって、前記受信側コンポーネントの前記実行を反復することをさらに含む、請求項11に記載の方法。
- 受信されたメッセージに関連付けられた前記タイムスタンプに従って、前記実行環境内の前記コンポーネントの実行を管理することをさらに含み、前記管理することが、前記実行環境内のコンポーネントに実行スレッドを割り当てることを含む、請求項11に記載の方法。
- コンポーネントが複数の先行コンポーネントから入力メッセージを受信し、前記方法が、前記入力メッセージのタイムスタンプに基づいて決定性マージを実行することをさらに含む、請求項13に記載の方法。
- 前記コンポーネントのチェックポイントを断続的に更新することをさらに含む、請求項13に記載の方法。
- 前記タイムスタンプが、メッセージが前記受信側コンポーネントに着信する実時間の推定として計算される、請求項11に記載の方法。
- コンポーネントで、前記コンポーネントからの連続するメッセージ伝送間の時間のギャップを検出することと、
前記実行環境における前記コンポーネントからのメッセージの正しい一時フローを保証するために、沈黙メッセージの伝送を実行可能にすることと、
をさらに含む、請求項11に記載の方法。 - 何らかのメッセージまたは沈黙が失われたものと、コンポーネント受信側が決定した場合、いずれかの以前のメッセージまたは沈黙メッセージの再送をトリガするために、送信側コンポーネントに好奇メッセージを逆に発行することをさらに含む、請求項17に記載の方法。
- 実行環境においてコンポーネント間でのメッセージの通信を実行可能にするサブシステムであって、前記コンポーネントが、メッセージ入力が受信されるか、または前記コンポーネントから出力される、1つまたは複数のポートを備え、各前記コンポーネントがタスクを実行するための論理を実装する、サブシステムと、
コンポーネントが前記実行環境の特定の処理エンジンに割り当てられた低水準実装に、高水準設計をマッピングするための手段と、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージであって受信側コンポーネントにおいて非決定性着信順序をもつものとして特徴付けられるメッセージに関して、タイムスタンプに関連付けられたコンポーネントの入力または出力メッセージを自動的に増補するためであって、前記タイムスタンプが受信側コンポーネントでの前記メッセージの着信の推定時刻を表す、自動的に増補するため、および
その状態に対する増分変化を追跡するためのコードでコンポーネントを増補するための、
コード強化手段と、
を備え、
プログラム実行中にコンポーネント状態が追跡され、前記コンポーネント状態はローカル・ストレージ・デバイス内でチェックポインティングされ、
コンポーネントの障害時には、最近のチェックポイントを回復すること、および最後のチェックポイント以降に発生したイベントを再実行することによって、前記コンポーネント状態が復元される、
コンポーネント指向アプリケーションの決定的実行を実行可能にするためのシステム。 - 前記実行環境が分散型コンピューティング・システムである、請求項19に記載のシステム。
- コンポーネント間でのメッセージ通信を実行可能にするように適合された実行環境内でコンポーネントを決定的に実行するための方法ステップを実行するために、マシンによって実行可能な命令のプログラムを確実に記録する、マシンによる読み取り可能なプログラム・ストレージ・デバイスであって、各前記コンポーネントがタスクを実行するための論理を実装し、前記方法ステップが、
プログラム実行中に送信側コンポーネントから受信側コンポーネントへと送られるメッセージであって受信側コンポーネントにおいて非決定性着信順序をもつものとして特徴付けられるメッセージに関して、決定性タイムスタンプを自動的に生成して関連付けることであって、前記決定性タイムスタンプが受信側コンポーネントでの前記メッセージの着信の推定時刻を表す、自動的に生成して関連付けることと、
入力メッセージの固有の着信順序を生成するために前記タイムスタンプを使用することによって、前記コンポーネントを決定的に実行することと、
コンポーネントで、プログラム実行中に前記コンポーネントの状態を追跡し、前記状態をローカル・ストレージ・デバイスにチェックポインティングすることと、
を含み、
コンポーネントの障害時には、最近格納されたチェックポイントを回復すること、および前記最後のチェックポイント以降に発生したイベントを再実行することによって、前記コンポーネントの状態が復元される、
プログラム・ストレージ・デバイス。 - 前記メッセージを前記格納された状態で記録された前記タイムスタンプに関連付けられたメッセージと同じ順序で処理することにより、前記受信側コンポーネントの前記実行を反復することによって、決定性となる、請求項21に記載のマシンによる読み取り可能なプログラム・ストレージ・デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/740,556 | 2007-04-26 | ||
US11/740,556 US7937618B2 (en) | 2007-04-26 | 2007-04-26 | Distributed, fault-tolerant and highly available computing system |
PCT/US2008/004866 WO2008133818A1 (en) | 2007-04-26 | 2008-04-15 | Distributed, fault-tolerant and highly available computing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010525484A JP2010525484A (ja) | 2010-07-22 |
JP5373770B2 true JP5373770B2 (ja) | 2013-12-18 |
Family
ID=39888475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010506208A Expired - Fee Related JP5373770B2 (ja) | 2007-04-26 | 2008-04-15 | 分散型、耐障害性、および高可用性を達成するための決定性コンピューティング・システム、方法、およびプログラム・ストレージ・デバイス(分散型、耐障害性、および高可用性のコンピューティング・システム) |
Country Status (7)
Country | Link |
---|---|
US (1) | US7937618B2 (ja) |
EP (1) | EP2156307B1 (ja) |
JP (1) | JP5373770B2 (ja) |
KR (1) | KR101126979B1 (ja) |
CN (1) | CN101663660B (ja) |
AU (1) | AU2008244623B2 (ja) |
WO (1) | WO2008133818A1 (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174695A1 (en) | 2006-01-18 | 2007-07-26 | Srinidhi Varadarajan | Log-based rollback-recovery |
US8327327B2 (en) * | 2007-03-21 | 2012-12-04 | Carnegie Mellon University | Method for statically checking an object-oriented computer program module |
US8566829B1 (en) * | 2008-01-30 | 2013-10-22 | Emc Corporation | Cooperative multi-level scheduler for virtual engines |
US7979844B2 (en) * | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US8060780B2 (en) * | 2008-12-16 | 2011-11-15 | Sap Ag | Transient transaction execution with on-demand persistency |
JP2010224935A (ja) * | 2009-03-24 | 2010-10-07 | Olympus Corp | 分散処理システム |
US20110078666A1 (en) * | 2009-05-26 | 2011-03-31 | University Of California | System and Method for Reproducing Device Program Execution |
US8468388B2 (en) * | 2010-04-20 | 2013-06-18 | International Business Machines Corporation | Restoring programs after operating system failure |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8516032B2 (en) * | 2010-09-28 | 2013-08-20 | Microsoft Corporation | Performing computations in a distributed infrastructure |
US8724645B2 (en) | 2010-09-28 | 2014-05-13 | Microsoft Corporation | Performing computations in a distributed infrastructure |
US20120221884A1 (en) * | 2011-02-28 | 2012-08-30 | Carter Nicholas P | Error management across hardware and software layers |
US9202185B2 (en) | 2011-04-08 | 2015-12-01 | Ca, Inc. | Transaction model with structural and behavioral description of complex transactions |
US8782614B2 (en) * | 2011-04-08 | 2014-07-15 | Ca, Inc. | Visualization of JVM and cross-JVM call stacks |
US8745434B2 (en) | 2011-05-16 | 2014-06-03 | Microsoft Corporation | Platform for continuous mobile-cloud services |
US20130124174A1 (en) * | 2011-06-03 | 2013-05-16 | David R. Jefferson | Internal parallelism in a parallel discrete event simulation for space situational awareness |
EP2608061B1 (en) * | 2011-12-22 | 2021-07-28 | Amadeus | Method and system for update message tracking and checking |
US9122595B2 (en) | 2012-01-13 | 2015-09-01 | NetSuite Inc. | Fault tolerance for complex distributed computing operations |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9563452B2 (en) | 2013-06-28 | 2017-02-07 | Sap Se | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing |
US9569517B1 (en) | 2013-11-27 | 2017-02-14 | Google Inc. | Fault tolerant distributed key-value storage |
KR102418109B1 (ko) * | 2014-07-25 | 2022-07-06 | 아브 이니티오 테크놀로지 엘엘시 | 무작위로 발생하는 이벤트 지연들의 조절을 위한 가변 연대표들 |
WO2016153288A1 (ko) * | 2015-03-24 | 2016-09-29 | 건국대학교 산학협력단 | 가상 클러스터 관리 시스템 및 이를 제어하기 위한 방법 |
KR101947221B1 (ko) * | 2015-03-24 | 2019-02-12 | 건국대학교 산학협력단 | 가상 클러스터 구동 시간 스케줄링 방법 및 장치 |
US20160299786A1 (en) * | 2015-04-10 | 2016-10-13 | Microsoft Technology Licensing, Llc | Code examination by scheduler timeline manipulation |
US10592494B2 (en) | 2015-04-14 | 2020-03-17 | Microsoft Technology Licensing, Llc | Collection record for overlapping data stream collections |
US10102251B2 (en) | 2015-04-14 | 2018-10-16 | Microsoft Technology Licensing, Llc | Lockless open collection data structure |
US10133768B2 (en) | 2015-04-14 | 2018-11-20 | Microsoft Technology Licensing, Llc | Latest external dependee entity in transaction record |
US9959137B2 (en) | 2015-04-14 | 2018-05-01 | Microsoft Technology Licensing, Llc | Transaction redo using skip element for object |
US10031814B2 (en) * | 2015-04-14 | 2018-07-24 | Microsoft Technology Licensing, Llc | Collection record location as log tail beginning |
US9766929B2 (en) | 2015-04-14 | 2017-09-19 | Microsoft Technology Licensing, Llc | Processing of data stream collection record sequence |
WO2019070915A1 (en) * | 2017-10-03 | 2019-04-11 | Rubrik, Inc. | PARTIAL RESTORATION OF A DATABASE |
US10713124B2 (en) | 2017-11-21 | 2020-07-14 | Rubrik, Inc. | Database snapshot and backup management with recoverable chains |
US10860430B2 (en) * | 2018-07-06 | 2020-12-08 | EMC IP Holding Company LLC | System and method for resilient backup generation |
US10860431B2 (en) * | 2018-07-06 | 2020-12-08 | EMC IP Holding Company LLC | System and method for fault tolerant backup generation in a virtual environment |
US11335141B2 (en) | 2019-10-22 | 2022-05-17 | Argo AI, LLC | Checkpoint-based tracing for monitoring a robotic system |
US11216344B2 (en) | 2020-05-13 | 2022-01-04 | Rubrik, Inc. | Real time database backup status indication and restore |
US11461155B2 (en) * | 2020-05-31 | 2022-10-04 | Wipro Limited | Method and system for predicting an occurrence of a failure condition in a VDI environment |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4665520A (en) | 1985-02-01 | 1987-05-12 | International Business Machines Corporation | Optimistic recovery in a distributed processing system |
US5794005A (en) * | 1992-01-21 | 1998-08-11 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects |
GB2293900B (en) * | 1994-10-03 | 2000-01-19 | Univ Westminster | Data processing method and apparatus for parallel discrete event simulation |
CA2150967C (en) * | 1994-12-22 | 2001-04-03 | Jon C. R. Bennett | Method and a scheduler for controlling when a server provides service with rate control to an entity |
JP3154942B2 (ja) * | 1995-09-11 | 2001-04-09 | 株式会社東芝 | 分散チェックポイント生成方法および同方法が適用される計算機システム |
US5917822A (en) * | 1995-11-15 | 1999-06-29 | Xerox Corporation | Method for providing integrated packet services over a shared-media network |
JP3253883B2 (ja) * | 1997-01-31 | 2002-02-04 | 株式会社東芝 | プロセスリスタート方法及びプロセス監視装置 |
US6125368A (en) | 1997-02-28 | 2000-09-26 | Oracle Corporation | Fault-tolerant timestamp generation for multi-node parallel databases |
US6031987A (en) * | 1997-05-06 | 2000-02-29 | At&T | Optimistic distributed simulation based on transitive dependency tracking |
US6397352B1 (en) * | 1999-02-24 | 2002-05-28 | Oracle Corporation | Reliable message propagation in a distributed computer system |
KR100382851B1 (ko) * | 1999-03-31 | 2003-05-09 | 인터내셔널 비지네스 머신즈 코포레이션 | 분산형 데이터 처리 시스템에서 클라이언트 컴퓨터를관리하기 위한 방법 및 장치 |
US6553515B1 (en) * | 1999-09-10 | 2003-04-22 | Comdial Corporation | System, method and computer program product for diagnostic supervision of internet connections |
US6584581B1 (en) * | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
DE10085287T1 (de) * | 1999-12-08 | 2003-03-27 | Univ British Columbia | Zeitplaner für einen gewichteten fairen Warteschlagenbetrieb |
US7315948B1 (en) * | 1999-12-10 | 2008-01-01 | International Business Machines Corporation | Time stamping method employing a separate ticket and stub |
EP1280051A4 (en) * | 2000-05-04 | 2007-10-24 | Access Co Ltd | METHOD AND SYSTEM FOR PROCESSING INFORMATION |
US6708288B1 (en) * | 2000-10-31 | 2004-03-16 | Hewlett-Packard Development Company, L.P. | Compiler-based checkpointing for support of error recovery |
US7743126B2 (en) | 2001-06-28 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Migrating recovery modules in a distributed computing environment |
US7013348B1 (en) * | 2001-12-21 | 2006-03-14 | Nortel Networks Limited | Switch subtending in a synchronous transmission system |
AU2003232120A1 (en) * | 2002-05-13 | 2003-11-11 | Rensselaer Polytechnic Institute | Discrete event simulation system and method |
US7383550B2 (en) * | 2002-12-23 | 2008-06-03 | International Business Machines Corporation | Topology aware grid services scheduler architecture |
US7937551B2 (en) * | 2003-01-21 | 2011-05-03 | Dell Products L.P. | Storage systems having differentiated storage pools |
JP4170988B2 (ja) * | 2003-05-09 | 2008-10-22 | 富士通株式会社 | 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体 |
US7886180B2 (en) * | 2004-05-14 | 2011-02-08 | International Business Machines Corporation | Recovery in a distributed stateful publish-subscribe system |
US7873941B2 (en) * | 2004-06-14 | 2011-01-18 | Alcatel-Lucent Usa Inc. | Manager component that causes first software component to obtain information from second software component |
US7660366B2 (en) * | 2004-08-30 | 2010-02-09 | Harmonic Inc. | Message synchronization over a stochastic network |
US20060168338A1 (en) * | 2004-11-23 | 2006-07-27 | Bruegl Aaron R | Methods and systems for providing data across a network |
US7376867B1 (en) * | 2004-12-08 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Method of seeking consensus among computer processes |
US7903560B2 (en) * | 2004-12-30 | 2011-03-08 | Intel Corporation | Correlation technique for determining relative times of arrival/departure of core input/output packets within a multiple link-based computing system |
US7512842B2 (en) | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
WO2009040680A2 (en) * | 2007-06-15 | 2009-04-02 | Michele Bargauan | Deterministic program clock reference re-stamping for synchronous bit rate adaptation based on mega-frame initialization packet |
-
2007
- 2007-04-26 US US11/740,556 patent/US7937618B2/en not_active Expired - Fee Related
-
2008
- 2008-04-15 JP JP2010506208A patent/JP5373770B2/ja not_active Expired - Fee Related
- 2008-04-15 WO PCT/US2008/004866 patent/WO2008133818A1/en active Application Filing
- 2008-04-15 CN CN2008800129532A patent/CN101663660B/zh not_active Expired - Fee Related
- 2008-04-15 KR KR1020097016949A patent/KR101126979B1/ko not_active IP Right Cessation
- 2008-04-15 EP EP08742917.1A patent/EP2156307B1/en not_active Not-in-force
- 2008-04-15 AU AU2008244623A patent/AU2008244623B2/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
WO2008133818A1 (en) | 2008-11-06 |
EP2156307A4 (en) | 2010-10-13 |
US7937618B2 (en) | 2011-05-03 |
CN101663660B (zh) | 2012-08-01 |
US20080270838A1 (en) | 2008-10-30 |
CN101663660A (zh) | 2010-03-03 |
AU2008244623A1 (en) | 2008-11-06 |
EP2156307A1 (en) | 2010-02-24 |
KR20090118934A (ko) | 2009-11-18 |
KR101126979B1 (ko) | 2012-03-26 |
EP2156307B1 (en) | 2018-05-23 |
JP2010525484A (ja) | 2010-07-22 |
AU2008244623B2 (en) | 2013-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5373770B2 (ja) | 分散型、耐障害性、および高可用性を達成するための決定性コンピューティング・システム、方法、およびプログラム・ストレージ・デバイス(分散型、耐障害性、および高可用性のコンピューティング・システム) | |
US8893139B2 (en) | System and method for time-aware run-time to guarantee timeliness in component-oriented distributed systems | |
JP5258019B2 (ja) | アプリケーション・プロセス実行の範囲内での非決定論的オペレーションを管理、ロギング、またはリプレイするための予測方法 | |
US10289459B1 (en) | System and method for event-driven live migration of multi-process applications | |
US10282259B1 (en) | System and method for event-driven live migration of multi-process applications | |
US10365971B1 (en) | System and method for event-driven live migration of multi-process applications | |
US7779298B2 (en) | Distributed job manager recovery | |
US8904361B2 (en) | Non-intrusive method for logging of internal events within an application process, and system implementing this method | |
US7613597B2 (en) | Non-intrusive method for simulation or replay of external events related to an application process, and a system implementing said method | |
US8539434B2 (en) | Method for the management, logging or replay of the execution of an application process | |
US7568131B2 (en) | Non-intrusive method for logging external events related to an application process, and a system implementing said method | |
US7840940B2 (en) | Semantic management method for logging or replaying non-deterministic operations within the execution of an application process | |
US20080046696A1 (en) | Non-Intrusive Method for Replaying Internal Events In An Application Process, And System Implementing This Method | |
US7536587B2 (en) | Method for the acceleration of the transmission of logging data in a multi-computer environment and system using this method | |
US7533296B2 (en) | Method for optimizing the transmission of logging data in a multi-computer environment and a system implementing this method | |
Dumitraş et al. | Architecting and implementing versatile dependability | |
Egan et al. | Fault‐tolerant RT‐Mach (FT‐RT‐Mach) and an application to real‐time train control | |
Barrett et al. | Models of replication for safety critical hard real time systems | |
Dabholkar1a et al. | SafeMAT: Safe Middleware-based Adaptation for Predictable Fault-Tolerant Distributed Real-time and Embedded Systems | |
Ramani | Performance and Reliability Analysis of the CORBA Event and Notification Services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110124 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130122 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130730 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130805 |
|
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: 20130827 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130919 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5373770 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |