JP2015508537A - プライマリ/バックアップ複製スキームにおける同期化のための方法および装置 - Google Patents
プライマリ/バックアップ複製スキームにおける同期化のための方法および装置 Download PDFInfo
- Publication number
- JP2015508537A JP2015508537A JP2014550297A JP2014550297A JP2015508537A JP 2015508537 A JP2015508537 A JP 2015508537A JP 2014550297 A JP2014550297 A JP 2014550297A JP 2014550297 A JP2014550297 A JP 2014550297A JP 2015508537 A JP2015508537 A JP 2015508537A
- Authority
- JP
- Japan
- Prior art keywords
- epoch
- primary
- output
- backup
- current
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
-
- 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/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Retry When Errors Occur (AREA)
- Hardware Redundancy (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
プライマリ/バックアップ複製機能が開示される。プライマリプロセスおよびバックアッププロセスが、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスに関与する。この同期化プロセスは、エポックと呼ばれる期間において機能する。現在のエポック中に、プライマリプロセスは、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算する。現在のエポック中に、プライマリプロセスはまた、現在のエポック中に生成された出力メッセージを、現在のエポックにおいて使用するための専用とされている関連付けられている出力バッファ内にバッファリングする。プライマリプロセスは、前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する。現在のエポックに関してバッファリングされている出力メッセージは、現在のエポックに関する状態更新確認応答をプライマリプロセスが受信して、すべての前のエポックのすべての出力バッファが空になった後に、関連付けられている出力バッファからリリースされる。
Description
本件は一般に、プライマリ/バックアップ複製スキームにおける同期化を提供することに関する。
クラウドコンピューティングは、コンピューティングサービスが提供される方法を変えている。データセンターの機能をフルに利用するために、多くのサービスが、負荷に伴ってスケーリングするように、および障害に対する耐性を有するように設計されている。複数のサービス(たとえば、テレコミュニケーション、ゲーミング等などのインタラクティブなサービス)は、遅延およびジッタなどのネットワークパフォーマンスパラメータに関して相対的に厳しい制限を有している。これらの基準、すなわち、弾力性、フォルトトレランス、およびネットワークパフォーマンスは、多くのさまざまな点で相いれないことがある。プロセスにフォルトトレランスを加えるさまざまなフォルトトレランスメカニズムがあるが、そのようなフォルトトレランスは典型的には、ネットワークオーバーヘッドを招くという犠牲を払って加えられる。そのような1つのフォルトトレランスメカニズムが、プライマリ/バックアップ複製であり、このプライマリ/バックアップ複製においては、プライマリプロセスの障害の後にバックアッププロセスがプライマリプロセスの役割を引き継ぐことができるように、プライマリプロセスの状態がバックアッププロセスの状態と同期化される。しかしながら、不利なことに、メモリおよびディスクの両方のリカバリを可能にするものを含む、多くの既存のプライマリ/バックアップ複製スキームにおいては、プライマリプロセスとバックアッププロセスとの間における定期的な同期化が、少なくとも、プライマリプロセスとバックアッププロセスとの間における往復遅延に等しい遅延を加える。これは、遅延の影響を受けやすいサービスのネットワークパフォーマンスを著しく低下させる。
従来技術におけるさまざまな欠点は、プライマリ/バックアップ複製を提供するための実施形態によって対処される。
少なくともいくつかの実施形態においては、プライマリプロセスおよびバックアッププロセスが、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスに関与する。この同期化プロセスは、エポックと呼ばれる期間において機能する。それぞれのエポックごとに、エポック中に生成された出力メッセージをバッファリングする際に使用するために、関連付けられている出力バッファが割り当てられる。現在のエポック中に、プライマリプロセスは、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算する。現在のエポック中に、プライマリプロセスはまた、現在のエポック中に生成された出力メッセージを、現在のエポックにおいて使用するための専用とされている関連付けられている出力バッファ内にバッファリングする。プライマリプロセスは、前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する。現在のエポックに関してバッファリングされている出力メッセージは、現在のエポックに関する状態更新確認応答をプライマリプロセスが受信して、すべての前のエポックのすべての出力バッファが空になった後に、関連付けられている出力バッファからリリースされる。
一実施形態においては、ある装置が、プライマリプロセスとバックアッププロセスとの間において状態を同期化するように構成されている。この装置は、プロセッサと、少なくとも1つのメモリとを含む。少なくとも1つのメモリは、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている。プロセッサは、現在のエポック中に、現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするように構成されている。プロセッサはまた、前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するように構成されている。
一実施形態においては、プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法が提供される。この方法は、プロセッサおよび少なくとも1つのメモリを使用する。プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポック中に、現在のエポックに関して状態更新情報が計算され、その状態更新情報は、前のエポック以降のプライマリプロセスの状態情報に対する変化を表し、現在のエポック中に生成された出力メッセージが、現在のエポックに関連付けられている出力バッファ内にバッファリングされる。前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックが開始される。
一実施形態においては、コンピュータ可読記録媒体が、コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法をコンピュータに実行させる命令を格納している。プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポック中に、現在のエポックに関して状態更新情報が計算され、その状態更新情報は、前のエポック以降のプライマリプロセスの状態情報に対する変化を表し、現在のエポック中に生成された出力メッセージが、現在のエポックに関連付けられている出力バッファ内にバッファリングされる。前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックが開始される。
本明細書における教示は、添付の図面と併せて以降の詳細な説明を考察することによって容易に理解されることが可能である。
理解を容易にする目的で、図どうしに共通している同じ要素を指すために、可能な場合には、同じ参照番号が使用されている。
一般に、プライマリ/バックアップ複製機能が本明細書において示され説明されているが、さまざまなその他の機能が本明細書において提示されることもあるだろう。
主として、チェックポイントベースのプライマリ/バックアップ複製(本明細書においては、アシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームとして示されている)を提供するためのプライマリ/バックアップ複製機能の実施形態の使用に関して示され説明されているが、プライマリ/バックアップ複製機能のさまざまな実施形態は、イベントベースのプライマリ/バックアップ複製(たとえば、入力、割り込み等などの非決定性のイベントに基づくプライマリ/バックアップ複製)のためのプライマリ/バックアップ複製を提供するために使用されることも可能であるということに留意されたい。
図1は、アシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームをサポートするように構成されているシステムのハイレベルブロック図を示している。
図1において示されているように、システム100は、プライマリプロセス110Pおよびバックアッププロセス110B(総称して、プロセス110)、ならびに関連付けられている環境120を含む。図1においてさらに示されているように、プライマリプロセスには、出力バッファモジュール112が関連付けられている。
プライマリプロセス110Pは、環境120と対話するように構成されている。プライマリプロセス110Pは、環境120から入力メッセージを受信して、それらの受信された入力メッセージを処理するように構成されている。プライマリプロセス110Pは、(たとえば、プライマリプロセス110Pによって受信される入力メッセージとは無関係なローカル処理に基づいて、および/またはプライマリプロセス110Pによって受信される入力メッセージの処理に基づいて)出力メッセージを生成して、それらの出力メッセージを環境120に提供するように構成されている。プライマリプロセス110Pは、出力バッファモジュール112を使用して、それらの生成された出力メッセージをバッファリングするように構成されている。出力バッファモジュール112(およびその関連付けられている出力バッファb1−bn)は、任意の適切な様式で(たとえば、それぞれのバッファごとに別々のキューを使用して、それぞれの出力バッファを区別するためのキューマーカを含む単一のキューを使用して、といった具合に)実装されることが可能である。プライマリプロセス110Pは、受信入力メッセージをバッファリングするために1つまたは複数の入力バッファ(明確にする目的で省略されている)を使用するように構成されることも可能である。プライマリプロセス110Pと環境120との間における通信は、双方向である(これは、出力バッファモジュール112をよりよく示すためにプライマリプロセス110Pへの入力とプライマリプロセス110Pからの出力とに関する2つの異なる通信パスを使用して表されているが、任意の適切な様式で提供されることが可能である)ということに留意されたい。
バックアッププロセス110Bは、プライマリプロセス110Pをバックアップするように構成されている。バックアッププロセス110Bは、プライマリプロセス110Pが機能しなくなったときにアクティブプロセスとして機能するように構成されている。バックアッププロセス110Bは、アクティブなときには、上述のように、プライマリプロセス110Pの様式と同様の様式で機能するように構成されている。バックアッププロセス110Bがアクティブであるときには、バックアッププロセス110Bと環境120との間における通信は、双方向である(これは、バックアッププロセス110Bへの入力とバックアッププロセス110Bからの出力との両方に関する1つの通信パスを使用して表されているが、任意の適切な様式で提供されることが可能である)ということに留意されたい。
プライマリプロセス110Pが機能しなくなったときにバックアッププロセス110Bがアクティブプロセスの役割を担うためには、プライマリプロセス110Pとバックアッププロセス110Bとが同期化されることが必要である。したがって、プライマリプロセス110Pの状態とマッチするようにバックアッププロセス110Bの状態を定期的に同期化するために、チェックポイントベースの同期化が実行される。プライマリプロセス110Pとバックアッププロセス110Bとの間における状態の同期化は、ディスク状態およびメモリ状態の同期化を含む。プライマリプロセス110Pとバックアッププロセス110Bとの間におけるディスク状態およびメモリ状態の両方の整合性を確保するためには、状態情報がそれに基づくネットワーク出力がプライマリプロセス110Pによって環境120へリリースされることが可能になる前に、プライマリプロセス110Pとバックアッププロセス110Bとが同期化されることが必要であるということに留意されたい。一実施形態においては、アシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームを使用して同期化が実行され、そのアシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームは、本明細書においては図2−図4に関連して示され、説明されている。
プロセス110は、アプリケーション、クラウドコンピューティング環境における仮想マシン(VM)等など、プライマリ/バックアップ複製が使用されることが可能である任意の適切なタイプのプロセスを含むことができる。状態情報と、関連付けられている状態情報確認応答とをやり取りする目的でのプロセス110どうしの間における通信は、任意の適切な様式で提供されることが可能であるということに留意されたい。たとえば、プロセス110どうしの間における通信は、1つのデバイス内の内部通信を介することが可能であり、その場合には、両方のプロセス110は、単一の物理デバイス内で(例示としては、プライマリプロセス110Pとバックアッププロセス110Bとの間における破線を使用して)実施される。たとえば、プロセス110どうしの間における通信は、通信ネットワークを介することが可能であり、その場合には、プロセス110どうしは、別々の物理デバイス上で(例示としては、環境120および/またはその他の任意の適切な環境もしくはネットワークを介して)稼働している。明確にする目的で省略されているが、プロセス110どうしは、さまざまなプロセッサおよびメモリ(ならびに任意選択で、さまざまなその他のハードウェアおよびソフトウェア)が関連付けられている1つまたは複数の物理マシン上で稼働していることが可能であるということがわかるであろう。
環境120は、通信ネットワークまたはその他のタイプの環境など、任意の適切なタイプの環境を含むことができる。明確にする目的で省略されているが、環境120は、プライマリプロセス110P(および、アクティブなときには、バックアッププロセス110B)がさまざまなタイプのメッセージをやり取りすることができる相手であるさまざまなノードを含むことができるということがわかるであろう。たとえば、プライマリプロセス110P(および、アクティブなときには、バックアッププロセス110B)は、環境120からさまざまなタイプの入力メッセージを受信して処理することができ、同様に、プライマリプロセス110P(および、アクティブなときには、バックアッププロセス110B)は、さまざまなタイプの出力メッセージを生成して環境120へ伝搬することができる。
図2は、図1のシステム内のアシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームの例示的なオペレーション図を示している。
図2の例示的なオペレーション図200において示されているように、プライマリプロセス110P(Pと示されている)およびバックアッププロセス110B(Bと示されている)は、プライマリプロセス110Pとバックアッププロセス110Bとの間において状態を同期化するために対話する。
プライマリプロセス110Pは、エポックと示されている期間内で機能する(例示としては、i番目のエポックを示すために、eiが使用される)。
現在のエポックeiは、前のエポックei−1(本明細書においては、先行エポックと呼ばれることも可能である)の終了後の任意の時点で開始され、同様に、新たなエポックei+1(本明細書においては、次なるエポックと呼ばれることも可能である)は、現在のエポックeiの終了後の任意の時点で開始される。
現在のエポックei内で、プライマリプロセス110Pは、オペレーション(すなわち、プライマリプロセス110Pのオペレーション)を実行し、これは、その状態情報に対する変化をもたらす場合がある。プライマリプロセス110Pは、バックアッププロセス110Bのために状態更新情報を決定する(例示としては、現在のエポックei中にバックアッププロセス110Bのためにプライマリプロセス110Pによって計算された現在の状態更新情報を示すために、miが使用される)。現在のエポックei中にプライマリプロセス110Pによって決定された現在の状態更新情報miは、前のエポックei−1中にプライマリプロセス110Pによって前の状態更新情報mi−1が決定されて以降のプライマリプロセス110Pの状態に対する変化(ひいては、プライマリプロセス110Pの状態と、バックアッププロセス110Bの状態との間における相違)を表す。プライマリプロセス110Pは、現在のエポックei中に自分のオペレーションを実行するのと同時に、または現在のエポックei中に自分のオペレーションを完了した後に、現在の状態更新情報miを計算することができる。
現在のエポックei内で、プライマリプロセス110Pは、プライマリプロセス110Pが機能する環境に提供されることを意図されている出力メッセージを生成することもできる。プライマリプロセス110Pは、それらの出力メッセージを任意の適切な様式で生成することができる。たとえば、プライマリプロセス110Pは、プライマリプロセス110Pにおいて受信されるいかなる入力メッセージとも無関係に実行されるプライマリプロセス110Pにおけるローカル処理に基づいて出力メッセージを生成することができる。たとえば、プライマリプロセス110Pは、入力メッセージを受信し、それらの入力メッセージを処理し、関連付けられている出力メッセージを作成することができる。入力メッセージの処理および出力メッセージの生成は、プライマリプロセス110Pによって実行されるオペレーションの一部であるとみなされることが可能であるということに留意されたい。現在のエポックei中に生成された出力メッセージは、現在のエポックeiの専用とされている関連付けられている出力バッファ内に格納される(例示としては、i番目のエポックに関するi番目の出力バッファを示すために、biが使用される)。
プライマリプロセスは、現在のエポックeiの終了後の任意の時点で新たなエポックei+1を開始する。次いでプライマリプロセス110Pは、新たなエポックei+1(プライマリプロセス110Pにとっては、これが現在のエポックになっている)の間に自分の機能を実行することを開始することができる。すなわち、プライマリプロセス110Pは、自分のオペレーションを実行すること、新たなエポックei+1に関する新たな状態更新情報mi+1を計算すること、新たなエポックei+1中に出力メッセージを生成してバッファリングすることなどが可能である。プライマリプロセス110Pは、(1)任意の前のエポックに関する関連付けられている状態更新情報をバックアッププロセス110Bが受信して適用したことを示すバックアッププロセス110Bからのあらゆる状態更新確認応答を受信すること、(2)現在のエポックeiに関する状態更新情報をバックアッププロセス110Bへ送信すること、および(3)現在のエポックeiに関する状態更新情報をバックアッププロセス110Bが受信して適用したことを示すバックアッププロセス110Bからの状態更新確認応答を受信することとは無関係に、新たなエポックei+1を開始するということに留意されたい。任意の現在のまたは過去の状態更新確認応答を受信することとは無関係に新たなエポックei+1を開始して以降、プライマリプロセスは、任意の所与の時点で保留中でありうるエポックの数に関するいかなる制約も伴わずに、新たなエポックを開始して、それらの新たなエポックに関する状態更新情報を引き続き送信することができるということにさらに留意されたい。プライマリプロセス110Pは、連続したエポックにわたって、この様式で継続する。
プライマリプロセス110Pは、現在のエポックei中に決定された現在の状態更新情報をバックアッププロセス110Bへ送信する(例示としては、プライマリプロセス110Pからバックアッププロセス110Bへ送信される現在の状態更新情報を示すために、miが使用される)。プライマリプロセス110Pは、次なるエポックei+1の初期化とは無関係に、現在のエポックeiに関する現在の状態更新情報miをバックアッププロセス110Bへ送信することができる。一実施形態においては、たとえば、プライマリプロセス110Pは、現在のエポックei中に現在のエポックeiに関する現在の状態更新情報miをバックアッププロセス110Bへ送信することができる(たとえば、その場合には、現在の状態更新情報miは、現在のエポックei中にプライマリプロセス110Pによってバックアッププロセス110Bへと押し出されるが、必ずしも現在のエポックei中にバックアッププロセス110Pによって受信されるとは限らない)。一実施形態においては、たとえば、プライマリプロセス110Pは、次なるエポックei+1中に現在のエポックeiに関する現在の状態更新情報miをバックアッププロセス110Bへ送信することができる(たとえば、その場合には、現在の状態更新情報miは、現在のエポックeiが終了した後に、プライマリプロセス110Pによってバックアッププロセス110Bへと押し出される)。このような実施形態の組合せがサポートされることも可能である(たとえば、その場合には、現在のエポックeiの終了、および次なるエポックei+1の開始の両方の最中に、現在の状態更新情報miをプライマリプロセス110Pによってバックアッププロセス110Bへと押し出すことが行われる)ということに留意されたい。状態更新情報は、任意の適切な様式で(たとえば、任意の適切な通信メディアを介して送信される1つまたは複数のメッセージを使用して)プライマリプロセス110Pからバックアッププロセス110Bへ送信されることが可能である。
バックアッププロセス110Bは、プライマリプロセス110Pのエポックとは無関係に、エポックeiに関するプライマリプロセス110Pによって送信された状態更新情報miを受信し、プライマリプロセス110Pから受信された状態更新情報miに基づいて自分の状態情報を更新し、関連付けられている状態更新確認応答をプライマリプロセス110Pへ送信する(例示としては、エポックeiの状態更新情報miに対応してバックアッププロセス110Bからプライマリプロセス110Pへ送信される状態更新確認応答を示すために、aiが使用される)。状態更新確認応答は、任意の適切な様式で(たとえば、任意の適切な通信メディアを介して送信される任意の適切なタイプのメッセージを使用して)バックアッププロセス110Bからプライマリプロセス110Pへ送信されることが可能である。プライマリプロセス110Pは、(1)エポックeiに関するバックアッププロセス110Bからの状態更新確認応答aiを受信した後に、および(2)エポックeiよりも前のすべてのエポックに関するすべての出力メッセージが、それらの関連付けられている出力バッファから環境120へリリースされた後に、エポックeiの出力バッファbiから出力メッセージをリリースする。
出力メッセージがエポックeiの出力バッファbiから環境120へリリースされた時点で、プライマリプロセス110Pは、もはやエポックei内で機能していないが、出力メッセージがエポックeiの出力バッファbiから環境120へリリースされるまで、エポックeiは、プライマリプロセス110Pにおいては依然として保留中であるとみなされるということに留意されたい。したがって、上述のように、プライマリプロセス110Pは、エポックeiの出力メッセージがエポックeiの出力バッファbiから環境120へリリースされることが可能である状況をモニタするように(たとえば、エポックeiに関するバックアッププロセス110Bからの状態更新確認応答aiが受信されていないかモニタするように、およびエポックeiよりも前のすべてのエポックに関するすべての出力メッセージが、それらの関連付けられている出力バッファから環境120へいつリリースされたかを検知するために前のエポックの出力バッファの現在のステータスをモニタするように構成されている。
バッファbiは、エポックei中に生成された出力メッセージを格納するために、それぞれのエポックeiごとにインスタンス化されており、同様に、エポックeiのバッファbiは、出力メッセージがバッファbiからリリースされた後に終了される。したがって、それぞれのバッファは、特定の長さの時間にわたって(すなわち、その関連付けられているエポックの開始から、その関連付けられているエポックの出力バッファから出力メッセージがリリースされるまで)存在し、任意の所与の時点で特定の数のバッファのみが存在することになる。
上述のように、それぞれのバッファは、特定の長さの時間にわたって存在し、ひいては、保留中のバッファの数に関する限界は、次のように計算されることが可能である。第1に、eiが現在のエポックであるときに、またはプライマリプロセス110Pが、まだバックアッププロセス110Bからの状態更新確認応答aiを待っているときに、エポックeiが保留中であるとみなされる場合には、1つのバッファbは、保留中のエポックeごとに存在しなければならないということに留意されたい。第2に、エポックeiの終了と、プライマリプロセス110Pが、関連付けられている状態更新確認応答aiをバックアッププロセス110Bから受信する時点との間における時間をTと表す(これは、大まかには、プライマリプロセス110Pとバックアッププロセス110Bとの間における往復時間と考えられることが可能である)。第3に、|エポック|で、エポックの長さ(時間)を表す。kが(k−1)|エポック|≧Tを満たす場合には、最大でk個の保留中のエポックが存在することになり、したがって、k個のバッファで十分であろう。したがって、アシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームは、APCnという表記を使用して表されることが可能であり、この場合、nは、確認応答されていないチェックポイントの数を表す(n=k−1)。
アシンクロナスパイプラインドチェックポインティングプライマリ/バックアップ複製スキームのオペレーションは、図2の例示的なオペレーション図200のさらに具体的な考察を介して、よりよく理解されることが可能である。
図2のエポックe1の説明が、以降に続く。エポックe1において生成された出力メッセージは、エポックe1に関連付けられているバッファb1内にバッファリングされる。エポックe1の完了時に、プライマリプロセス110Pは、状態更新情報m1をバックアッププロセス110Bへ送信する(この状態更新情報m1は、伝搬遅延に起因して、第3のエポックe3の終了付近までバックアッププロセス110Bにおいては受信されない)。バックアッププロセス110Bは、その状態更新情報を処理し、これは、第3のエポックe3の終了付近から、第4のエポックe4の開始付近までに行われる。バックアッププロセス110Bは、状態更新確認応答a1をプライマリプロセス110Pへ送信する(この状態更新確認応答a1は、伝搬遅延に起因して、第6のエポックe6の開始付近までプライマリプロセス110Pにおいては受信されない)。次いで、エポックe1中にバッファb1内にバッファリングされた出力メッセージは、第6のエポックe6中に状態更新確認応答a1が受信されたときに(前のエポックのバッファが空にされていると想定して)環境120へリリースされる。この時点で、第1のエポックe1は、プライマリプロセス110Pに関して、もはや保留中ではなくなる。
図2のエポックe2の説明が、以降に続く。エポックe2において生成された出力メッセージは、エポックe2に関連付けられているバッファb2内にバッファリングされる。エポックe2の完了時に、プライマリプロセス110Pは、状態更新情報m2をバックアッププロセス110Bへ送信する(この状態更新情報m2は、伝搬遅延に起因して、第4のエポックe4の終了付近までバックアッププロセス110Bにおいては受信されない)。バックアッププロセス110Bは、その状態更新情報を処理し、これは、第4のエポックe4の終了付近から、第5のエポックe5の開始付近までに行われる。バックアッププロセス110Bは、状態更新確認応答a2をプライマリプロセス110Pへ送信する(この状態更新確認応答a2は、伝搬遅延に起因して、第7のエポックe7の開始付近までプライマリプロセス110Pにおいては受信されない)。次いで、エポックe2中にバッファb2内にバッファリングされた出力メッセージは、第7のエポックe7中に状態更新確認応答a2が受信されたときに(前のエポックのバッファが空にされていると想定して)環境120へリリースされる。この時点で、第2のエポックe2は、プライマリプロセス110Pに関して、もはや保留中ではなくなる。第2のエポックe2からは、次なるエポック(第3のエポックe3)の開始は、任意の前のエポック(すなわち、エポックe0、e1、およびe2)に関する関連付けられている状態更新情報をバックアッププロセス110Bが受信して適用したことを示すバックアッププロセス110Bからのあらゆる状態更新確認応答を受信することとは無関係であると見られることが可能である。なぜなら、エポックe1の状態更新確認応答a1およびエポックe2の更新確認応答a2がプライマリプロセス110Pによって受信される前に、第3のエポックe3が開始されるためである。
図3は、図2に関して示され説明されているようなエポックを使用するプライマリ/バックアップ複製を提供するための方法の一実施形態を示している。
ステップ310において、方法300が開始する。
ステップ320において、エポックeiが初期化される。エポックeiは、エポックeiのために割り当てられている関連付けられているバッファbiを有している。
ステップ330において、プライマリプロセスが、エポックei中に機能を実行する。プライマリプロセスは、オペレーション(そのうちの少なくともいくつかは、プライマリプロセスの状態情報に対する変化をもたらす場合がある)を実行し、エポックeiに関する状態更新情報を計算し、生成された出力メッセージを、エポックeiに関連付けられているバッファbi内にバッファリングする。これらの機能は、エポックei内の任意の適切な時点で実行されることが可能である(たとえば、状態更新情報は、オペレーションが実行されるのと同時に、および/またはその後で計算されることが可能であり、出力メッセージは、エポックeiの全体を通じて任意の時点で生成されバッファリングされることが可能であるなど、ならびにそれらのさまざまな組合せが可能である)ということに留意されたい。
ステップ340において、方法300は、エポックeiが完了しているかどうかを決定する。エポックeiは、エポックeiに関する状態更新情報が決定された後の任意の時点で完了しているとみなされることが可能である。エポックeiが完了していない場合には、方法300は、ステップ330へ戻る(すなわち、プライマリプロセスは、機能(たとえば、エポックeiに関する状態更新情報を決定すること、生成された出力メッセージを、エポックeiに関連付けられているバッファbi内にバッファリングすることなど)のうちのいくつかまたはすべてを引き続き実行する)。エポックeiが完了している場合には、方法300は、(1)ステップ320へ戻って次なるエポック(i=i+1)を開始し、(2)ステップ350へ進む。次なるエポックei+1が開始されるが、エポックei中に生成された出力メッセージが環境へリリースされることが可能になるまでそれらの出力メッセージをバッファリングする目的でエポックeiは保留中のままであるということに留意されたい。
ステップ350において、プライマリプロセスは、エポックeiに関連付けられている情報の管理を開始する。これは、状態更新情報をバックアッププロセスへ送信すること、およびエポックeiに関連付けられているバッファbi内にバッファリングされている出力メッセージのリリースをコントロールするためのアクションを実行することを含むことができる。エポックeiに関連付けられている情報を管理するための例示的なプロセスは、本明細書においては図4に関連して示され、説明されている。
図3においては、方法300は、ステップ340から、方法300が(次なるエポックei+1の初期化のために)ステップ320へ戻り、また(エポックeiに関連付けられている情報の管理のために)ステップ350へ進むように構成されている。これは、ステップ320−340のそれぞれの実行ごとにステップ350の別々の実行が存在することになるということを示している。したがって、任意の所与の時点で、エポックeiに関するステップ320−340の現在の実行と、エポックeiに関するステップ320−340の実行の時点でまだ保留中である1つまたは複数の前のエポックに関するステップ350の1つまたは複数の同時の実行とが存在することになる。
図4は、図2に関して示され説明されているようなエポックに関連付けられている情報を管理することによってプライマリ/バックアップ複製を提供するための方法の一実施形態を示している。
上述のように、図4の方法400は、図3の方法300によって初期化されたそれぞれのエポックeiごとに図3の方法300のステップ350として使用するのに適している。
ステップ410において、方法400が開始する。この時点で、エポックeiに関する状態更新情報が、プライマリプロセスによって(たとえば、図3の方法300のステップ320−340を使用して)計算されていると想定される。
ステップ420において、プライマリプロセスは、エポックeiに関する状態更新情報をバックアッププロセスへ送信する。
ステップ430において、プライマリプロセスは、エポックeiに関する状態更新確認応答がバックアッププロセスから受信されていないかモニタする。
ステップ440において、プライマリプロセスは、エポックeiの状態更新確認応答が受信されているかどうかを決定する。エポックeiの状態更新確認応答が受信されていない場合には、方法400は、ステップ430へ戻る(すなわち、プライマリプロセスは、エポックeiに関する状態更新確認応答が受信されていないか引き続きモニタする)。エポックeiの状態更新確認応答が受信されている場合には、方法400は、ステップ450へ進む。
ステップ450において、プライマリプロセスは、すべての前のエポックのすべての出力メッセージが環境へリリースされているかどうかを決定する。すべての前のエポックのすべての出力メッセージが環境へリリースされているわけではない場合には、方法400は、ステップ450に留まる(すなわち、プライマリプロセスは、エポックeiのバッファbiの出力メッセージに関して処理を進める前に、すべての前のエポックのすべての出力メッセージが環境へリリースされるまで待つ)。すべての前のエポックのすべての出力メッセージが環境へリリースされている場合には、方法400は、ステップ460へ進む。
ステップ460において、プライマリプロセスは、エポックeiのバッファbiの出力メッセージを環境へリリースする。
ステップ470において、方法400は終了する。図3に関連して述べたように、図4の方法400は、図3の方法300によって初期化されたそれぞれのエポックごとに繰り返される。したがって、任意の所与の時点で、方法400の複数の実行が、互いと、ならびに図3の方法300の実行と同時にアクティブになることが予想される。
上述したように、図3の方法300および図4の方法400は、エポックeiが完了して新たなエポックei+1が開始された後にエポックeiに関する状態更新情報がプライマリプロセスからバックアッププロセスへ送信される一実施形態に関連して示され説明されているが、エポックeiに関する状態更新情報は、その他の任意の適切な時点で(たとえば、(示されていないが)ステップ330の一部としてエポックei内で、(図4において示されているように)ステップ350の一部としてエポックeiの後に、またはそれらの組合せで)プライマリプロセスからバックアッププロセスへ送信されることが可能であるということに留意されたい。
本明細書においては、主として、プライマリ要素およびバックアップ要素がプロセスであるプライマリ/バックアップ複製スキームにおける同期化を提供することに関連して示され説明されているが、本明細書において示され説明されているさまざまな実施形態は、その他のタイプのプライマリ要素およびバックアップ要素に関するプライマリ/バックアップ複製スキームにおける同期化を提供するために(たとえば、プライマリデバイスとバックアップデバイスとの(たとえば、ネットワークのノードどうしの、またはその他の適切なタイプのデバイスどうしの)間における同期化のために、プライマリアプリケーションとバックアップアプリケーションとの間における同期化のためになど)使用されることが可能であるということがわかるであろう。
図5は、本明細書において説明されている機能を実行する際に使用するのに適しているコンピュータのハイレベルブロック図を示している。
図5において示されているように、コンピュータ500は、プロセッサ要素502(たとえば、中央処理装置(CPU)および/またはその他の適切な(1つもしくは複数の)プロセッサ)、ならびにメモリ504(たとえば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)など)を含む。コンピュータ500はまた、協同モジュール/プロセス505、ならびに/またはさまざまな入力/出力デバイス506(たとえば、ユーザ入力デバイス(キーボード、キーパッド、マウスなど)、ユーザ出力デバイス(ディスプレイ、スピーカーなど)、入力ポート、出力ポート、受信機、送信機、およびストレージデバイス(たとえば、テープドライブ、フロッピー(登録商標)ドライブ、ハードディスクドライブ、コンパクトディスクドライブなど))を含むことができる。
本明細書において示され説明されている機能は、ソフトウェアにおいて(たとえば、1つもしくは複数のプロセッサ上でのソフトウェアの実施を介して)実施されることが可能であり、ならびに/またはハードウェアにおいて(たとえば、汎用コンピュータ、1つもしくは複数の特定用途向け集積回路(ASIC)、および/もしくはその他の任意のハードウェア均等物を使用して)実施されることが可能であるということがわかるであろう。
本明細書において示され説明されている機能は、(たとえば、専用コンピュータを実装する目的で汎用コンピュータ上で実行するために(たとえば、1つもしくは複数のプロセッサによる実行を介して))ソフトウェアにおいて実施されることが可能であり、ならびに/またはハードウェアにおいて(たとえば、1つもしくは複数の特定用途向け集積回路(ASIC)、および/または1つもしくは複数のその他のハードウェア均等物を使用して)実施されることが可能であるということがわかるであろう。
一実施形態においては、協同プロセス505は、本明細書において論じられている機能を実施するために、メモリ404内にロードされて、プロセッサ502によって実行されることが可能である。したがって、協同プロセス505(関連付けられているデータ構造を含む)は、コンピュータ可読記録媒体、たとえば、RAMメモリ、磁気または光学ドライブまたはディスケットなどに格納されることが可能である。
図5において示されているコンピュータ500は、本明細書において説明されている機能要素、および/または本明細書において説明されている機能要素の一部を実施するのに適している一般的なアーキテクチャおよび機能性を提供するということがわかるであろう。たとえば、コンピュータ500は、プライマリプロセス110P、プライマリプロセス110Pをホストするように構成されているデバイス、バックアッププロセス110B、バックアッププロセス110Bをホストするように構成されているデバイス、環境120のデバイスなどのうちの1つまたは複数を実施するのに適している一般的なアーキテクチャおよび機能性を提供する。
本明細書においてソフトウェア方法として論じられているステップのうちのいくつかは、ハードウェア内に、たとえば、さまざまな方法ステップを実行するためにプロセッサと協同する回路として実装されることが可能であると考えられる。本明細書において説明されている機能/要素の一部は、コンピュータプログラム製品として実装されることが可能であり、その場合には、コンピュータ命令が、コンピュータによって処理されたときに、本明細書において説明されている方法および/または技術が呼び出されるかまたはその他の形で提供されるように、そのコンピュータのオペレーションを適合させる。本発明の方法を呼び出すための命令は、固定式のメディアもしくは取り外し可能なメディア内に格納されること、ブロードキャストメディアもしくはその他の信号搬送メディア内に含めてデータストリームを介して伝送されること、および/またはそれらの命令に従って機能するコンピューティングデバイス内のメモリ内に記憶されることが可能である。
さまざまな実施形態の態様が、特許請求の範囲において明記されている。さまざまな実施形態のそれらおよびその他の態様は、下記の番号付けされた条項において明記されている:
1. プライマリプロセスとバックアッププロセスとの間において状態を同期化するための装置であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも1つのメモリと、
現在のエポック中に、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する
ように構成されているプロセッサとを含む、装置。
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも1つのメモリと、
現在のエポック中に、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する
ように構成されているプロセッサとを含む、装置。
2. プロセッサが、
現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、第1条に記載の装置。
現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、第1条に記載の装置。
3. プロセッサが、
現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、第1条に記載の装置。
現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、第1条に記載の装置。
4. プロセッサが、
状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第1条に記載の装置。
状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第1条に記載の装置。
5. プロセッサが、出力メッセージを、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースするように構成されている、第4条に記載の装置。
6. 環境が、通信ネットワークと、プライマリプロセスと通信するように構成されている少なくとも1つのその他のプロセスとを含む、第5条に記載の装置。
7. プロセッサが、
現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするように構成されている、第1条に記載の装置。
現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするように構成されている、第1条に記載の装置。
8. プロセッサが、
確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを特定するように構成されている、第7条に記載の装置。
確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを特定するように構成されている、第7条に記載の装置。
9. プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせるように構成されている、第8条に記載の装置。
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせるように構成されている、第8条に記載の装置。
10. プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第8条に記載の装置。
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第8条に記載の装置。
11. プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと
のためにプロセッサおよび少なくとも1つのメモリを使用するステップを含む、方法。
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと
のためにプロセッサおよび少なくとも1つのメモリを使用するステップを含む、方法。
12. 現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するステップ
をさらに含む、第11条に記載の方法。
をさらに含む、第11条に記載の方法。
13. 現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するステップ
をさらに含む、第11条に記載の方法。
をさらに含む、第11条に記載の方法。
14. 状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするステップ
をさらに含む、第11条に記載の方法。
をさらに含む、第11条に記載の方法。
15. 出力メッセージが、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースされる、第14条に記載の方法。
16. 環境が、通信ネットワークと、プライマリプロセスと通信するように構成されている少なくとも1つのその他のプロセスとを含む、第15条に記載の方法。
17. 現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするステップ
をさらに含む、第11条に記載の方法。
をさらに含む、第11条に記載の方法。
18. 確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを決定するステップ
をさらに含む、第17条に記載の方法。
をさらに含む、第17条に記載の方法。
19. すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせるステップ
をさらに含む、第18条に記載の方法。
をさらに含む、第18条に記載の方法。
20. すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするステップ
をさらに含む、第18条に記載の方法。
をさらに含む、第18条に記載の方法。
21. コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間における同期化のための方法をコンピュータに実行させる命令を格納しているコンピュータ可読記録媒体であって、その方法が、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップとを含む、コンピュータ可読記録媒体。
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップとを含む、コンピュータ可読記録媒体。
本明細書においては、本発明の教示を組み込むさまざまな実施形態が示され、詳細に説 明されているが、当業者なら、依然としてそれらの教示を組み込むその他の多くの変更された実施形態を容易に考案することができる。
Claims (10)
- プライマリプロセスとバックアッププロセスとの間において状態を同期化するための装置であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも1つのメモリと、
現在のエポック中に、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する
ように構成されているプロセッサとを含む、装置。 - プロセッサが、
現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、請求項1に記載の装置。 - プロセッサが、
現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、請求項1に記載の装置。 - プロセッサが、
状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、請求項1に記載の装置。 - プロセッサが、出力メッセージを、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースするように構成されている、請求項4に記載の装置。
- プロセッサが、
現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするように構成されている、請求項1に記載の装置。 - プロセッサが、
確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを決定するように構成されている、請求項6に記載の装置。 - プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせ、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、請求項7に記載の装置。 - プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと
のためにプロセッサおよび少なくとも1つのメモリを使用するステップを含む、方法。 - コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間における同期化のための方法をコンピュータに実行させる命令を格納しているコンピュータ可読記録媒体であって、その方法が、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップとを含む、コンピュータ可読記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/339,497 US8868862B2 (en) | 2011-12-29 | 2011-12-29 | Method and apparatus for synchronization in primary-backup replication schemes |
US13/339,497 | 2011-12-29 | ||
PCT/US2012/065755 WO2013101362A2 (en) | 2011-12-29 | 2012-11-19 | Method and apparatus for synchronization in primary-backup replication schemes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015508537A true JP2015508537A (ja) | 2015-03-19 |
Family
ID=47428981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014550297A Pending JP2015508537A (ja) | 2011-12-29 | 2012-11-19 | プライマリ/バックアップ複製スキームにおける同期化のための方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8868862B2 (ja) |
EP (1) | EP2798496B1 (ja) |
JP (1) | JP2015508537A (ja) |
KR (1) | KR20140097511A (ja) |
CN (1) | CN104054058B (ja) |
WO (1) | WO2013101362A2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10284417B2 (en) * | 2015-06-22 | 2019-05-07 | Arista Networks, Inc. | Method and system for sharing state between network elements |
US10430240B2 (en) * | 2015-10-13 | 2019-10-01 | Palantir Technologies Inc. | Fault-tolerant and highly-available configuration of distributed services |
CN106776155A (zh) * | 2016-12-08 | 2017-05-31 | 西安交大捷普网络科技有限公司 | 一种应用态连接同步方法 |
US11102106B2 (en) | 2018-04-04 | 2021-08-24 | Arista Networks, Inc. | Dynamic flooding for link state protocols |
US11671329B2 (en) | 2018-04-04 | 2023-06-06 | Arista Networks, Inc. | Computation of network flooding topologies |
US11218399B2 (en) | 2018-06-20 | 2022-01-04 | Arista Networks, Inc. | Embedded area abstraction |
US11296948B2 (en) | 2020-01-09 | 2022-04-05 | Arista Networks, Inc. | Topology partition detection |
CN111651211A (zh) * | 2020-05-06 | 2020-09-11 | 珠海格力电器股份有限公司 | 一种防止示教器系统崩溃的方法、计算机可读存储介质及示教器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006285448A (ja) * | 2005-03-31 | 2006-10-19 | Oki Electric Ind Co Ltd | 冗長システム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247141B1 (en) * | 1998-09-24 | 2001-06-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Protocol for providing replicated servers in a client-server system |
US6453386B1 (en) * | 1999-09-30 | 2002-09-17 | International Business Machines Corporation | Method and system for performing variable aging to optimize a memory resource |
US7216136B2 (en) * | 2000-12-11 | 2007-05-08 | International Business Machines Corporation | Concurrent collection of cyclic garbage in reference counting systems |
US6990608B2 (en) * | 2002-04-25 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Method for handling node failures and reloads in a fault tolerant clustered database supporting transaction registration and fault-in logic |
US7966538B2 (en) * | 2007-10-18 | 2011-06-21 | The Regents Of The University Of Michigan | Microprocessor and method for detecting faults therein |
US9723074B2 (en) | 2011-11-15 | 2017-08-01 | Alcatel Lucent | Method and apparatus for in the middle primary backup replication |
-
2011
- 2011-12-29 US US13/339,497 patent/US8868862B2/en active Active
-
2012
- 2012-11-19 WO PCT/US2012/065755 patent/WO2013101362A2/en active Application Filing
- 2012-11-19 CN CN201280065022.5A patent/CN104054058B/zh active Active
- 2012-11-19 JP JP2014550297A patent/JP2015508537A/ja active Pending
- 2012-11-19 EP EP12805824.5A patent/EP2798496B1/en active Active
- 2012-11-19 KR KR1020147017895A patent/KR20140097511A/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006285448A (ja) * | 2005-03-31 | 2006-10-19 | Oki Electric Ind Co Ltd | 冗長システム |
Non-Patent Citations (3)
Title |
---|
JPN6015029865; Brendan CULLY et al.: '"Remus: High Availability via Asynchronous Virtual Machine Replication"' NSDI'08: 5th USENIX Symposium on Networked Systems Design and Implementation , 20080416, pages:161-174, The University of British Columbia * |
JPN6015031894; Adrian COLESA et al.: '"Transparent Fault-Tolerance Based on Asynchronous Virtual Machine Replication"' Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), 2010 12th International Symposium , 20100926, Pages:442-448, IEEE * |
JPN7015002184; Timothy WOOD et al.: '"PipeCloud: Using Causality to Overcome Speed-of-Light Delays in Cloud-Based Disaster Recovery"' Proceeding SOCC '11 Proceedings of the 2nd ACM Symposium on Cloud Computing Article No. 17 , 20111026, pages:1-13, ACM * |
Also Published As
Publication number | Publication date |
---|---|
US20130173876A1 (en) | 2013-07-04 |
CN104054058A (zh) | 2014-09-17 |
CN104054058B (zh) | 2017-10-13 |
WO2013101362A2 (en) | 2013-07-04 |
EP2798496A2 (en) | 2014-11-05 |
US8868862B2 (en) | 2014-10-21 |
KR20140097511A (ko) | 2014-08-06 |
EP2798496B1 (en) | 2019-01-09 |
WO2013101362A3 (en) | 2013-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015508537A (ja) | プライマリ/バックアップ複製スキームにおける同期化のための方法および装置 | |
US10917457B2 (en) | Command processing in distributed computing systems | |
USRE47852E1 (en) | Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency | |
JP5258019B2 (ja) | アプリケーション・プロセス実行の範囲内での非決定論的オペレーションを管理、ロギング、またはリプレイするための予測方法 | |
JP5063704B2 (ja) | 協定タイミング・ネットワーク内のサーバの同期を促進する方法、システム、およびコンピュータ・プログラム | |
US9465650B2 (en) | Executing distributed globally-ordered transactional workloads in replicated state machines | |
JP5042318B2 (ja) | 協定タイミング・ネットワーク内の階層1構成を定義する方法、システム、およびコンピュータ・プログラム | |
CN101595668A (zh) | 建立协调定时网络中的服务器之间的逻辑路径的方法和系统 | |
US20090257456A1 (en) | Coordinated timing network having servers of different capabilities | |
US7925916B2 (en) | Failsafe recovery facility in a coordinated timing network | |
WO2008092750A1 (en) | Facilitating recovery in a coordinated timing network | |
US10609137B2 (en) | Global logical timestamp | |
WO2009081657A1 (ja) | ノードシステム、サーバ切換え方法、サーバ装置、およびデータ引き継ぎ方法 | |
Scales et al. | The design and evaluation of a practical system for fault-tolerant virtual machines | |
CN110351122A (zh) | 容灾方法、装置、系统与电子设备 | |
Osrael et al. | Axis2-based replication middleware forweb services | |
US7636821B2 (en) | Asynchronous hybrid mirroring system | |
Dinh-Tuan et al. | MS2M: A message-based approach for live stateful microservices migration | |
US10564665B2 (en) | Performing scalable, causally consistent reads using a logical wall clock | |
US8429136B2 (en) | Information processing method and information processing apparatus | |
KR20090084895A (ko) | 통합형 타이밍 네트워크에서 계층-1 구성을 정의하는 방법 | |
JP5493880B2 (ja) | 並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法 | |
Srivastava | Redundancy management for network devices | |
Ahn | Scalable Message Logging Algorithm for Geographically Distributed Broker-based Sensor Networks. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150811 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160126 |