(57)【要約】  システムおよび方法は、分散データグリッドにおいてクラスタ間でデータを同期させるためにパーティションレベルジャーナリングをサポートし得る。当該システムは、ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付け得て、上記１つ以上のユーザキャッシュは、複数のパーティションに分割される。さらに、当該システムは、上記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータ変更を取込み得て、リモートクラスタとの同期をサポートするジャーナルキャッシュに上記１つ以上のデータ変更を格納し得る。
2016529629.tif 000002
【特許請求の範囲】
【請求項１】
分散データグリッドにおいてクラスタ間のデータ同期をサポートするための方法であって、
ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付けるステップを備え、前記１つ以上のユーザキャッシュは、複数のパーティションに分割され、前記方法はさらに、
前記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータ変更を取込むステップと、
１つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記１つ以上のデータ変更を格納するステップとを備える、方法。
【請求項２】
ユーザデータを前記複数のパーティションのあるパーティションに割当てるステップをさらに備え、前記割当ては、
キャッシュエントリキーに対するハッシュ、
キャッシュエントリに関連付けられるキーに対するハッシュ、および
明示的な割当て、のうちの少なくとも１つに基づく、請求項１に記載の方法。
【請求項３】
前記ジャーナルキャッシュに格納された前記１つ以上のデータ変更を、それらがなされる順序で維持するステップをさらに備える、請求項１または２に記載の方法。
【請求項４】
前記ジャーナルキャッシュは、パーティション化されたキャッシュに基づき、前記ジャーナルキャッシュは、複数のパーティションに分割される、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記ジャーナルキャッシュの各パーティションは、１つ以上のバックアップコピーを有する、請求項４に記載の方法。
【請求項６】
各々の取込まれたデータ変更のためのグローバルユニーク識別子（ＩＤ）を生成するステップをさらに備える、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記グローバルユニークＩＤは、複数の要素を含む、請求項６に記載の方法。
【請求項８】
前記グローバルユニークＩＤの一要素は、前記１つ以上のデータ変更がなされるソースパーティションを示す整数であり、前記グローバルユニークＩＤの別の要素は、前記ソースパーティションに対して前記１つ以上のデータ変更がなされる順序を示す長整数である、請求項７に記載の方法。
【請求項９】
１つ以上のエントリを維持するシーケンステーブルを提供するステップをさらに備え、各々のエントリは、前記複数のパーティションにおけるあるパーティションに対してなされたデータ変更の総数を示す、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記シーケンステーブルに基づいて、前記パーティションに対してなされる新たなデータ変更のためのグローバルユニークＩＤを生成するステップをさらに備える、請求項９に記載の方法。
【請求項１１】
マシン読取可能な形態でプログラム命令を備えるコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されたときに前記コンピュータシステムに請求項１〜１０のいずれか１項に記載の方法を実行させる、コンピュータプログラム。
【請求項１２】
請求項１１に記載のコンピュータプログラムを格納した非一時的なマシン読取可能な記憶媒体。
【請求項１３】
分散データグリッドにおいてクラスタ間のデータ同期をサポートするためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、前記分散データグリッドは、ステップを実行するように動作し、前記ステップは、
ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付けるステップを備え、前記１つ以上のユーザキャッシュは、複数のパーティションに分割され、前記ステップはさらに、
前記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータ変更を取込むステップと、
１つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記１つ以上のデータ変更を格納するステップとを備える、システム。
【請求項１４】
前記分散データグリッドは、ユーザデータを前記複数のパーティションのあるパーティションに割当てるように動作し、前記割当ては、
キャッシュエントリキーに対するハッシュ、
キャッシュエントリに関連付けられるキーに対するハッシュ、および
明示的な割当て、のうちの少なくとも１つに基づく、請求項１３に記載のシステム。
【請求項１５】
前記ジャーナルキャッシュに格納された前記１つ以上のデータ変更は、それらがなされる順序で維持される、請求項１３または１４に記載のシステム。
【請求項１６】
前記ジャーナルキャッシュは、パーティション化されたキャッシュに基づき、前記ジャーナルキャッシュは、複数のパーティションに分割される、請求項１３〜１５のいずれか１項に記載のシステム。
【請求項１７】
前記ジャーナルキャッシュの各パーティションは、１つ以上のバックアップコピーを有する、請求項１６に記載のシステム。
【請求項１８】
前記分散データグリッドは、各々の取込まれたデータ変更のためのグローバルユニーク識別子（ＩＤ）を生成するように動作する、請求項１３〜１７のいずれか１項に記載のシステム。
【請求項１９】
前記グローバルユニークＩＤは、複数の要素を含む、請求項１８に記載のシステム。
【請求項２０】
前記グローバルユニークＩＤの一要素は、前記１つ以上のデータ変更がなされるソースパーティションを示す整数であり、前記グローバルユニークＩＤの別の要素は、前記ソースパーティションに対して前記１つ以上のデータ変更がなされる順序を示す長整数である、請求項１９に記載のシステム。
【請求項２１】
前記分散データグリッドは、１つ以上のエントリを維持するシーケンステーブルを提供するように動作し、各々のエントリは、前記複数のパーティションにおけるあるパーティションに対してなされたデータ変更の総数を示し、
前記分散データグリッドは、前記シーケンステーブルに基づいて、前記パーティションに対してなされる新たなデータ変更のためのグローバルユニークＩＤを生成するように動作する、請求項１３〜２０のいずれか１項に記載のシステム。
【請求項２２】
実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、前記ステップは、
ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付けるステップを備え、前記１つ以上のユーザキャッシュは、複数のパーティションに分割され、前記ステップはさらに、
前記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータ変更を取込むステップと、
１つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記１つ以上のデータ変更を格納するステップとを備える、非一時的なマシン読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示：
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合にはいかなるときも全ての著作権を保有する。
【０００２】
発明の分野：
本発明は、一般にコンピュータシステムに関し、特に分散データグリッドにおいてフェデレーテッド（federated）キャッシングをサポートすることに関する。
【背景技術】
【０００３】
背景：
現代のコンピューティングシステム、特に大規模組織および大企業によって利用されるコンピューティングシステムは、サイズおよび複雑さが増大し続けている。特に、インターネットアプリケーションなどの分野では、何百万人ものユーザが同時に当該アプリケーションにアクセスすることができるべきであるという期待があり、これは事実上、ユーザによって生成および消費される内容の量および当該内容に関わるトランザクションの指数関数的な増大につながっている。また、このような動きは、データベースおよびメタデータストアに対するトランザクションコールの数の対応する増大をもたらし、当該需要に応える能力には限界がある。
【０００４】
これが、本発明の実施例が対処しようとする一般的領域である。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要：
分散データグリッドにおいてクラスタ間でデータを同期させるためにパーティションレベルジャーナリングをサポートし得るシステムおよび方法が、本明細書に記載されている。当該システムは、ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付け得て、上記１つ以上のユーザキャッシュは、複数のパーティションに分割される。さらに、当該システムは、上記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータ変更を取込み得て、リモートクラスタとの同期をサポートするジャーナルキャッシュに上記１つ以上のデータ変更を格納し得る。
【０００６】
システムおよび方法は、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートし得る。当該システムは、ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される１つ以上のデータ変更をパーティションレベルで追跡し得る。さらに、ソースクラスタにおける１つ以上のクラスタメンバは、１つ以上のレプリケーションメッセージを１つ以上の宛先クラスタに送り得て、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含む。次いで、１つ以上の宛先クラスタは、受取られた１つ以上のデータ変更を処理し得る。
【０００７】
システムおよび方法は、分散データグリッドにおいて自律型クラスタ間の同期中にフェイルオーバをサポートし得る。当該システムは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに当該ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にする。次いで、宛先クラスタにおけるクラスタメンバは、ソースクラスタにおける上記クラスタメンバから１つ以上のレプリケーションメッセージを受取り得て、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含む。さらに、上記１つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバは、上記１つ以上のレプリケーションメッセージを無視し得る。
【０００８】
システムおよび方法は、分散データグリッドにおいてクラスタ間でデータを同期させるために、リセット可能な確認応答（acknowledgement）をサポートし得る。当該システムは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために１つ以上のユニークな識別子（ＩＤ）を使用し得る。第１のクラスタは、第２のクラスタから第１のレプリケーションメッセージを受取り得て、レプリケーションメッセージは、当該レプリケーションメッセージが新たなクラスタからのものであることを示す。次いで、当該システムは、第１のレプリケーションメッセージに続いて第２のクラスタから受取られる１つ以上のレプリケーションメッセージを所有する際の冪等性（idempotence）を維持するように第１のクラスタをリセットし得る。
【図面の簡単な説明】
【０００９】
【図１】本発明のさまざまな実施例に係るデータグリッドクラスタの図である。
【図２】本発明の実施例に係る、分散データグリッドにおいてデータ変更を取込む図を示す。
【図３】本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートする図を示す。
【図４】本発明の実施例に係る、分散データグリッドにおいてジャーナルキャッシュのクラスタ全体にわたる表示をサポートする図を示す。
【図５】本発明の実施例に係る、分散データグリッドにおいてパーティションレベルジャーナリングをサポートするために単一のトランザクションを実行する図を示す。
【図６】本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートするための例示的なフローチャートを示す。
【図７】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートする図を示す。
【図８】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を開始させる図を示す。
【図９】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を実行する図を示す。
【図１０】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期をさらに実行する図を示す。
【図１１】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。
【図１２】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期中のソースクラスタにおけるクラスタストレージメンバ上での障害の図を示す。
【図１３】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期中にソースクラスタにおいてフェイルオーバを実行する図を示す。
【図１４】本発明の実施例に係る、ソースクラスタにおけるフェイルオーバ後に分散データグリッドにおいて自律型クラスタ間の非同期型の同期をサポートする図を示す。
【図１５】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期のためのフェイルオーバをサポートするための例示的なフローチャートを示す。
【図１６】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートする図を示す。
【図１７】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートするための例示的なフローチャートを示す。
【図１８】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用する図を示す。
【図１９】本発明の実施例に係る、有限状態マシンにおけるさまざまな状態の図を示す。
【図２０】本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用するための例示的なフローチャートを示す。
【発明を実施するための形態】
【００１０】
詳細な説明：
分散データグリッドにおいてフェデレーテッドキャッシングをサポートし得るシステムおよび方法が本明細書に記載されている。
【００１１】
分散データグリッド
実施例によれば、分散またはクラスタ化された環境内で情報および計算などの関連の動作を管理するために協働する複数のコンピュータサーバを備えるシステムが、本明細書では「データグリッドクラスタ」または「データグリッド」と称される。データグリッドクラスタは、サーバ全体で共有されるアプリケーションオブジェクトおよびデータを管理するために使用され得る。好ましくは、データグリッドクラスタは、遅い応答時間、高いスループット、予測可能なスケーラビリティ、連続的可用性、および情報信頼性を有するべきである。これらの特性の結果、データグリッドクラスタは、計算集約的でステートフルな中間層アプリケーションでの使用に非常に適している。データグリッドクラスタのいくつかの例、例えばＯｒａｃｌｅ  Ｃｏｈｅｒｅｎｃｅデータグリッドクラスタは、より高い性能を達成するために情報をインメモリで格納し得て、当該情報のコピーを複数のサーバにわたって同期させ続ける際に冗長性を利用し得て、それによって、サーバ障害が発生した場合のシステムの回復力およびデータの可用性を保証する。例えば、Ｃｏｈｅｒｅｎｃｅは、信頼できる、非常にスケーラブルなピアツーピアクラスタリングプロトコルに加えて、レプリケートおよび分散された（パーティション化された）データ管理およびキャッシングサービスを提供する。
【００１２】
インメモリデータグリッドは、協働するいくつかのサーバにデータを分散させることによってデータストレージおよび管理機能を提供し得る。データグリッドは、アプリケーションサーバと同一の層において、またはアプリケーションサーバ内で実行されるミドルウェアであってもよい。データグリッドは、データの管理および処理を提供し得て、グリッド内でデータが位置する場所に当該処理を送ることもし得る。また、インメモリデータグリッドは、サーバが機能しなくなるかまたはネットワークから切離された際に、そのクラスタ化されたデータ管理サービスを自動的かつ透過的にフェイルオーバして再分散させることによって、単一障害点を排除し得る。新たなサーバが追加されるか、または機能しなくなったサーバが再起動されると、データグリッドは、クラスタを自動的に加入させ得て、サービスは、それに対して再びフェイルオーバされ得て、クラスタ負荷を透過的に再分散させる。また、データグリッドは、ネットワークレベルの耐障害性特徴および透過的なソフト再起動機能を含み得る。
【００１３】
実施例によれば、データグリッドクラスタの機能は、異なるクラスタサービスを使用することに基づいている。クラスタサービスは、ルートクラスタサービス、パーティション化されたキャッシュサービス、およびプロキシサービスを含み得る。データグリッドクラスタ内で、各々のクラスタノードは、クラスタサービスの提供および消費の両方の観点から、いくつかのクラスタサービスに関与し得る。各々のクラスタサービスは、データグリッドクラスタ内でサービスをユニークに特定するサービス名と、クラスタサービスが何をすることができるかを定義するサービスタイプとを有する。データグリッドクラスタにおいて各々のクラスタノード上で実行されるルートクラスタサービス以外に、各々のサービスタイプの複数の名前を付けられたインスタンスが存在し得る。サービスは、ユーザによって構成されてもよく、またはサービスのデフォルトセットとしてデータグリッドクラスタによって提供されてもよい。
【００１４】
図１は、本発明のさまざまな実施例に係るデータグリッドクラスタの図である。図１に示されるように、データグリッドクラスタ１００、例えばＯｒａｃｌｅ  Ｃｏｈｅｒｅｎｃｅデータグリッドは、さまざまなクラスタサービス１１１〜１１６を実行させるクラスタノード１０１〜１０６などの複数のクラスタメンバ（またはサーバノード）を含む。また、データグリッドクラスタ１００を構成するために、キャッシュコンフィギュレーションファイル１１０が使用され得る。
【００１５】
実施例によれば、データグリッドクラスタ１００は、並列非同期型のプッシュレプリケーション技術に基づいてフェデレーテッドデータ特徴をサポートし得る。フェデレーテッドデータ特徴は、（場合によっては異なる物理的場所において）データグリッドクラスタ間でデータを同期させることを可能にし、障害回復をサポートすることに有益であり、２４×７の可用性を提供し、地方のユーザの待ち時間を減少させる。
【００１６】
同期のためのパーティションレベルジャーナリング
図２は、本発明の実施例に係る、分散データグリッドにおいてデータ変更を取込む図を示す。図２に示されるように、分散データグリッド２００は、１つ以上のユーザキャッシュ２０１をサポートし得る。また、１つ以上のユーザキャッシュ２０１は、クラスタ２００全体に均等に分散され得る複数のパーティション、例えばパーティションＩ〜ＩＩＩ  ２１１〜２１３に分割され得る。
【００１７】
さらに、キャッシュエントリキーに対してハッシュを実行することに基づいて、分散データグリッド２００におけるパーティションにユーザデータが割当てられ得る。代替的に、ユーザによって実現されるインターフェースを介して定義され得るキャッシュエントリに関連付けられるキーに対してハッシュを実行することに基づいて、パーティションにユーザデータが割当てられてもよい。また、ユーザデータは、分散データグリッド２００におけるパーティションに明示的に割当てられてもよい。
【００１８】
本発明の実施例によれば、パーティション化された分散クラスタ２００は、１つ以上のユーザキャッシュ２０１に対してなされるデータ変更を、それらがなされた順序で取込み得る。図２に示されるように、１つ以上のユーザキャッシュ２０１に対して適用されるデータ変更２１０は、（Ｋ１，Ｖ１）〜（Ｋ１１，Ｖ１１）の順序で表わされることができる。これらのデータ変更の中で、（Ｋ１，Ｖ１）、（Ｋ４，Ｖ４）および（Ｋ５，Ｖ５）は、パーティションＩ  ２１１に関連し、（Ｋ２，Ｖ２）、（Ｋ３，Ｖ３）、（Ｋ６，Ｖ６）、（Ｋ１０，Ｖ１０）および（Ｋ１１，Ｖ１１）は、パーティションＩＩ  ２１２に関連し、（Ｋ７，Ｖ７）、（Ｋ８，Ｖ８）および（Ｋ９，Ｖ９）は、パーティションＩＩＩ  ２１３に関連する。
【００１９】
図３は、本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートする図を示す。図３に示されるように、分散データグリッド３００は、複数のパーティション（例えばパーティションＩ〜ＩＩＩ  ３１１〜３１３）に分割され得る１つ以上のユーザキャッシュ３０１をサポートする。
【００２０】
分散データグリッド３００は、１つ以上のユーザキャッシュ３０１に適用されるデータ変更、例えば（Ｋ１，Ｖ１）〜（Ｋ１１，Ｖ１１）を、それらがなされた順序で取込み得る。また、これらのデータ変更は、リモートクラスタとの同期に使用され得るジャーナルキャッシュ３０２に配置され得る。
【００２１】
本発明の実施例によれば、当該システムは、ジャーナルキャッシュ３０２に格納された各々のデータ変更のためのグローバルユニーク識別子（ＩＤ）３２０を生成し得る。（例えば整数を使用する）複数の要素を含み得るグローバルユニークＩＤ  ３２０は、データ変更がなされるソースパーティション、および、（他のデータ変更に関しても）ソースパーティションにおいてこのようなデータ変更がなされる順序を特定し得る。
【００２２】
例えば、例示的なグローバルユニークＩＤ  ３２０は、（Ｐｉ，Ｒｊ）のフォーマットで表わされることができ、Ｐｉは、ソースパーティションを表わし、Ｒｊは、ソースパーティションに対する特定のデータ変更の順序を表わす。
【００２３】
図３に示されるように、パーティションＩ  ３１１に関連するデータ変更（Ｋ１，Ｖ１）、（Ｋ４，Ｖ４）および（Ｋ５，Ｖ５）は、グローバルユニークＩＤ（Ｐ１，Ｒ１）、（Ｐ１，Ｒ２）および（Ｐ１，Ｒ３）をそれぞれ割当てられる。同様に、パーティションＩＩ  ３１２に関連するデータ変更（Ｋ２，Ｖ２）、（Ｋ３，Ｖ３）、（Ｋ６，Ｖ６）、（Ｋ１０，Ｖ１０）および（Ｋ１１，Ｖ１１）は、グローバルユニークＩＤ（Ｐ２，Ｒ１）、（Ｐ２，Ｒ２）、（Ｐ２，Ｒ３）、（Ｐ２，Ｒ４）および（Ｐ２，Ｒ５）をそれぞれ割当てられる。また、パーティションＩＩＩ  ３１３に関連するデータ変更（Ｋ７，Ｖ７）、（Ｋ８，Ｖ８）および（Ｋ９，Ｖ９）は、グローバルユニークＩＤ（Ｐ３，Ｒ１）、（Ｐ３，Ｒ２）および（Ｐ３，Ｒ３）をそれぞれ割当てられる。
【００２４】
さらに、グローバルユニークＩＤ  ３２０の各々は、ジャーナルキャッシュ３０２におけるエントリのためのキーとして使用され得る。したがって、この複数要素キーは、クラスタ３００内でのいかなる入力／出力（ＩＯ）および／または同期なしにシステムがクラスタ全体にわたってユニークなＩＤを生成することを可能にする。
【００２５】
図４は、本発明の実施例に係る、分散データグリッドにおいてジャーナルキャッシュのクラスタ全体にわたる表示をサポートする図を示す。図４に示されるように、分散データグリッド４００は、複数のクラスタメンバ（例えばクラスタノード４０１〜４０８）を含み得る。
【００２６】
クラスタノード４０１〜４０８の各々は、１つ以上のパーティションの所有者であり得る。例えば、クラスタノード４０１は、パーティションＰ１〜Ｐ３の所有者であり、クラスタノード４０２は、パーティションＰ４〜Ｐ６の所有者であり、クラスタノード４０３は、パーティションＰ７〜Ｐ９の所有者であり、クラスタノード４０４は、パーティションＰ１０〜Ｐ１２の所有者であり、クラスタノード４０５は、パーティションＰ１３〜Ｐ１５の所有者であり、クラスタノード４０６は、パーティションＰ１６〜Ｐ１８の所有者であり、クラスタノード４０７は、パーティションＰ１９〜Ｐ２１の所有者であり、クラスタノード４０８は、パーティションＰ２２〜Ｐ２４の所有者である。
【００２７】
本発明の実施例によれば、ジャーナルキャッシュは、パーティション化されたキャッシュに基づいて、例えばユーザキャッシュを含むパーティションを活用することによって、実現され得る。さらに、ユーザは、ユーザキャッシュへのアクセスと同様の態様でジャーナルキャッシュにアクセスし得る。図４に示されるように、ユーザは、クラスタノード４０１〜４０８のうちのいずれか１つから（すなわちユーザキャッシュ４１１〜４１８およびジャーナルキャッシュ４２１〜４２８を介して）ユーザキャッシュおよびジャーナルキャッシュにアクセスし得る。
【００２８】
図５は、本発明の実施例に係る、分散データグリッドにおいてパーティションレベルジャーナリングをサポートするために単一のトランザクションを実行する図を示す。図５に示されるように、分散データグリッド５００は、ユーザキャッシュ５０１と、ジャーナルキャッシュ５０２とを含み得る。
【００２９】
本発明の実施例によれば、分散データグリッド５００は、ユーザキャッシュ５０１に対してなされたデータ変更を取込み、リモートクラスタとの同期に使用され得るジャーナルキャッシュ５０２にこれらのデータ変更を配置し得る。
【００３０】
例えば、ユーザキャッシュ５０１は、（Ｋ１，Ｖ１）、（Ｋ２，Ｖ２）、（Ｋ３，Ｖ３）および（Ｋ４，Ｖ４）などのいくつかのデータ変更を既に行っている可能性がある。これらの取込まれたデータ変更は、グローバルユニークＩＤ（Ｐ１，Ｒ１）、（Ｐ２，Ｒ１）、（Ｐ２，Ｒ２）および（Ｐ１，Ｒ２）をそれぞれ使用してジャーナルキャッシュ５０２に格納され得る。これらのグローバルユニークＩＤは、（Ｋ１，Ｖ１）がパーティションＰ１に対して適用される第１のデータ変更であり、（Ｋ２，Ｖ２）がパーティションＰ２に対して適用される第１のデータ変更であり、（Ｋ３，Ｖ３）がパーティションＰ２に対して適用される第２のデータ変更であり、（Ｋ４，Ｖ４）がパーティションＰ２に対して適用される第２のデータ変更であることを示す。
【００３１】
また、当該システムは、異なるパーティションのためのデータ変更の総数を維持するシーケンステーブル５０３を活用し得る。図５に示されるように、シーケンステーブル５０３は、パーティションＰ１もＰ２も２つのデータ変更を行ったことを示す。
【００３２】
本発明の実施例によれば、分散データグリッド５００は、パーティションのうちのいずれかに対する新たに取込まれたデータ変更のためのユニークなＩＤを素早く生成するためにシーケンステーブル５０３を使用し得る。
【００３３】
図５に示されるように、ユーザは、ユーザキャッシュ５０１におけるパーティションＰ１に対して適用されるデータ変更、例えば「（Ｋ５，Ｖ５）をｐｕｔ」を行い得る。当該システムは、このデータ変更を取込み、最新のデータ変更のためのユニークなＩＤ、すなわち（Ｐ１，Ｒ３）を素早く生成し得る。なぜなら、データ変更がパーティションＰ１に対して適用される第３のデータ変更であるからである。
【００３４】
さらに、分散データグリッド５００がジャーナルキャッシュ５０２にこのデータ変更を格納した後、パーティションＰ１が３回のデータ変更を行ったことを示すようにシーケンステーブル５０３が更新され得る。
【００３５】
図６は、本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートするための例示的なフローチャートを示す。図６に示されるように、ステップ６０１において、当該システムは、ジャーナルキャッシュをローカルクラスタにおける１つ以上のユーザキャッシュに関連付け得て、上記１つ以上のユーザキャッシュは、複数のパーティションに分割される。次いで、ステップ６０２において、当該システムは、上記１つ以上のユーザキャッシュの異なるパーティションに適用される１つ以上のデータを取込み得る。さらに、ステップ６０３において、当該システムは、１つ以上のリモートクラスタとの同期をサポートするジャーナルキャッシュに上記１つ以上のデータ変更を格納し得る。
【００３６】
自律型クラスタ間の並列非同期型の同期
図７は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートする図を示す。図７に示されるように、分散データグリッド７００は、ソースクラスタ７０１から宛先クラスタ７０２までなど、自律型クラスタ間でデータ変更を同期させ得る。さらに、当該システムは、パーティション化されたソースクラスタ７０１におけるさまざまなユーザキャッシュに適用されるデータ変更をパーティションレベルで追跡し得る。
【００３７】
本発明の実施例によれば、異なるパーティションに対するデータ変更を１つ以上の宛先クラスタ、例えば宛先クラスタ７０２におけるクラスタメンバに同期させるために、ソースクラスタ７０１における異なるクラスタメンバは並列的に動作し得る。
【００３８】
クラスタレベルでは、ソースクラスタ７０１における複数のクラスタメンバは、データ変更を宛先クラスタ７０２における複数のクラスタメンバに並列的に（すなわち多対多の関係で）同期させ得る。パーティションレベルでは、データ変更の同期は、常にソースおよび宛先を伴う（すなわち一対一の関係）。
【００３９】
本発明の実施例によれば、ソースクラスタ７０１におけるクラスタメンバおよび宛先クラスタ７０２におけるクラスタメンバは、異なるパーティションの所有者であるクラスタストレージメンバであり得る。代替的に、クラスタメンバは、異なるパーティションの所有者に関連付けられる他のクラスタノードであってもよい。
【００４０】
図７に示されるように、パーティションＩ  ７３１の所有者であるクラスタストレージメンバ７１１は、パーティションＩ  ７３１のためのジャーナルエントリを処理し得て、情報を宛先クラスタ７０２におけるクラスタストレージメンバ７２１に送る。また、パーティションＩＩ  ７３２の所有者であるクラスタストレージメンバ７１２は、パーティションＩＩ  ７３２のためのジャーナルエントリを処理し得て、パーティションＩＩＩ  ７３３の所有者であるクラスタストレージメンバ７１３は、パーティションＩＩＩ  ７３３のためのジャーナルエントリを処理し得る。クラスタストレージメンバ７１２もクラスタストレージメンバ７１３も、同期情報を宛先クラスタ７０２におけるクラスタストレージメンバ７２２に送り得る。
【００４１】
本発明の実施例によれば、同期プロセスは、異なるエンティティが関与する観点から非同期型であり得る。これらのエンティティは、ジャーナルに取込まれるデータ変更を生成するクライアントと、宛先クラスタ７０２にデータ変更を送るソースクラスタ７０１と、データ変更の受取りおよび処理の成功を示す確認応答を送る宛先クラスタ７０２とを含み得る。
【００４２】
図８は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を開始させる図を示す。図８に示されるように、分散データグリッド８００におけるソースクラスタ８０１におけるパーティションＰ１を所有するクラスタストレージメンバ８０３は、ジャーナルレコード８０５におけるパーティションＰ１のためのジャーナルエントリを処理し得て、１つ以上のレプリケーションメッセージ８１０を宛先クラスタ８０２におけるクラスタストレージメンバ８０４に送り得る。例えば、レプリケーションメッセージ８１０は、ソースクラスタ８０１におけるパーティションＰ１に対してなされるデータ変更（１〜３）、（４〜６）および（７〜９）を含み得る。
【００４３】
本発明の実施例によれば、当該システムは、分散データグリッド８００においてソースクラスタ８０１と宛先クラスタ８０２との間でレプリケーションメッセージ８１０をやりとりするためにユニークなＩＤを使用し得る。例えば、ユニークなＩＤは、ソースクラスタ８０１における特定のパーティション（例えばパーティションＰ１）に対して対応するデータ変更がなされる順序で単調にインクリメントされてもよい。したがって、当該システムは、同期動作が冪等的であることを保証することができる。
【００４４】
また、宛先クラスタ８０２は、宛先クラスタ８０２における各々のパーティションについて受取られて成功裏に処理された最新のデータ変更を示すレコード８０６を維持し得る。
【００４５】
図８に示されるように、パーティション「１」についてエントリ「０」を有するレコード８０６は、宛先クラスタ８０４におけるクラスタストレージノード８０４がパーティションＰ１についていかなるデータ変更も受取っておらず、成功裏に処理していないことを示す。また、レコード８０６は、他のパーティションに関する情報を格納するためにより多くのエントリを維持し得る。
【００４６】
図９は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を実行する図を示す。図９に示されるように、分散データグリッド９００におけるソースクラスタ９０１におけるパーティションＰ１を所有するクラスタストレージメンバ９０３は、ジャーナルレコード９０５におけるパーティションＰ１のためのジャーナルエントリを処理し得て、１つ以上のレプリケーションメッセージ９１０を宛先クラスタ９０２におけるクラスタストレージメンバ９０４に送り得る。
【００４７】
宛先クラスタ９０２におけるクラスタストレージメンバ９０４がデータ変更（１〜３）および（４〜６）を受取って成功裏に処理した後、クラスタストレージメンバ９０４は、確認応答（ＡＣＫ）９２０をソースクラスタ９０３に返し得る。また、当該システムは、データ変更（６）が、ソースクラスタ９０１におけるパーティションＰ１についての、宛先クラスタ９０２において受取られて成功裏に処理された最新のデータ変更であることを示すように、レプリケーションレコード９０６を更新し得る。
【００４８】
また、宛先クラスタ９０２がデータ変更（７〜９）を処理している間に、クラスタストレージメンバ９０３は、さらなるレプリケーションメッセージ９１０を宛先クラスタ９０２におけるクラスタストレージメンバ９０４に送り得る。例えば、レプリケーションメッセージ９１０は、データ変更（１０〜１２）を含み得る。
【００４９】
図１０は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期をさらに実行する図を示す。図１０に示されるように、分散データグリッド１０００におけるソースクラスタ１００１におけるパーティションＰ１を所有するクラスタストレージメンバ１００３は、ジャーナルレコード１００５におけるパーティションＰ１のためのジャーナルエントリを処理し得て、１つ以上のレプリケーションメッセージ１０１０を宛先クラスタ１００２におけるクラスタストレージメンバ１００４に送り得る。
【００５０】
宛先クラスタ１００２におけるクラスタストレージメンバ１００４がデータ変更（１〜３）および（４〜６）を受取って成功裏に処理したことを示す確認応答（ＡＣＫ）１０２０をソースクラスタ１００１におけるクラスタストレージメンバ１００３が受取った後、クラスタストレージメンバ１００３は、これらのデータ変更に関連付けられるリソースに対してガーベッジコレクションを実行し得る。
【００５１】
一方、宛先クラスタ１００２におけるクラスタストレージメンバ１００４がデータ変更（７〜９）を受取って成功裏に処理した後、クラスタストレージメンバ１００４は、ソースクラスタ１００１におけるクラスタストレージメンバ１００３に確認応答（ＡＣＫ）１０２０を返し得て、レプリケーションレコード１００６を更新し得て、当該レプリケーションレコード１００６は、データ変更（９）が、ソースクラスタ１００１におけるパーティションＰ１についての、宛先クラスタ１００２において受取られて成功裏に処理された最新のデータ変更であることを示す。
【００５２】
その間、クラスタストレージメンバ１００４は、データ変更（１０〜１２）を処理し続け得る一方、クラスタストレージメンバ１００３は、宛先クラスタ１００２におけるクラスタストレージメンバ１００４にさらなるレプリケーションメッセージ１０１０を送り得る。例えば、レプリケーションメッセージ１０１０は、取込まれたデータ変更（１３〜１６）を含み得る。
【００５３】
図１１は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。図１１に示されるように、ステップ１１０１において、当該システムは、ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される１つ以上のデータ変更をパーティションレベルで追跡し得る。次いで、ステップ１１０２において、ソースクラスタにおけるクラスタストレージメンバは、１つ以上のレプリケーションメッセージを１つ以上の宛先クラスタに送り得て、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含む。さらに、ステップ１１０３において、１つ以上の宛先クラスタは、受取られた１つ以上のデータ変更を処理し得る。
【００５４】
自律型クラスタ間の非同期型の同期のためのフェイルオーバ
図１２は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期中のソースクラスタにおけるクラスタストレージメンバ上での障害の図を示す。図１２に示されるように、ソースクラスタ１２０１におけるパーティションＰ１を所有するクラスタストレージメンバ１２０３は、ジャーナルレコード１２０５におけるパーティションＰ１のためのジャーナルエントリを処理し得て、１つ以上のレプリケーションメッセージを宛先クラスタ１２０２におけるクラスタストレージメンバ１２０４に送り得る。
【００５５】
宛先クラスタ１２０２におけるクラスタストレージメンバ１２０４がデータ変更（１０〜１２）を受取って成功裏に処理した後、クラスタストレージメンバ１２０４は、確認応答（ＡＣＫ）１２２０をソースクラスタ１２０１におけるクラスタストレージメンバ１２０３に返し得る。また、データ変更（１２）が、宛先クラスタ１２０２において受取られて成功裏に処理されたソースクラスタ１２０１におけるパーティションＰ１に対する最新のデータ変更であることを示すように、クラスタストレージメンバ１２０４は、レプリケーションレコード１２０６を更新し得る。
【００５６】
図１２に示されるように、ソースクラスタ１２０１におけるクラスタストレージメンバ１２０３は、障害に見舞われる可能性があり、確認応答（ＡＣＫ）１２２０を受取る前に利用できなくなる可能性がある。したがって、ソースクラスタ１２０１におけるクラスタストレージメンバ１２０３は、宛先クラスタ１２０２がソースクラスタ１２０１におけるパーティションＰ１についてのデータ変更（１０〜１２）を既に受取って成功裏に処理したことが分からない可能性がある。
【００５７】
その間、宛先クラスタ１２０２におけるクラスタストレージメンバ１２０４は、ソースクラスタ１２０１におけるクラスタストレージメンバ１２０３に対する障害に対処する必要なく、受取られたデータ変更（１３〜１６）を処理し続け得る。
【００５８】
図１３は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期中にソースクラスタにおいてフェイルオーバを実行する図を示す。図１３に示されるように、クラスタストレージメンバ１３０３が機能しなくなった後、クラスタストレージメンバ１３０５が、分散データグリッド１３００におけるソースクラスタ１３０１におけるパーティションＰ１の所有者として引き継ぎ得る。
【００５９】
ソースクラスタ１３０１におけるパーティションＰ１を所有するクラスタストレージメンバ１３０５は、ジャーナルレコード１３０７におけるパーティションＰ１のためのジャーナルエントリを処理し得て、１つ以上のレプリケーションメッセージ１３１０を宛先クラスタ１３０２におけるクラスタストレージメンバ１３０４に送り得る。
【００６０】
クラスタストレージメンバ１３０３の障害により、ソースクラスタ１３０１におけるクラスタストレージメンバ１３０５は、宛先クラスタ１３０２におけるクラスタストレージメンバ１３０４がデータ変更（７〜１２）および（１７〜２０）を受取って成功裏に処理したことが分からない可能性がある。
【００６１】
図１３に示されるように、ソースクラスタ１３０１におけるクラスタストレージメンバ１３０５は、全ての利用可能なメッセージをクラスタストレージメンバ１３０４に送り得る。これらの利用可能なレプリケーションメッセージは、データ変更（７〜１６）および（１７〜２０）を含み得て、データ変更（７〜１６）および（１７〜２０）のリソースは、ソースクラスタ１３０１においてガーベッジコレクトされていない。
【００６２】
一方、ソースクラスタ１３０１におけるクラスタストレージメンバ１３０５は、宛先クラスタ１３０２がデータ変更（１〜６）を受取って成功裏に処理し、データ変更（１〜６）のリソースがガーベッジコレクトされていることが分かるので、ソースクラスタ１３０１におけるクラスタストレージメンバ１３０５は、データ変更（１〜６）を含む以前のレプリケーションメッセージを宛先クラスタ１３０２に送ることはない。
【００６３】
さらに、データ変更（１３〜１６）を成功裏に処理すると、ソースクラスタ１３０１におけるパーティションＰ１について受取られて成功裏に処理された最新のデータ変更がデータ変更（１６）であることを示すように、クラスタストレージメンバ１３０４は、レプリケーションレコード１３０６を更新し得る。また、クラスタストレージメンバ１３０３は利用できないので、クラスタストレージメンバ１３０４は、確認応答（ＡＣＫ）をソースクラスタ１３０３に返さないように選択し得る。
【００６４】
図１４は、本発明の実施例に係る、ソースクラスタにおけるフェイルオーバ後に分散データグリッドにおいて自律型クラスタ間の非同期型の同期をサポートする図を示す。図１４に示されるように、分散データグリッド１４００におけるソースクラスタ１４０１におけるクラスタストレージメンバ１４０３が機能しなくなった後、ソースクラスタ１４０１におけるクラスタストレージメンバ１４０５が、パーティションＰ１の所有者として引き継ぎ得る。クラスタストレージメンバ１４０５は、ソースクラスタ１４０１におけるジャーナルレコード１４０７におけるパーティションＰ１のためのジャーナルエントリを処理し得る。
【００６５】
さらに、宛先クラスタ１４０２におけるクラスタストレージメンバ１４０４は、クラスタストレージメンバ１４０５からさまざまなレプリケーションメッセージを受取り得る。例えば、これらのレプリケーションメッセージは、データ変更（７〜１６）および（１７〜２０）を含み得る。
【００６６】
次いで、クラスタストレージメンバ１４０４は、レプリケーションレコード１４０６をチェックし得て、当該レプリケーションレコード１４０６は、データ変更（１６）が、ソースクラスタ１４０１におけるパーティションＰ１について受取られて成功裏に処理された最新のデータ変更であることを示す。したがって、クラスタストレージメンバ１４０４は、データ変更（７〜１６）  １４１０を無視し得る。なぜなら、クラスタストレージメンバ１４０４は、これらのデータ変更を既に受取って成功裏に処理しているからである。また、宛先クラスタ１４０２におけるクラスタストレージメンバ１４０４がデータ変更（７〜１６）を受取って成功裏に処理したことを示すために、クラスタストレージメンバ１４０４は、確認応答（ＡＣＫ）１４２０をソースクラスタ１４０１におけるクラスタストレージメンバ１４０５に返し得る。
【００６７】
さらに、宛先クラスタ１４０２におけるクラスタストレージメンバ１４０４がデータ変更（１７〜２０）を受取って成功裏に処理した後、クラスタストレージメンバ１４０４は、確認応答（ＡＣＫ）１４２０をソースクラスタ１４０１におけるクラスタストレージメンバ１４０５に返し得る。また、データ変更（２０）が、ソースクラスタ１４０１におけるパーティションＰ１についての、宛先クラスタ１４０２において受取られて成功裏に処理された最新のデータ変更であることを示すように、クラスタストレージメンバ１４０４は、レプリケーションレコード１４０６を更新し得る。
【００６８】
図１５は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。図１５に示されるように、ステップ１５０１において、当該システムは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに当該ソースクラスタにおける（クラスタストレージメンバなどの）クラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にする。さらに、ステップ１５０２において、宛先クラスタにおけるクラスタメンバは、１つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取り得て、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含む。次いで、ステップ１５０３において、上記１つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバは、上記１つ以上のレプリケーションメッセージを無視し得る。
【００６９】
自律型クラスタ全体にわたるリセット可能な確認応答
本発明の実施例によれば、同期動作が冪等的であることを保証する目的で、分散データグリッドにおいてクラスタ間でメッセージをやりとりするためにユニークなＩＤが使用され得る。例えば、メッセージのやりとりのために使用されるユニークなＩＤは、単調にインクリメントされるのみであり得る。
【００７０】
図１６は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートする図を示す。図１６に示されるように、分散データグリッド１６００におけるソースクラスタ１６０１は、１つ以上のデータ変更を宛先クラスタ１６０２に送った後にシャットダウンされ得る。
【００７１】
例えば、宛先クラスタ１６０２におけるクラスタストレージメンバ１６０４によって維持されるレプリケーションレコード１６２０は、データ変更（２０）が、受取られて成功裏に処理されたパーティションＰ１に対する最新のデータ変更であることを示し得る。
【００７２】
図１６に示されるように、新たなソースクラスタ１６０３が加入して引き継ぎ得る。代替的に、ソースクラスタ１６０１が、新たなソースクラスタ１６０３として再起動して再加入してもよい。どちらの場合にも、新たなソースクラスタ１６０３におけるクラスタストレージメンバ１６０５は、ソースクラスタ１６０３が新たなクラスタであることを示す１つ以上のレプリケーションメッセージ１６１０を宛先クラスタ１６０２に送り得る。例えば、レプリケーションメッセージ１６１０における第１のメッセージは、リセットフラグ１６１１を組み込んでいてもよい。
【００７３】
さらに、宛先クラスタ１６０２が、新たなクラスタであることを示すレプリケーションメッセージ１６１０を新たなソースクラスタ１６０３から受取った後、宛先クラスタ１６０２は、レプリケーションレコード１６２０をリフレッシュし得る。図１６に示されるように、宛先クラスタ１６０２は、過去にパーティション１についてのデータ変更がないことを示すために、（強調表示された）エントリを（２０）から（０）にリセットし得る。
【００７４】
したがって、当該システムは、クラスタ再起動中に冪等的なメッセージ処理を維持し、ＩＤ生成の過渡的な性質を維持するために、リセット可能な確認応答を使用し得る。
【００７５】
また、リセット可能な確認応答は、いくつかのエンティティを短時間で再起動させることができるが他のエンティティは長時間動作し得る分散システムにおいて、ＩＤの永久的な持続を回避することに有益であり得る。
【００７６】
図１７は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートするための例示的なフローチャートを示す。図１７に示されるように、ステップ１７０１において、当該システムは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために１つ以上のユニークな識別子（ＩＤ）を使用し得る。次いで、ステップ１７０２において、第１のクラスタは、第２のクラスタから第１のレプリケーションメッセージを受取り得て、第１のレプリケーションメッセージは、第２のクラスタが新たなクラスタであることを示す。さらに、ステップ１７０３において、当該システムは、第１のレプリケーションメッセージに続いて第２のクラスタから受取られる１つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第１のクラスタをリセットし得る。
【００７７】
有限状態マシンを使用した並列非同期型の同期
本発明の実施例によれば、当該システムは、同期プロセスを制御するために（ノンブロッキング）有限状態マシンを使用し得る。有限状態マシンは、いずれの時点においても、可能な特定の個別の状況（または状態）の有限のセットのうちの１つにあるしかないソフトウェアマシンコンポーネントである。例えば、停止、再生、早送り、巻戻しおよび一時停止状態などの複数の状態を有する有限状態マシンとして、カセットプレーヤが表わされることができる。
【００７８】
さらに、当該システムは、有限状態マシンの定義を表現するためにモデルを使用し得る。例えば、このモデルは、公知の状態のセット、許容可能な遷移のセット、および動作のセットを含み得る。
【００７９】
遷移は、有限状態マシンにおいて１つの状態から別の状態に変化するプロセスである。有限状態マシンの遷移は、予め定義され得る。例えば、有限状態マシンでは、明示的に定義された遷移のみが許容されてもよい。
【００８０】
動作は、有限状態マシンによって実行されるアルゴリズムおよびプロセスを表わす。動作は、遷移中、ある状態に入るとき（すなわち以前の状態から遷移するとき）、ある状態から出るとき（すなわち新たな状態に遷移するとき）などの異なる段階で実行され得る。また、ある状態に入るときに実行される動作は、さらなる遷移を起こさせ得る。
【００８１】
有限状態マシンは、システムによって各々のイベントが提供されるときに遷移を行うブロッキング有限状態マシンであってもよく、または、イベントを提供するシステムに対して独立して同時に遷移を行うノンブロッキング有限状態マシンであってもよい。
【００８２】
ノンブロッキング有限状態マシンは、イベントを内部で処理し得て、当該イベントは、その後の評価および起こり得る実行に備えてキューに入れられる。さらに、ノンブロッキング有限状態マシンは、遷移イベント、遅延遷移イベント、合体イベント、および後続イベントなどの異なるタイプのイベントをサポートし得る。
【００８３】
遷移イベントは、特定の状態への遷移を要求する単純なイベントである。他の遷移のように、状態マシンが要求に従う立場にある場合にのみ、当該遷移が起こり得る。
【００８４】
遅延遷移イベントは、遷移イベントと同様である。また、遅延遷移イベントは、コンフィギュラブルな遅延した実行を可能にする。例えば、遅延遷移イベントは、ある時点における公知の状態への遷移を定義し得る。
【００８５】
合体イベントは、別のイベントのラッパである。例えば、同一のイベントが既にキューに存在する場合に、新たなイベントが既存のイベントと合体され得る。また、合体イベントは、ＦＩＲＳＴおよびＭＯＳＴ＿ＲＥＣＥＮＴなどの異なるパラメータをとり得る。ＦＩＲＳＴは、最初に投入されたイベントが処理されることを示し、ＭＯＳＴ＿ＲＥＣＥＮＴは、最新の投入されたイベントが処理されることを示す。
【００８６】
後続イベントは、それより前に他のイベントが投入されていない場合に実行されるであろう別のイベントをラップする。これらのイベントは、タイミングがとられた遅延で有限状態マシンに投入され、他のイベントがこのイベントをプリエンプトすることを可能にする。
【００８７】
図１８は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用する図を示す。図１８に示されるように、分散データグリッド１８００におけるソースクラスタ１８０１は、さまざまなユーザデータ変更を格納するためにジャーナルキャッシュ１８１０を使用し得て、当該ユーザデータ変更の各々は、ユニークな識別子（ＩＤ）が割当てられ得る。
【００８８】
本発明の実施例によれば、分散データグリッド１８００は、ローカルソースクラスタ１８０１と１つ以上の宛先クラスタ、例えばリモート（宛先）クラスタＡ〜Ｂ  １８０２〜１８０３との間のユーザデータ変更の並列非同期型の同期をサポートする。
【００８９】
図１８に示されるように、スレッド１８０４は、ジャーナルキャッシュ１８１０からユーザデータ変更を読取り得て、ソースクラスタ１８０１における取込まれたユーザデータ変更を宛先クラスタＡ  １８０２に書込む（または同期させる）ことを担当し得る。
【００９０】
また、スレッド１８０５は、ジャーナルキャッシュ１８１０からユーザデータ変更を読取り得て、ソースクラスタ１８０１における取込まれたユーザデータ変更を宛先クラスタＢ  １８０３に書込む（または同期させる）ことを担当し得る。
【００９１】
さらに、ガーベッジコレクション（ＧＣ）スレッド１８０６は、異なる宛先クラスタＡ〜Ｂ  １８０２〜１８０３に既に書込まれている、または同期されているユーザデータ変更を削除することを担当し得る。
【００９２】
図１８に示されるように、スレッド１８０４は、有限状態マシン１８１４に関連付けられ得て、スレッド１８０５は、有限状態マシン１８１５に関連付けられ得る。有限状態マシン１８１４〜１８１５の各々は、同期プロセスを制御するノンブロッキング有限状態マシンであってもよい。
【００９３】
図１９は、本発明の実施例に係る、有限状態マシンにおけるさまざまな状態の図を示す。図１９に示されるように、有限状態マシン１９００は、初期状態１９０１、接続状態１９０２、アイドル状態１９０３、停止状態１９０４、送信状態１９０５、およびエラー状態１９０６などの複数の状態を含み得る。
【００９４】
図１９に示されるように、有限状態マシン１９００は、初期状態１９０１から接続状態１９０２への遷移、接続状態１９０２からアイドル状態１９０３への遷移、アイドル状態１９０３から停止状態１９０４への遷移、および停止状態１９０４から接続状態１９０２に戻る遷移を可能にする。さらに、有限状態マシン１９００は、接続状態１９０２とエラー状態１９０６との間の遷移、およびアイドル状態１９０３と送信状態１９０５との間の遷移を可能にする。
【００９５】
また、当該システムは、有限状態マシン１９００が停止状態１９０４またはエラー状態１９０６のいずれかから接続状態１９０２に遷移する前に、状態エントリ動作１９１０を実行し得る。
【００９６】
図２０は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用するための例示的なフローチャートを示す。図２０に示されるように、ステップ２００１において、当該システムは、１つ以上のデータ変更をローカルクラスタにおける１つ以上のユーザキャッシュに取込み得て、取込まれたデータ変更は、ローカルクラスタにおけるジャーナルキャッシュに格納される。さらに、ステップ２００２において、当該システムは、有限状態マシンをローカルクラスタにおけるスレッドに関連付け得る。次いで、ステップ２００３において、当該システムは、スレッドを制御するために有限状態マシンを使用し、スレッドは、上記１つ以上のデータ変更をジャーナルキャッシュから読取り、上記１つ以上のデータ変更をリモートクラスタに書込むように動作する。
【００９７】
実施例によれば、分散データグリッドにおいてクラスタ間でデータを同期させることをサポートするための方法であって、ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される１つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージを１つ以上の宛先クラスタに送るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記方法はさらに、１つ以上の宛先クラスタを介して、受取られた１つ以上のデータ変更を処理するステップを備える。
【００９８】
実施例によれば、上記クラスタメンバがソースクラスタにおける１つ以上のユーザキャッシュのパーティションの所有者であることを可能にするステップをさらに備える方法である。
【００９９】
実施例によれば、上記クラスタメンバを介して、上記パーティションのためのジャーナルキャッシュにおける１つ以上のジャーナルエントリを処理するステップをさらに備える方法である。
【０１００】
実施例によれば、ソースクラスタにおける上記クラスタメンバが、１つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作することを可能にするステップをさらに備える方法である。
【０１０１】
実施例によれば、ソースクラスタから上記１つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージにユニークな識別子（ＩＤ）を関連付けるステップをさらに備える方法である。
【０１０２】
実施例によれば、宛先クラスタにおけるクラスタメンバが１つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答を宛先クラスタから受取るステップをさらに備える方法である。
【０１０３】
実施例によれば、確認応答を受取った後に、１つ以上のデータ変更に関連付けられたリソースをガーベッジコレクトするステップをさらに備える方法である。
【０１０４】
実施例によれば、宛先クラスタに書込むソースクラスタにおける各々のスレッドに有限状態マシンを関連付けるステップをさらに備える方法である。
【０１０５】
実施例によれば、各々の上記宛先クラスタを介して、１つ以上のエントリを含むレプリケーションレコードを維持するステップをさらに備え、各々のエントリは、上記宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、方法である。
【０１０６】
実施例によれば、宛先クラスタに維持されたレプリケーションレコードに基づいてソースクラスタにおいてフェイルオーバをサポートするステップをさらに備える方法である。
【０１０７】
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される１つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージを１つ以上の宛先クラスタに送るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記ステップはさらに、１つ以上の宛先クラスタを介して、受取られた１つ以上のデータ変更を処理するステップを備える。
【０１０８】
実施例によれば、上記クラスタメンバがソースクラスタにおける１つ以上のユーザキャッシュのパーティションの所有者であるシステムである。
【０１０９】
実施例によれば、上記クラスタメンバが、上記パーティションのためのジャーナルキャッシュにおける１つ以上のジャーナルエントリを処理するように動作するシステムである。
【０１１０】
実施例によれば、ソースクラスタにおける上記クラスタメンバが、１つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作するシステムである。
【０１１１】
実施例によれば、ソースクラスタから上記１つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージが、ユニークな識別子（ＩＤ）に関連付けられるシステムである。
【０１１２】
実施例によれば、宛先クラスタにおけるクラスタメンバが１つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答をソースクラスタにおける上記１つ以上のクラスタメンバが宛先クラスタから受取るシステムである。
【０１１３】
実施例によれば、ソースクラスタにおける上記１つ以上のクラスタメンバが、確認応答を受取った後に、１つ以上のデータ変更に関連付けられたリソースをガーベッジコレクトするシステムである。
【０１１４】
実施例によれば、宛先クラスタに書込むソースクラスタにおける各々のスレッドが、有限状態マシンに関連付けられるシステムである。
【０１１５】
実施例によれば、各々の上記宛先クラスタが、１つ以上のエントリを含むレプリケーションレコードを維持するように動作し、各々のエントリは、上記宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示し、各々の上記宛先クラスタがさらに、宛先クラスタに維持されたレプリケーションレコードに基づいてソースクラスタにおいてフェイルオーバをサポートするように動作するシステムである。
【０１１６】
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される１つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージを１つ以上の宛先クラスタに送るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記ステップはさらに、１つ以上の宛先クラスタを介して、受取られた１つ以上のデータ変更を処理するステップを備える。
【０１１７】
実施例によれば、分散データグリッドにおいてフェデレーテッドデータをサポートするための方法であって、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記方法はさらに、上記１つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記１つ以上のレプリケーションメッセージを無視するステップを備える。
【０１１８】
実施例によれば、ソースクラスタにおける上記別のクラスタメンバが、上記別のクラスタメンバが失われる前はパーティションの所有者であることを可能にする方法である。
【０１１９】
実施例によれば、上記クラスタメンバを介して上記パーティションのためのジャーナルキャッシュにおける１つ以上のジャーナルエントリを処理する方法である。
【０１２０】
実施例によれば、ソースクラスタから宛先クラスタに送られる各々の上記レプリケーションメッセージにユニークな識別子（ＩＤ）を関連付ける方法である。
【０１２１】
実施例によれば、ソースクラスタにおける上記クラスタメンバを介して、利用可能なレプリケーションメッセージを宛先クラスタにおけるクラスタメンバに送る方法である。
【０１２２】
実施例によれば、上記利用可能なレプリケーションメッセージが１つ以上のデータ変更を含むことを可能にし、上記１つ以上のデータ変更のリソースは、ソースクラスタにおいてガーベッジコレクトされていない、方法である。
【０１２３】
実施例によれば、１つ以上のエントリを含むレプリケーションレコードを宛先クラスタを介して維持し、各々のエントリは、宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、方法である。
【０１２４】
実施例によれば、１つ以上のレプリケーションメッセージが、レプリケーションレコードに基づいて宛先クラスタにおいて受取られて成功裏に処理されたか否かを判断する方法である。
【０１２５】
実施例によれば、宛先クラスタにおけるクラスタメンバが１つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答を、宛先クラスタにおけるクラスタメンバを介してソースクラスタにおけるクラスタメンバに送る方法である。
【０１２６】
実施例によれば、ソースクラスタにおける上記クラスタメンバが、１つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作することを可能にする方法である。
【０１２７】
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記ステップはさらに、上記１つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記１つ以上のレプリケーションメッセージを無視するステップを備える。
【０１２８】
実施例によれば、ソースクラスタにおける上記別のクラスタメンバが、上記別のクラスタメンバが失われる前はパーティションの所有者であったシステムである。
【０１２９】
実施例によれば、ソースクラスタにおける上記クラスタメンバが、上記パーティションのためのジャーナルキャッシュにおける１つ以上のジャーナルエントリを処理するように動作する方法である。
【０１３０】
実施例によれば、ソースクラスタから上記１つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージが、ユニークな識別子（ＩＤ）に関連付けられるシステムである。
【０１３１】
実施例によれば、ソースクラスタにおける上記クラスタメンバが、利用可能なレプリケーションメッセージを宛先クラスタにおけるクラスタメンバに送るように動作するシステムである。
【０１３２】
実施例によれば、上記利用可能なレプリケーションメッセージが、１つ以上のデータ変更を含み、上記１つ以上のデータ変更のリソースが、ソースクラスタにおいてガーベッジコレクトされていない、システムである。
【０１３３】
実施例によれば、宛先クラスタが、１つ以上のエントリを含むレプリケーションレコードを維持するように動作し、各々のエントリは、宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、システムである。
【０１３４】
実施例によれば、１つ以上のレプリケーションメッセージがレプリケーションレコードに基づいて宛先クラスタにおいて既に受取られて成功裏に処理されたか否かを判断するように宛先クラスタが動作するシステムである。
【０１３５】
実施例によれば、宛先クラスタにおけるクラスタメンバが１つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答をソースクラスタにおけるクラスタメンバに送るように宛先クラスタにおけるクラスタメンバが動作するシステムである。
【０１３６】
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して１つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記１つ以上のレプリケーションメッセージは、１つ以上のデータ変更を含み、上記ステップはさらに、上記１つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記１つ以上のレプリケーションメッセージを無視するステップを備える。
【０１３７】
実施例によれば、分散データグリッドにおいてクラスタ間でデータを同期させることをサポートするための方法であって、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために１つ以上のユニークな識別子（ＩＤ）を使用するステップと、第１のクラスタを介して第２のクラスタから第１のレプリケーションメッセージを受取るステップとを備え、第１のレプリケーションメッセージは、第２のクラスタが新たなクラスタであることを示し、上記方法はさらに、第１のレプリケーションメッセージに続いて第２のクラスタから受取られる１つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第１のクラスタをリセットするステップを備える。
【０１３８】
実施例によれば、第２のクラスタがジャーナルキャッシュに関連付けられることを可能にするステップをさらに備え、ジャーナルキャッシュは、なされた順序で維持される１つ以上のデータ変更を格納する、方法である。
【０１３９】
実施例によれば、各々のレプリケーションメッセージに上記データ変更を含めるステップをさらに備える方法である。
【０１４０】
実施例によれば、１つ以上のユニークなＩＤが単調にインクリメントされるのみであることを可能にするステップをさらに備える方法である。
【０１４１】
実施例によれば、第１のレプリケーションメッセージがリセットフラグを含むことを可能にするステップをさらに備える方法である。
【０１４２】
実施例によれば、第２のクラスタが、シャットダウンされる前に１つ以上のデータ変更を第１のクラスタに送ることを可能にするステップをさらに備える方法である。
【０１４３】
実施例によれば、第２のクラスタのうちの１つが再起動し、新たなクラスタが加入して第２のクラスタを引き継ぐことを可能にするステップをさらに備える方法である。
【０１４４】
実施例によれば、第１のクラスタにレコードを維持するステップをさらに備え、レコードは、第２のクラスタから受取られた最新のメッセージのためのユニークなＩＤを示す、方法である。
【０１４５】
実施例によれば、第１のレプリケーションメッセージを受取った後に、第１のクラスタに維持されたレコードをリフレッシュするステップをさらに備える方法である。
【０１４６】
実施例によれば、第１のレプリケーションメッセージおよび第１のレプリケーションメッセージに続く上記１つ以上のレプリケーションメッセージを処理するステップをさらに備える方法である。
【０１４７】
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために１つ以上のユニークな識別子（ＩＤ）を使用するステップと、第１のクラスタを介して第２のクラスタから第１のレプリケーションメッセージを受取るステップとを備え、第１のレプリケーションメッセージは、第２のクラスタが新たなクラスタであることを示し、上記ステップはさらに、第１のレプリケーションメッセージに続いて第２のクラスタから受取られる１つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第１のクラスタをリセットするステップを備える。
【０１４８】
実施例によれば、第２のクラスタにおけるジャーナルキャッシュが、なされた順序で維持される１つ以上のデータ変更を格納するシステムである。
【０１４９】
実施例によれば、各々のレプリケーションメッセージが上記データ変更を含むシステムである。
【０１５０】
実施例によれば、１つ以上のユニークなＩＤが単調にインクリメントされるのみであるシステムである。
【０１５１】
実施例によれば、第１のレプリケーションメッセージがリセットフラグを含むシステムである。
【０１５２】
実施例によれば、第２のクラスタが、シャットダウンされる前に１つ以上のデータ変更を第１のクラスタに送るように動作するシステムである。
【０１５３】
実施例によれば、第２のクラスタのうちの１つが再起動し、新たなクラスタが加入して第２のクラスタを引き継ぐことを分散データグリッドが可能にするシステムである。
【０１５４】
実施例によれば、第１のクラスタがレコードを維持するように動作し、レコードは、第２のクラスタから受取られた最新のメッセージのためのユニークなＩＤを示す、システムである。
【０１５５】
実施例によれば、第１のクラスタが、第１のレプリケーションメッセージを受取った後にレコードをリフレッシュし、第１のレプリケーションメッセージおよび第１のレプリケーションメッセージに続く上記１つ以上のレプリケーションメッセージを処理するように動作するシステムである。
【０１５６】
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために１つ以上のユニークな識別子（ＩＤ）を使用するステップと、第１のクラスタを介して第２のクラスタから第１のレプリケーションメッセージを受取るステップとを備え、第１のレプリケーションメッセージは、第２のクラスタが新たなクラスタであることを示し、上記ステップはさらに、第１のレプリケーションメッセージに続いて第２のクラスタから受取られる１つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第１のクラスタをリセットするステップを備える。
【０１５７】
本発明は、１つ以上の従来の汎用または専用のデジタルコンピュータ、計算装置、マシンまたはマイクロプロセッサを用いて好都合に実現されることができ、これらは、本開示の教示に従ってプログラムされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能な記憶媒体を含む。ソフトウェア技術分野の当業者に明らかであるように、本開示の教示に基づいて、熟練したプログラマによって適切なソフトウェアコーディングが容易に準備され得る。
【０１５８】
いくつかの実施例において、本発明は、本発明のプロセスのうちのいずれかを実行するようにコンピュータをプログラムするために使用され得る命令を格納した記憶媒体またはコンピュータ読取可能な媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブおよび光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気または光カード、（分子メモリＩＣを含む）ナノシステム、または命令および／もしくはデータを格納するのに好適な任意のタイプの媒体またはデバイスを含み得るが、これらに限定されるものではない。
【０１５９】
本発明の上記の説明は、例示および説明の目的でなされてきた。それは、網羅的であることを意図したものではなく、開示されている厳密な形態に本発明を限定することを意図したものではない。多くの変形例および変更例が当業者に明らかであろう。変形例および変更例は、開示されている特徴の任意の関連の組み合わせを包含する。実施例は、本発明の原理およびその実際の適用を最もよく説明することによって、意図されている特定の用途に適したさまざまな変形例とともに、当業者がさまざまな実施例について本発明を理解することができるように選択され、記載されている。本発明の範囲は、以下の特許請求の範囲およびそれらの等価物によって定義されるよう意図されている。
【図１】
2016529629.tif 000003
【図２】
2016529629.tif 000004
【図３】
2016529629.tif 000005
【図４】
2016529629.tif 000006
【図５】
2016529629.tif 000007
【図６】
2016529629.tif 000008
【図７】
2016529629.tif 000009
【図８】
2016529629.tif 000010
【図９】
2016529629.tif 000011
【図１０】
2016529629.tif 000012
【図１１】
2016529629.tif 000013
【図１２】
2016529629.tif 000014
【図１３】
2016529629.tif 000015
【図１４】
2016529629.tif 000016
【図１５】
2016529629.tif 000017
【図１６】
2016529629.tif 000018
【図１７】
2016529629.tif 000019
【図１８】
2016529629.tif 000020
【図１９】
2016529629.tif 000021
【図２０】
2016529629.tif 000022
【手続補正書】
【提出日】平成28年4月19日(2016.4.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散データグリッドにおいてクラスタ間のデータの非同期型の同期をサポートするための方法であって、
ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される複数のデータ変更をパーティションレベルで追跡するステップと、
前記ソースクラスタにおけるクラスタメンバによってジャーナルキャッシュにおける複数のジャーナルエントリを処理するステップとを備え、前記ジャーナルキャッシュにおける前記ジャーナルエントリの各々は、前記複数のデータ変更のうちの１つに関連付けられ、前記方法はさらに、
前記ソースクラスタにおける前記クラスタメンバによって複数のグローバルユニークＩＤを生成するステップを備え、前記複数のグローバルユニークＩＤの各々は、前記複数のデータ変更のうちの１つに関連付けられ、前記方法はさらに、
前記ソースクラスタにおける前記クラスタメンバを介して複数のレプリケーションメッセージおよび前記複数のグローバルユニークＩＤを宛先クラスタに送るステップを備え、前記レプリケーションメッセージは、前記複数のデータ変更を備え、前記方法はさらに、
前記宛先クラスタにおけるクラスタメンバによって受取られた前記複数のデータ変更のうちの少なくとも１つを処理するステップと、
前記宛先クラスタにおける前記クラスタメンバによってレプリケーションレコードを生成するステップとを備え、前記レプリケーションレコードは、前記受取られた複数のデータ変更のうちの前記少なくとも１つの処理の成功を示し、前記方法はさらに、
前記宛先クラスタにおける前記クラスタメンバを介して確認メッセージを前記ソースクラスタに送るステップを備え、前記確認メッセージは、前記受取られた複数のデータ変更のうちの前記少なくとも１つの処理の成功を示す、方法。
【請求項２】
マシン読取可能な形態でプログラム命令を備えるコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されたときに前記コンピュータシステムに請求項１に記載の方法を実行させる、コンピュータプログラム。
【請求項３】
分散データグリッドにおいてクラスタ間のデータの非同期型の同期をサポートするためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、前記分散データグリッドは、以下のステップを実行するように動作し、前記以下のステップは、
ソースクラスタにおける１つ以上のユーザキャッシュに対して適用される複数のデータ変更をパーティションレベルで追跡するステップと、
前記ソースクラスタにおけるクラスタメンバによってジャーナルキャッシュにおける複数のジャーナルエントリを処理するステップとを備え、前記ジャーナルキャッシュにおける前記ジャーナルエントリの各々は、前記複数のデータ変更のうちの１つに関連付けられ、前記以下のステップはさらに、
前記ソースクラスタにおける前記クラスタメンバによって複数のグローバルユニークＩＤを生成するステップを備え、前記複数のグローバルユニークＩＤの各々は、前記複数のデータ変更のうちの１つに関連付けられ、前記以下のステップはさらに、
前記ソースクラスタにおける前記クラスタメンバを介して複数のレプリケーションメッセージおよび前記複数のグローバルユニークＩＤを宛先クラスタに送るステップを備え、前記レプリケーションメッセージは、前記複数のデータ変更を備え、前記以下のステップはさらに、
前記宛先クラスタにおけるクラスタメンバによって受取られた前記複数のデータ変更のうちの少なくとも１つを処理するステップと、
前記宛先クラスタにおける前記クラスタメンバによってレプリケーションレコードを生成するステップとを備え、前記レプリケーションレコードは、前記受取られた複数のデータ変更のうちの前記少なくとも１つの処理の成功を示し、前記以下のステップはさらに、
前記宛先クラスタにおける前記クラスタメンバを介して確認メッセージを前記ソースクラスタに送るステップを備え、前記確認メッセージは、前記受取られた複数のデータ変更のうちの前記少なくとも１つの処理の成功を示す、システム。
【請求項４】
前記分散データグリッドは、前記ソースクラスタにおける前記クラスタメンバが前記ソースクラスタにおける前記１つ以上のユーザキャッシュのパーティションの所有者であることを可能にするように動作する、請求項３に記載のシステム。
【請求項５】
前記複数のグローバルユニークＩＤの各々は、前記複数のデータ変更に関連付けられる順序で単調にインクリメントされる、請求項３または４に記載のシステム。
【請求項６】
前記分散データグリッドは、前記ソースクラスタにおける前記クラスタメンバが、前記宛先クラスタとの同期をサポートするために前記ソースクラスタにおける他のクラスタメンバと並行して動作するように動作する、請求項３〜５のいずれか１項に記載のシステム。
【請求項７】
前記ジャーナルエントリの各々は、パーティションと、前記ジャーナルエントリのそれぞれに関連付けられた前記データ変更のための前記パーティションの順序番号とを、少なくとも特定する、請求項３〜６のいずれか１項に記載のシステム。
【請求項８】
前記分散データグリッドは、
前記ソースクラスタにおける前記クラスタメンバによって前記宛先クラスタにおける前記クラスタメンバから前記確認メッセージを受取るように動作し、
前記受取られた確認メッセージの内容に基づいてガーベッジコレクションを実行するように動作する、請求項３〜７のいずれか１項に記載のシステム。
【請求項９】
前記ガーベッジコレクションは、前記受取られた確認メッセージの前記内容に関連付けられた各々のジャーナルエントリを前記ジャーナルキャッシュから除去することを備える、請求項８に記載のシステム。
【請求項１０】
前記分散データグリッドは、宛先クラスタに書込む前記ソースクラスタにおける各スレッドに有限状態マシンを関連付けるように動作する、請求項３〜９のいずれか１項に記載のシステム。
【請求項１１】
前記レプリケーションレコードは、前記宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、請求項３〜１０のいずれか１項に記載のシステム。
【請求項１２】
前記分散データグリッドは、前記宛先クラスタに維持された前記レプリケーションレコードに基づいて前記ソースクラスタにおいてフェイルオーバをサポートするように動作する、請求項１１に記載のシステム。
【国際調査報告】
2016529629.tif 000023
2016529629.tif 000024