(57)【要約】  プライマリ／バックアップ複製機能が開示される。プライマリプロセスおよびバックアッププロセスが、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスに関与する。この同期化プロセスは、エポックと呼ばれる期間において機能する。現在のエポック中に、プライマリプロセスは、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算する。現在のエポック中に、プライマリプロセスはまた、現在のエポック中に生成された出力メッセージを、現在のエポックにおいて使用するための専用とされている関連付けられている出力バッファ内にバッファリングする。プライマリプロセスは、前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する。現在のエポックに関してバッファリングされている出力メッセージは、現在のエポックに関する状態更新確認応答をプライマリプロセスが受信して、すべての前のエポックのすべての出力バッファが空になった後に、関連付けられている出力バッファからリリースされる。
2015508537.tif 000002
【特許請求の範囲】
【請求項１】
プライマリプロセスとバックアッププロセスとの間において状態を同期化するための装置であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも１つのメモリと、
現在のエポック中に、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する
ように構成されているプロセッサとを含む、装置。
【請求項２】
プロセッサが、
現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、請求項１に記載の装置。
【請求項３】
プロセッサが、
現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、請求項１に記載の装置。
【請求項４】
プロセッサが、
状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、請求項１に記載の装置。
【請求項５】
プロセッサが、出力メッセージを、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースするように構成されている、請求項４に記載の装置。
【請求項６】
プロセッサが、
現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするように構成されている、請求項１に記載の装置。
【請求項７】
プロセッサが、
確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを決定するように構成されている、請求項６に記載の装置。
【請求項８】
プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせ、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、請求項７に記載の装置。
【請求項９】
プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと
のためにプロセッサおよび少なくとも１つのメモリを使用するステップを含む、方法。
【請求項１０】
コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間における同期化のための方法をコンピュータに実行させる命令を格納しているコンピュータ可読記録媒体であって、その方法が、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップとを含む、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は一般に、プライマリ／バックアップ複製スキームにおける同期化を提供することに関する。
【背景技術】
【０００２】
クラウドコンピューティングは、コンピューティングサービスが提供される方法を変えている。データセンターの機能をフルに利用するために、多くのサービスが、負荷に伴ってスケーリングするように、および障害に対する耐性を有するように設計されている。複数のサービス（たとえば、テレコミュニケーション、ゲーミング等などのインタラクティブなサービス）は、遅延およびジッタなどのネットワークパフォーマンスパラメータに関して相対的に厳しい制限を有している。これらの基準、すなわち、弾力性、フォルトトレランス、およびネットワークパフォーマンスは、多くのさまざまな点で相いれないことがある。プロセスにフォルトトレランスを加えるさまざまなフォルトトレランスメカニズムがあるが、そのようなフォルトトレランスは典型的には、ネットワークオーバーヘッドを招くという犠牲を払って加えられる。そのような１つのフォルトトレランスメカニズムが、プライマリ／バックアップ複製であり、このプライマリ／バックアップ複製においては、プライマリプロセスの障害の後にバックアッププロセスがプライマリプロセスの役割を引き継ぐことができるように、プライマリプロセスの状態がバックアッププロセスの状態と同期化される。しかしながら、不利なことに、メモリおよびディスクの両方のリカバリを可能にするものを含む、多くの既存のプライマリ／バックアップ複製スキームにおいては、プライマリプロセスとバックアッププロセスとの間における定期的な同期化が、少なくとも、プライマリプロセスとバックアッププロセスとの間における往復遅延に等しい遅延を加える。これは、遅延の影響を受けやすいサービスのネットワークパフォーマンスを著しく低下させる。
【発明の概要】
【課題を解決するための手段】
【０００３】
従来技術におけるさまざまな欠点は、プライマリ／バックアップ複製を提供するための実施形態によって対処される。
【０００４】
少なくともいくつかの実施形態においては、プライマリプロセスおよびバックアッププロセスが、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスに関与する。この同期化プロセスは、エポックと呼ばれる期間において機能する。それぞれのエポックごとに、エポック中に生成された出力メッセージをバッファリングする際に使用するために、関連付けられている出力バッファが割り当てられる。現在のエポック中に、プライマリプロセスは、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算する。現在のエポック中に、プライマリプロセスはまた、現在のエポック中に生成された出力メッセージを、現在のエポックにおいて使用するための専用とされている関連付けられている出力バッファ内にバッファリングする。プライマリプロセスは、前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する。現在のエポックに関してバッファリングされている出力メッセージは、現在のエポックに関する状態更新確認応答をプライマリプロセスが受信して、すべての前のエポックのすべての出力バッファが空になった後に、関連付けられている出力バッファからリリースされる。
【０００５】
一実施形態においては、ある装置が、プライマリプロセスとバックアッププロセスとの間において状態を同期化するように構成されている。この装置は、プロセッサと、少なくとも１つのメモリとを含む。少なくとも１つのメモリは、プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている。プロセッサは、現在のエポック中に、現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするように構成されている。プロセッサはまた、前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するように構成されている。
【０００６】
一実施形態においては、プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法が提供される。この方法は、プロセッサおよび少なくとも１つのメモリを使用する。プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポック中に、現在のエポックに関して状態更新情報が計算され、その状態更新情報は、前のエポック以降のプライマリプロセスの状態情報に対する変化を表し、現在のエポック中に生成された出力メッセージが、現在のエポックに関連付けられている出力バッファ内にバッファリングされる。前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックが開始される。
【０００７】
一実施形態においては、コンピュータ可読記録媒体が、コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法をコンピュータに実行させる命令を格納している。プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポック中に、現在のエポックに関して状態更新情報が計算され、その状態更新情報は、前のエポック以降のプライマリプロセスの状態情報に対する変化を表し、現在のエポック中に生成された出力メッセージが、現在のエポックに関連付けられている出力バッファ内にバッファリングされる。前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックが開始される。
【０００８】
本明細書における教示は、添付の図面と併せて以降の詳細な説明を考察することによって容易に理解されることが可能である。
【図面の簡単な説明】
【０００９】
【図１】アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームをサポートするように構成されているシステムを示すハイレベルブロック図である。
【図２】図１のシステム内のアシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームを示す例示的なオペレーション図である。
【図３】図２に関して示され説明されているようなエポックを使用するプライマリ／バックアップ複製を提供するための方法の一実施形態を示す図である。
【図４】図２に関して示され説明されているようなエポックに関連付けられている情報を管理することによってプライマリ／バックアップ複製を提供するための方法の一実施形態を示す図である。
【図５】本明細書において説明されている機能を実行する際に使用するのに適しているコンピュータを示すハイレベルブロック図である。
【発明を実施するための形態】
【００１０】
理解を容易にする目的で、図どうしに共通している同じ要素を指すために、可能な場合には、同じ参照番号が使用されている。
【００１１】
一般に、プライマリ／バックアップ複製機能が本明細書において示され説明されているが、さまざまなその他の機能が本明細書において提示されることもあるだろう。
【００１２】
主として、チェックポイントベースのプライマリ／バックアップ複製（本明細書においては、アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームとして示されている）を提供するためのプライマリ／バックアップ複製機能の実施形態の使用に関して示され説明されているが、プライマリ／バックアップ複製機能のさまざまな実施形態は、イベントベースのプライマリ／バックアップ複製（たとえば、入力、割り込み等などの非決定性のイベントに基づくプライマリ／バックアップ複製）のためのプライマリ／バックアップ複製を提供するために使用されることも可能であるということに留意されたい。
【００１３】
図１は、アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームをサポートするように構成されているシステムのハイレベルブロック図を示している。
【００１４】
図１において示されているように、システム１００は、プライマリプロセス１１０Ｐおよびバックアッププロセス１１０Ｂ（総称して、プロセス１１０）、ならびに関連付けられている環境１２０を含む。図１においてさらに示されているように、プライマリプロセスには、出力バッファモジュール１１２が関連付けられている。
【００１５】
プライマリプロセス１１０Ｐは、環境１２０と対話するように構成されている。プライマリプロセス１１０Ｐは、環境１２０から入力メッセージを受信して、それらの受信された入力メッセージを処理するように構成されている。プライマリプロセス１１０Ｐは、（たとえば、プライマリプロセス１１０Ｐによって受信される入力メッセージとは無関係なローカル処理に基づいて、および／またはプライマリプロセス１１０Ｐによって受信される入力メッセージの処理に基づいて）出力メッセージを生成して、それらの出力メッセージを環境１２０に提供するように構成されている。プライマリプロセス１１０Ｐは、出力バッファモジュール１１２を使用して、それらの生成された出力メッセージをバッファリングするように構成されている。出力バッファモジュール１１２（およびその関連付けられている出力バッファｂ１−ｂｎ）は、任意の適切な様式で（たとえば、それぞれのバッファごとに別々のキューを使用して、それぞれの出力バッファを区別するためのキューマーカを含む単一のキューを使用して、といった具合に）実装されることが可能である。プライマリプロセス１１０Ｐは、受信入力メッセージをバッファリングするために１つまたは複数の入力バッファ（明確にする目的で省略されている）を使用するように構成されることも可能である。プライマリプロセス１１０Ｐと環境１２０との間における通信は、双方向である（これは、出力バッファモジュール１１２をよりよく示すためにプライマリプロセス１１０Ｐへの入力とプライマリプロセス１１０Ｐからの出力とに関する２つの異なる通信パスを使用して表されているが、任意の適切な様式で提供されることが可能である）ということに留意されたい。
【００１６】
バックアッププロセス１１０Ｂは、プライマリプロセス１１０Ｐをバックアップするように構成されている。バックアッププロセス１１０Ｂは、プライマリプロセス１１０Ｐが機能しなくなったときにアクティブプロセスとして機能するように構成されている。バックアッププロセス１１０Ｂは、アクティブなときには、上述のように、プライマリプロセス１１０Ｐの様式と同様の様式で機能するように構成されている。バックアッププロセス１１０Ｂがアクティブであるときには、バックアッププロセス１１０Ｂと環境１２０との間における通信は、双方向である（これは、バックアッププロセス１１０Ｂへの入力とバックアッププロセス１１０Ｂからの出力との両方に関する１つの通信パスを使用して表されているが、任意の適切な様式で提供されることが可能である）ということに留意されたい。
【００１７】
プライマリプロセス１１０Ｐが機能しなくなったときにバックアッププロセス１１０Ｂがアクティブプロセスの役割を担うためには、プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとが同期化されることが必要である。したがって、プライマリプロセス１１０Ｐの状態とマッチするようにバックアッププロセス１１０Ｂの状態を定期的に同期化するために、チェックポイントベースの同期化が実行される。プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとの間における状態の同期化は、ディスク状態およびメモリ状態の同期化を含む。プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとの間におけるディスク状態およびメモリ状態の両方の整合性を確保するためには、状態情報がそれに基づくネットワーク出力がプライマリプロセス１１０Ｐによって環境１２０へリリースされることが可能になる前に、プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとが同期化されることが必要であるということに留意されたい。一実施形態においては、アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームを使用して同期化が実行され、そのアシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームは、本明細書においては図２−図４に関連して示され、説明されている。
【００１８】
プロセス１１０は、アプリケーション、クラウドコンピューティング環境における仮想マシン（ＶＭ）等など、プライマリ／バックアップ複製が使用されることが可能である任意の適切なタイプのプロセスを含むことができる。状態情報と、関連付けられている状態情報確認応答とをやり取りする目的でのプロセス１１０どうしの間における通信は、任意の適切な様式で提供されることが可能であるということに留意されたい。たとえば、プロセス１１０どうしの間における通信は、１つのデバイス内の内部通信を介することが可能であり、その場合には、両方のプロセス１１０は、単一の物理デバイス内で（例示としては、プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとの間における破線を使用して）実施される。たとえば、プロセス１１０どうしの間における通信は、通信ネットワークを介することが可能であり、その場合には、プロセス１１０どうしは、別々の物理デバイス上で（例示としては、環境１２０および／またはその他の任意の適切な環境もしくはネットワークを介して）稼働している。明確にする目的で省略されているが、プロセス１１０どうしは、さまざまなプロセッサおよびメモリ（ならびに任意選択で、さまざまなその他のハードウェアおよびソフトウェア）が関連付けられている１つまたは複数の物理マシン上で稼働していることが可能であるということがわかるであろう。
【００１９】
環境１２０は、通信ネットワークまたはその他のタイプの環境など、任意の適切なタイプの環境を含むことができる。明確にする目的で省略されているが、環境１２０は、プライマリプロセス１１０Ｐ（および、アクティブなときには、バックアッププロセス１１０Ｂ）がさまざまなタイプのメッセージをやり取りすることができる相手であるさまざまなノードを含むことができるということがわかるであろう。たとえば、プライマリプロセス１１０Ｐ（および、アクティブなときには、バックアッププロセス１１０Ｂ）は、環境１２０からさまざまなタイプの入力メッセージを受信して処理することができ、同様に、プライマリプロセス１１０Ｐ（および、アクティブなときには、バックアッププロセス１１０Ｂ）は、さまざまなタイプの出力メッセージを生成して環境１２０へ伝搬することができる。
【００２０】
図２は、図１のシステム内のアシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームの例示的なオペレーション図を示している。
【００２１】
図２の例示的なオペレーション図２００において示されているように、プライマリプロセス１１０Ｐ（Ｐと示されている）およびバックアッププロセス１１０Ｂ（Ｂと示されている）は、プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとの間において状態を同期化するために対話する。
【００２２】
プライマリプロセス１１０Ｐは、エポックと示されている期間内で機能する（例示としては、ｉ番目のエポックを示すために、ｅｉが使用される）。
【００２３】
現在のエポックｅｉは、前のエポックｅｉ−１（本明細書においては、先行エポックと呼ばれることも可能である）の終了後の任意の時点で開始され、同様に、新たなエポックｅｉ＋１（本明細書においては、次なるエポックと呼ばれることも可能である）は、現在のエポックｅｉの終了後の任意の時点で開始される。
【００２４】
現在のエポックｅｉ内で、プライマリプロセス１１０Ｐは、オペレーション（すなわち、プライマリプロセス１１０Ｐのオペレーション）を実行し、これは、その状態情報に対する変化をもたらす場合がある。プライマリプロセス１１０Ｐは、バックアッププロセス１１０Ｂのために状態更新情報を決定する（例示としては、現在のエポックｅｉ中にバックアッププロセス１１０Ｂのためにプライマリプロセス１１０Ｐによって計算された現在の状態更新情報を示すために、ｍｉが使用される）。現在のエポックｅｉ中にプライマリプロセス１１０Ｐによって決定された現在の状態更新情報ｍｉは、前のエポックｅｉ−１中にプライマリプロセス１１０Ｐによって前の状態更新情報ｍｉ−１が決定されて以降のプライマリプロセス１１０Ｐの状態に対する変化（ひいては、プライマリプロセス１１０Ｐの状態と、バックアッププロセス１１０Ｂの状態との間における相違）を表す。プライマリプロセス１１０Ｐは、現在のエポックｅｉ中に自分のオペレーションを実行するのと同時に、または現在のエポックｅｉ中に自分のオペレーションを完了した後に、現在の状態更新情報ｍｉを計算することができる。
【００２５】
現在のエポックｅｉ内で、プライマリプロセス１１０Ｐは、プライマリプロセス１１０Ｐが機能する環境に提供されることを意図されている出力メッセージを生成することもできる。プライマリプロセス１１０Ｐは、それらの出力メッセージを任意の適切な様式で生成することができる。たとえば、プライマリプロセス１１０Ｐは、プライマリプロセス１１０Ｐにおいて受信されるいかなる入力メッセージとも無関係に実行されるプライマリプロセス１１０Ｐにおけるローカル処理に基づいて出力メッセージを生成することができる。たとえば、プライマリプロセス１１０Ｐは、入力メッセージを受信し、それらの入力メッセージを処理し、関連付けられている出力メッセージを作成することができる。入力メッセージの処理および出力メッセージの生成は、プライマリプロセス１１０Ｐによって実行されるオペレーションの一部であるとみなされることが可能であるということに留意されたい。現在のエポックｅｉ中に生成された出力メッセージは、現在のエポックｅｉの専用とされている関連付けられている出力バッファ内に格納される（例示としては、ｉ番目のエポックに関するｉ番目の出力バッファを示すために、ｂｉが使用される）。
【００２６】
プライマリプロセスは、現在のエポックｅｉの終了後の任意の時点で新たなエポックｅｉ＋１を開始する。次いでプライマリプロセス１１０Ｐは、新たなエポックｅｉ＋１（プライマリプロセス１１０Ｐにとっては、これが現在のエポックになっている）の間に自分の機能を実行することを開始することができる。すなわち、プライマリプロセス１１０Ｐは、自分のオペレーションを実行すること、新たなエポックｅｉ＋１に関する新たな状態更新情報ｍｉ＋１を計算すること、新たなエポックｅｉ＋１中に出力メッセージを生成してバッファリングすることなどが可能である。プライマリプロセス１１０Ｐは、（１）任意の前のエポックに関する関連付けられている状態更新情報をバックアッププロセス１１０Ｂが受信して適用したことを示すバックアッププロセス１１０Ｂからのあらゆる状態更新確認応答を受信すること、（２）現在のエポックｅｉに関する状態更新情報をバックアッププロセス１１０Ｂへ送信すること、および（３）現在のエポックｅｉに関する状態更新情報をバックアッププロセス１１０Ｂが受信して適用したことを示すバックアッププロセス１１０Ｂからの状態更新確認応答を受信することとは無関係に、新たなエポックｅｉ＋１を開始するということに留意されたい。任意の現在のまたは過去の状態更新確認応答を受信することとは無関係に新たなエポックｅｉ＋１を開始して以降、プライマリプロセスは、任意の所与の時点で保留中でありうるエポックの数に関するいかなる制約も伴わずに、新たなエポックを開始して、それらの新たなエポックに関する状態更新情報を引き続き送信することができるということにさらに留意されたい。プライマリプロセス１１０Ｐは、連続したエポックにわたって、この様式で継続する。
【００２７】
プライマリプロセス１１０Ｐは、現在のエポックｅｉ中に決定された現在の状態更新情報をバックアッププロセス１１０Ｂへ送信する（例示としては、プライマリプロセス１１０Ｐからバックアッププロセス１１０Ｂへ送信される現在の状態更新情報を示すために、ｍｉが使用される）。プライマリプロセス１１０Ｐは、次なるエポックｅｉ＋１の初期化とは無関係に、現在のエポックｅｉに関する現在の状態更新情報ｍｉをバックアッププロセス１１０Ｂへ送信することができる。一実施形態においては、たとえば、プライマリプロセス１１０Ｐは、現在のエポックｅｉ中に現在のエポックｅｉに関する現在の状態更新情報ｍｉをバックアッププロセス１１０Ｂへ送信することができる（たとえば、その場合には、現在の状態更新情報ｍｉは、現在のエポックｅｉ中にプライマリプロセス１１０Ｐによってバックアッププロセス１１０Ｂへと押し出されるが、必ずしも現在のエポックｅｉ中にバックアッププロセス１１０Ｐによって受信されるとは限らない）。一実施形態においては、たとえば、プライマリプロセス１１０Ｐは、次なるエポックｅｉ＋１中に現在のエポックｅｉに関する現在の状態更新情報ｍｉをバックアッププロセス１１０Ｂへ送信することができる（たとえば、その場合には、現在の状態更新情報ｍｉは、現在のエポックｅｉが終了した後に、プライマリプロセス１１０Ｐによってバックアッププロセス１１０Ｂへと押し出される）。このような実施形態の組合せがサポートされることも可能である（たとえば、その場合には、現在のエポックｅｉの終了、および次なるエポックｅｉ＋１の開始の両方の最中に、現在の状態更新情報ｍｉをプライマリプロセス１１０Ｐによってバックアッププロセス１１０Ｂへと押し出すことが行われる）ということに留意されたい。状態更新情報は、任意の適切な様式で（たとえば、任意の適切な通信メディアを介して送信される１つまたは複数のメッセージを使用して）プライマリプロセス１１０Ｐからバックアッププロセス１１０Ｂへ送信されることが可能である。
【００２８】
バックアッププロセス１１０Ｂは、プライマリプロセス１１０Ｐのエポックとは無関係に、エポックｅｉに関するプライマリプロセス１１０Ｐによって送信された状態更新情報ｍｉを受信し、プライマリプロセス１１０Ｐから受信された状態更新情報ｍｉに基づいて自分の状態情報を更新し、関連付けられている状態更新確認応答をプライマリプロセス１１０Ｐへ送信する（例示としては、エポックｅｉの状態更新情報ｍｉに対応してバックアッププロセス１１０Ｂからプライマリプロセス１１０Ｐへ送信される状態更新確認応答を示すために、ａｉが使用される）。状態更新確認応答は、任意の適切な様式で（たとえば、任意の適切な通信メディアを介して送信される任意の適切なタイプのメッセージを使用して）バックアッププロセス１１０Ｂからプライマリプロセス１１０Ｐへ送信されることが可能である。プライマリプロセス１１０Ｐは、（１）エポックｅｉに関するバックアッププロセス１１０Ｂからの状態更新確認応答ａｉを受信した後に、および（２）エポックｅｉよりも前のすべてのエポックに関するすべての出力メッセージが、それらの関連付けられている出力バッファから環境１２０へリリースされた後に、エポックｅｉの出力バッファｂｉから出力メッセージをリリースする。
【００２９】
出力メッセージがエポックｅｉの出力バッファｂｉから環境１２０へリリースされた時点で、プライマリプロセス１１０Ｐは、もはやエポックｅｉ内で機能していないが、出力メッセージがエポックｅｉの出力バッファｂｉから環境１２０へリリースされるまで、エポックｅｉは、プライマリプロセス１１０Ｐにおいては依然として保留中であるとみなされるということに留意されたい。したがって、上述のように、プライマリプロセス１１０Ｐは、エポックｅｉの出力メッセージがエポックｅｉの出力バッファｂｉから環境１２０へリリースされることが可能である状況をモニタするように（たとえば、エポックｅｉに関するバックアッププロセス１１０Ｂからの状態更新確認応答ａｉが受信されていないかモニタするように、およびエポックｅｉよりも前のすべてのエポックに関するすべての出力メッセージが、それらの関連付けられている出力バッファから環境１２０へいつリリースされたかを検知するために前のエポックの出力バッファの現在のステータスをモニタするように構成されている。
【００３０】
バッファｂｉは、エポックｅｉ中に生成された出力メッセージを格納するために、それぞれのエポックｅｉごとにインスタンス化されており、同様に、エポックｅｉのバッファｂｉは、出力メッセージがバッファｂｉからリリースされた後に終了される。したがって、それぞれのバッファは、特定の長さの時間にわたって（すなわち、その関連付けられているエポックの開始から、その関連付けられているエポックの出力バッファから出力メッセージがリリースされるまで）存在し、任意の所与の時点で特定の数のバッファのみが存在することになる。
【００３１】
上述のように、それぞれのバッファは、特定の長さの時間にわたって存在し、ひいては、保留中のバッファの数に関する限界は、次のように計算されることが可能である。第１に、ｅｉが現在のエポックであるときに、またはプライマリプロセス１１０Ｐが、まだバックアッププロセス１１０Ｂからの状態更新確認応答ａｉを待っているときに、エポックｅｉが保留中であるとみなされる場合には、１つのバッファｂは、保留中のエポックｅごとに存在しなければならないということに留意されたい。第２に、エポックｅｉの終了と、プライマリプロセス１１０Ｐが、関連付けられている状態更新確認応答ａｉをバックアッププロセス１１０Ｂから受信する時点との間における時間をＴと表す（これは、大まかには、プライマリプロセス１１０Ｐとバックアッププロセス１１０Ｂとの間における往復時間と考えられることが可能である）。第３に、｜エポック｜で、エポックの長さ（時間）を表す。ｋが（ｋ−１）｜エポック｜≧Ｔを満たす場合には、最大でｋ個の保留中のエポックが存在することになり、したがって、ｋ個のバッファで十分であろう。したがって、アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームは、ＡＰＣｎという表記を使用して表されることが可能であり、この場合、ｎは、確認応答されていないチェックポイントの数を表す（ｎ＝ｋ−１）。
【００３２】
アシンクロナスパイプラインドチェックポインティングプライマリ／バックアップ複製スキームのオペレーションは、図２の例示的なオペレーション図２００のさらに具体的な考察を介して、よりよく理解されることが可能である。
【００３３】
図２のエポックｅ１の説明が、以降に続く。エポックｅ１において生成された出力メッセージは、エポックｅ１に関連付けられているバッファｂ１内にバッファリングされる。エポックｅ１の完了時に、プライマリプロセス１１０Ｐは、状態更新情報ｍ１をバックアッププロセス１１０Ｂへ送信する（この状態更新情報ｍ１は、伝搬遅延に起因して、第３のエポックｅ３の終了付近までバックアッププロセス１１０Ｂにおいては受信されない）。バックアッププロセス１１０Ｂは、その状態更新情報を処理し、これは、第３のエポックｅ３の終了付近から、第４のエポックｅ４の開始付近までに行われる。バックアッププロセス１１０Ｂは、状態更新確認応答ａ１をプライマリプロセス１１０Ｐへ送信する（この状態更新確認応答ａ１は、伝搬遅延に起因して、第６のエポックｅ６の開始付近までプライマリプロセス１１０Ｐにおいては受信されない）。次いで、エポックｅ１中にバッファｂ１内にバッファリングされた出力メッセージは、第６のエポックｅ６中に状態更新確認応答ａ１が受信されたときに（前のエポックのバッファが空にされていると想定して）環境１２０へリリースされる。この時点で、第１のエポックｅ１は、プライマリプロセス１１０Ｐに関して、もはや保留中ではなくなる。
【００３４】
図２のエポックｅ２の説明が、以降に続く。エポックｅ２において生成された出力メッセージは、エポックｅ２に関連付けられているバッファｂ２内にバッファリングされる。エポックｅ２の完了時に、プライマリプロセス１１０Ｐは、状態更新情報ｍ２をバックアッププロセス１１０Ｂへ送信する（この状態更新情報ｍ２は、伝搬遅延に起因して、第４のエポックｅ４の終了付近までバックアッププロセス１１０Ｂにおいては受信されない）。バックアッププロセス１１０Ｂは、その状態更新情報を処理し、これは、第４のエポックｅ４の終了付近から、第５のエポックｅ５の開始付近までに行われる。バックアッププロセス１１０Ｂは、状態更新確認応答ａ２をプライマリプロセス１１０Ｐへ送信する（この状態更新確認応答ａ２は、伝搬遅延に起因して、第７のエポックｅ７の開始付近までプライマリプロセス１１０Ｐにおいては受信されない）。次いで、エポックｅ２中にバッファｂ２内にバッファリングされた出力メッセージは、第７のエポックｅ７中に状態更新確認応答ａ２が受信されたときに（前のエポックのバッファが空にされていると想定して）環境１２０へリリースされる。この時点で、第２のエポックｅ２は、プライマリプロセス１１０Ｐに関して、もはや保留中ではなくなる。第２のエポックｅ２からは、次なるエポック（第３のエポックｅ３）の開始は、任意の前のエポック（すなわち、エポックｅ０、ｅ１、およびｅ２）に関する関連付けられている状態更新情報をバックアッププロセス１１０Ｂが受信して適用したことを示すバックアッププロセス１１０Ｂからのあらゆる状態更新確認応答を受信することとは無関係であると見られることが可能である。なぜなら、エポックｅ１の状態更新確認応答ａ１およびエポックｅ２の更新確認応答ａ２がプライマリプロセス１１０Ｐによって受信される前に、第３のエポックｅ３が開始されるためである。
【００３５】
図３は、図２に関して示され説明されているようなエポックを使用するプライマリ／バックアップ複製を提供するための方法の一実施形態を示している。
【００３６】
ステップ３１０において、方法３００が開始する。
【００３７】
ステップ３２０において、エポックｅｉが初期化される。エポックｅｉは、エポックｅｉのために割り当てられている関連付けられているバッファｂｉを有している。
【００３８】
ステップ３３０において、プライマリプロセスが、エポックｅｉ中に機能を実行する。プライマリプロセスは、オペレーション（そのうちの少なくともいくつかは、プライマリプロセスの状態情報に対する変化をもたらす場合がある）を実行し、エポックｅｉに関する状態更新情報を計算し、生成された出力メッセージを、エポックｅｉに関連付けられているバッファｂｉ内にバッファリングする。これらの機能は、エポックｅｉ内の任意の適切な時点で実行されることが可能である（たとえば、状態更新情報は、オペレーションが実行されるのと同時に、および／またはその後で計算されることが可能であり、出力メッセージは、エポックｅｉの全体を通じて任意の時点で生成されバッファリングされることが可能であるなど、ならびにそれらのさまざまな組合せが可能である）ということに留意されたい。
【００３９】
ステップ３４０において、方法３００は、エポックｅｉが完了しているかどうかを決定する。エポックｅｉは、エポックｅｉに関する状態更新情報が決定された後の任意の時点で完了しているとみなされることが可能である。エポックｅｉが完了していない場合には、方法３００は、ステップ３３０へ戻る（すなわち、プライマリプロセスは、機能（たとえば、エポックｅｉに関する状態更新情報を決定すること、生成された出力メッセージを、エポックｅｉに関連付けられているバッファｂｉ内にバッファリングすることなど）のうちのいくつかまたはすべてを引き続き実行する）。エポックｅｉが完了している場合には、方法３００は、（１）ステップ３２０へ戻って次なるエポック（ｉ＝ｉ＋１）を開始し、（２）ステップ３５０へ進む。次なるエポックｅｉ＋１が開始されるが、エポックｅｉ中に生成された出力メッセージが環境へリリースされることが可能になるまでそれらの出力メッセージをバッファリングする目的でエポックｅｉは保留中のままであるということに留意されたい。
【００４０】
ステップ３５０において、プライマリプロセスは、エポックｅｉに関連付けられている情報の管理を開始する。これは、状態更新情報をバックアッププロセスへ送信すること、およびエポックｅｉに関連付けられているバッファｂｉ内にバッファリングされている出力メッセージのリリースをコントロールするためのアクションを実行することを含むことができる。エポックｅｉに関連付けられている情報を管理するための例示的なプロセスは、本明細書においては図４に関連して示され、説明されている。
【００４１】
図３においては、方法３００は、ステップ３４０から、方法３００が（次なるエポックｅｉ＋１の初期化のために）ステップ３２０へ戻り、また（エポックｅｉに関連付けられている情報の管理のために）ステップ３５０へ進むように構成されている。これは、ステップ３２０−３４０のそれぞれの実行ごとにステップ３５０の別々の実行が存在することになるということを示している。したがって、任意の所与の時点で、エポックｅｉに関するステップ３２０−３４０の現在の実行と、エポックｅｉに関するステップ３２０−３４０の実行の時点でまだ保留中である１つまたは複数の前のエポックに関するステップ３５０の１つまたは複数の同時の実行とが存在することになる。
【００４２】
図４は、図２に関して示され説明されているようなエポックに関連付けられている情報を管理することによってプライマリ／バックアップ複製を提供するための方法の一実施形態を示している。
【００４３】
上述のように、図４の方法４００は、図３の方法３００によって初期化されたそれぞれのエポックｅｉごとに図３の方法３００のステップ３５０として使用するのに適している。
【００４４】
ステップ４１０において、方法４００が開始する。この時点で、エポックｅｉに関する状態更新情報が、プライマリプロセスによって（たとえば、図３の方法３００のステップ３２０−３４０を使用して）計算されていると想定される。
【００４５】
ステップ４２０において、プライマリプロセスは、エポックｅｉに関する状態更新情報をバックアッププロセスへ送信する。
【００４６】
ステップ４３０において、プライマリプロセスは、エポックｅｉに関する状態更新確認応答がバックアッププロセスから受信されていないかモニタする。
【００４７】
ステップ４４０において、プライマリプロセスは、エポックｅｉの状態更新確認応答が受信されているかどうかを決定する。エポックｅｉの状態更新確認応答が受信されていない場合には、方法４００は、ステップ４３０へ戻る（すなわち、プライマリプロセスは、エポックｅｉに関する状態更新確認応答が受信されていないか引き続きモニタする）。エポックｅｉの状態更新確認応答が受信されている場合には、方法４００は、ステップ４５０へ進む。
【００４８】
ステップ４５０において、プライマリプロセスは、すべての前のエポックのすべての出力メッセージが環境へリリースされているかどうかを決定する。すべての前のエポックのすべての出力メッセージが環境へリリースされているわけではない場合には、方法４００は、ステップ４５０に留まる（すなわち、プライマリプロセスは、エポックｅｉのバッファｂｉの出力メッセージに関して処理を進める前に、すべての前のエポックのすべての出力メッセージが環境へリリースされるまで待つ）。すべての前のエポックのすべての出力メッセージが環境へリリースされている場合には、方法４００は、ステップ４６０へ進む。
【００４９】
ステップ４６０において、プライマリプロセスは、エポックｅｉのバッファｂｉの出力メッセージを環境へリリースする。
【００５０】
ステップ４７０において、方法４００は終了する。図３に関連して述べたように、図４の方法４００は、図３の方法３００によって初期化されたそれぞれのエポックごとに繰り返される。したがって、任意の所与の時点で、方法４００の複数の実行が、互いと、ならびに図３の方法３００の実行と同時にアクティブになることが予想される。
【００５１】
上述したように、図３の方法３００および図４の方法４００は、エポックｅｉが完了して新たなエポックｅｉ＋１が開始された後にエポックｅｉに関する状態更新情報がプライマリプロセスからバックアッププロセスへ送信される一実施形態に関連して示され説明されているが、エポックｅｉに関する状態更新情報は、その他の任意の適切な時点で（たとえば、（示されていないが）ステップ３３０の一部としてエポックｅｉ内で、（図４において示されているように）ステップ３５０の一部としてエポックｅｉの後に、またはそれらの組合せで）プライマリプロセスからバックアッププロセスへ送信されることが可能であるということに留意されたい。
【００５２】
本明細書においては、主として、プライマリ要素およびバックアップ要素がプロセスであるプライマリ／バックアップ複製スキームにおける同期化を提供することに関連して示され説明されているが、本明細書において示され説明されているさまざまな実施形態は、その他のタイプのプライマリ要素およびバックアップ要素に関するプライマリ／バックアップ複製スキームにおける同期化を提供するために（たとえば、プライマリデバイスとバックアップデバイスとの（たとえば、ネットワークのノードどうしの、またはその他の適切なタイプのデバイスどうしの）間における同期化のために、プライマリアプリケーションとバックアップアプリケーションとの間における同期化のためになど）使用されることが可能であるということがわかるであろう。
【００５３】
図５は、本明細書において説明されている機能を実行する際に使用するのに適しているコンピュータのハイレベルブロック図を示している。
【００５４】
図５において示されているように、コンピュータ５００は、プロセッサ要素５０２（たとえば、中央処理装置（ＣＰＵ）および／またはその他の適切な（１つもしくは複数の）プロセッサ）、ならびにメモリ５０４（たとえば、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）など）を含む。コンピュータ５００はまた、協同モジュール／プロセス５０５、ならびに／またはさまざまな入力／出力デバイス５０６（たとえば、ユーザ入力デバイス（キーボード、キーパッド、マウスなど）、ユーザ出力デバイス（ディスプレイ、スピーカーなど）、入力ポート、出力ポート、受信機、送信機、およびストレージデバイス（たとえば、テープドライブ、フロッピー（登録商標）ドライブ、ハードディスクドライブ、コンパクトディスクドライブなど））を含むことができる。
【００５５】
本明細書において示され説明されている機能は、ソフトウェアにおいて（たとえば、１つもしくは複数のプロセッサ上でのソフトウェアの実施を介して）実施されることが可能であり、ならびに／またはハードウェアにおいて（たとえば、汎用コンピュータ、１つもしくは複数の特定用途向け集積回路（ＡＳＩＣ）、および／もしくはその他の任意のハードウェア均等物を使用して）実施されることが可能であるということがわかるであろう。
【００５６】
本明細書において示され説明されている機能は、（たとえば、専用コンピュータを実装する目的で汎用コンピュータ上で実行するために（たとえば、１つもしくは複数のプロセッサによる実行を介して））ソフトウェアにおいて実施されることが可能であり、ならびに／またはハードウェアにおいて（たとえば、１つもしくは複数の特定用途向け集積回路（ＡＳＩＣ）、および／または１つもしくは複数のその他のハードウェア均等物を使用して）実施されることが可能であるということがわかるであろう。
【００５７】
一実施形態においては、協同プロセス５０５は、本明細書において論じられている機能を実施するために、メモリ４０４内にロードされて、プロセッサ５０２によって実行されることが可能である。したがって、協同プロセス５０５（関連付けられているデータ構造を含む）は、コンピュータ可読記録媒体、たとえば、ＲＡＭメモリ、磁気または光学ドライブまたはディスケットなどに格納されることが可能である。
【００５８】
図５において示されているコンピュータ５００は、本明細書において説明されている機能要素、および／または本明細書において説明されている機能要素の一部を実施するのに適している一般的なアーキテクチャおよび機能性を提供するということがわかるであろう。たとえば、コンピュータ５００は、プライマリプロセス１１０Ｐ、プライマリプロセス１１０Ｐをホストするように構成されているデバイス、バックアッププロセス１１０Ｂ、バックアッププロセス１１０Ｂをホストするように構成されているデバイス、環境１２０のデバイスなどのうちの１つまたは複数を実施するのに適している一般的なアーキテクチャおよび機能性を提供する。
【００５９】
本明細書においてソフトウェア方法として論じられているステップのうちのいくつかは、ハードウェア内に、たとえば、さまざまな方法ステップを実行するためにプロセッサと協同する回路として実装されることが可能であると考えられる。本明細書において説明されている機能／要素の一部は、コンピュータプログラム製品として実装されることが可能であり、その場合には、コンピュータ命令が、コンピュータによって処理されたときに、本明細書において説明されている方法および／または技術が呼び出されるかまたはその他の形で提供されるように、そのコンピュータのオペレーションを適合させる。本発明の方法を呼び出すための命令は、固定式のメディアもしくは取り外し可能なメディア内に格納されること、ブロードキャストメディアもしくはその他の信号搬送メディア内に含めてデータストリームを介して伝送されること、および／またはそれらの命令に従って機能するコンピューティングデバイス内のメモリ内に記憶されることが可能である。
【００６０】
さまざまな実施形態の態様が、特許請求の範囲において明記されている。さまざまな実施形態のそれらおよびその他の態様は、下記の番号付けされた条項において明記されている：
【００６１】
１．  プライマリプロセスとバックアッププロセスとの間において状態を同期化するための装置であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも１つのメモリと、
現在のエポック中に、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始する
ように構成されているプロセッサとを含む、装置。
【００６２】
２．  プロセッサが、
現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、第１条に記載の装置。
【００６３】
３．  プロセッサが、
現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、第１条に記載の装置。
【００６４】
４．  プロセッサが、
状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第１条に記載の装置。
【００６５】
５．  プロセッサが、出力メッセージを、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースするように構成されている、第４条に記載の装置。
【００６６】
６．  環境が、通信ネットワークと、プライマリプロセスと通信するように構成されている少なくとも１つのその他のプロセスとを含む、第５条に記載の装置。
【００６７】
７．  プロセッサが、
現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするように構成されている、第１条に記載の装置。
【００６８】
８．  プロセッサが、
確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを特定するように構成されている、第７条に記載の装置。
【００６９】
９．  プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせるように構成されている、第８条に記載の装置。
【００７０】
１０．  プロセッサが、
すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするように構成されている、第８条に記載の装置。
【００７１】
１１．  プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと
のためにプロセッサおよび少なくとも１つのメモリを使用するステップを含む、方法。
【００７２】
１２．  現在のエポック中に、入力メッセージを受信し、出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するステップ
をさらに含む、第１１条に記載の方法。
【００７３】
１３．  現在のエポック中に、出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するステップ
をさらに含む、第１１条に記載の方法。
【００７４】
１４．  状態更新確認応答が現在のエポックに関してバックアッププロセスから受信され、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされている場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするステップ
をさらに含む、第１１条に記載の方法。
【００７５】
１５．  出力メッセージが、出力バッファから、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースされる、第１４条に記載の方法。
【００７６】
１６．  環境が、通信ネットワークと、プライマリプロセスと通信するように構成されている少なくとも１つのその他のプロセスとを含む、第１５条に記載の方法。
【００７７】
１７．  現在のエポックに関連付けられている状態更新情報がバックアッププロセスによって受信され処理された旨のバックアッププロセスからの確認応答をモニタするステップ
をさらに含む、第１１条に記載の方法。
【００７８】
１８．  確認応答が受信された場合には、すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているかどうかを決定するステップ
をさらに含む、第１７条に記載の方法。
【００７９】
１９．  すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているわけではないという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするのを遅らせるステップ
をさらに含む、第１８条に記載の方法。
【００８０】
２０．  すべての前のエポックの出力メッセージがそれらのそれぞれの出力バッファからリリースされているという決定が行われた場合には、現在のエポックに関連付けられている出力バッファから出力メッセージをリリースするステップ
をさらに含む、第１８条に記載の方法。
【００８１】
２１．  コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間における同期化のための方法をコンピュータに実行させる命令を格納しているコンピュータ可読記録媒体であって、その方法が、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、現在のエポック中に計算され、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップであり、出力メッセージが、現在のエポック中にバッファリングされる、バッファリングするステップと、
前のエポック中にプライマリプロセスによって決定された状態更新情報がバックアッププロセスによって受信されたことを確認して応答する前のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップとを含む、コンピュータ可読記録媒体。
【００８２】
本明細書においては、本発明の教示を組み込むさまざまな実施形態が示され、詳細に説  明されているが、当業者なら、依然としてそれらの教示を組み込むその他の多くの変更された実施形態を容易に考案することができる。
【図１】
2015508537.tif 000003
【図２】
2015508537.tif 000004
【図３】
2015508537.tif 000005
【図４】
2015508537.tif 000006
【図５】
2015508537.tif 000007
【手続補正書】
【提出日】平成26年8月25日(2014.8.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プライマリプロセスとバックアッププロセスとの間において状態を同期化するための装置であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスのそれぞれの複数のエポックに関連付けられている複数の出力バッファを保持するように構成されている少なくとも１つのメモリと、
少なくとも１つのメモリに通信可能に接続されているプロセッサとを含み、プロセッサが、
現在のエポックに関して、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す状態更新情報を計算し、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングし、
現在のエポックに関する状態更新情報がバックアッププロセスによって受信されたことを確認して応答する現在のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始し、
現在のエポックに関する状態更新確認応答がバックアッププロセスから受信されているという決定と、あらゆる前のエポックの出力メッセージが、前のエポックに関連付けられているそれぞれの出力バッファからリリースされているという決定とに基づいて、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファからリリースするように構成されている、装置。
【請求項２】
プロセッサが、
現在のエポック中に、入力メッセージを受信し、現在のエポック中に生成された出力メッセージの少なくとも一部分を生成するために入力メッセージを処理するように構成されている、請求項１に記載の装置。
【請求項３】
プロセッサが、
現在のエポック中に、現在のエポック中に生成された出力メッセージの少なくとも一部分を生成するためにローカル処理を実行するように構成されている、請求項１に記載の装置。
【請求項４】
プロセッサが、
現在のエポックに関連付けられている状態更新情報をバックアッププロセスへ伝搬するように構成されている、請求項１に記載の装置。
【請求項５】
プロセッサが、現在のエポック中に生成された出力メッセージを、プライマリプロセスおよびバックアッププロセスに関連付けられている環境へリリースするように構成されている、請求項４に記載の装置。
【請求項６】
プロセッサが、
現在のエポックに関する状態更新確認応答がバックアッププロセスから受信されていないかモニタすることによって、現在のエポックに関する状態更新確認応答が受信されているかどうかを決定するように構成されている、請求項１に記載の装置。
【請求項７】
プロセッサが、
現在のエポックに関する状態更新確認応答が受信されているという決定に基づいて、あらゆる前のエポックの出力メッセージが、前のエポックに関連付けられているそれぞれの出力バッファからリリースされているかどうかを決定するように構成されている、請求項１に記載の装置。
【請求項８】
プロセッサが、
あらゆる前のエポックの出力メッセージのうちのすべてが、前のエポックに関連付けられているそれぞれの出力バッファからリリースされているわけではないという決定に基づいて、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファからリリースするのを遅らせるように構成されている、請求項７に記載の装置。
【請求項９】
プライマリプロセスとバックアッププロセスとの間において状態を同期化するための方法であって、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップと、
現在のエポックに関する状態更新情報がバックアッププロセスによって受信されたことを確認して応答する現在のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと、
現在のエポックに関する状態更新確認応答がバックアッププロセスから受信されているという決定と、あらゆる前のエポックの出力メッセージが、前のエポックに関連付けられているそれぞれの出力バッファからリリースされているという決定とに基づいて、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファからリリースするステップと
のためにプロセッサおよび少なくとも１つのメモリを使用するステップを含む、方法。
【請求項１０】
コンピュータによって実行されたときに、プライマリプロセスとバックアッププロセスとの間における同期化のための方法をコンピュータに実行させる命令を格納しているコンピュータ可読記録媒体であって、その方法が、
プライマリプロセスの状態情報をバックアッププロセスの状態情報と同期化するように構成されている同期化プロセスの現在のエポックに関する状態更新情報を計算するステップであり、状態更新情報が、前のエポック以降のプライマリプロセスの状態情報に対する変化を表す、計算するステップと、
現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファ内にバッファリングするステップと、
現在のエポックに関する状態更新情報がバックアッププロセスによって受信されたことを確認して応答する現在のエポックに関する状態更新確認応答をバックアッププロセスから受信することとは無関係に新たなエポックを開始するステップと、
現在のエポックに関する状態更新確認応答がバックアッププロセスから受信されているという決定と、あらゆる前のエポックの出力メッセージが、前のエポックに関連付けられているそれぞれの出力バッファからリリースされているという決定とに基づいて、現在のエポック中に生成された出力メッセージを、現在のエポックに関連付けられている出力バッファからリリースするステップとを含む、コンピュータ可読記録媒体。
【国際調査報告】
2015508537.tif 000008
2015508537.tif 000009