JP2016529629A - 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法 - Google Patents

分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP2016529629A
JP2016529629A JP2016537774A JP2016537774A JP2016529629A JP 2016529629 A JP2016529629 A JP 2016529629A JP 2016537774 A JP2016537774 A JP 2016537774A JP 2016537774 A JP2016537774 A JP 2016537774A JP 2016529629 A JP2016529629 A JP 2016529629A
Authority
JP
Japan
Prior art keywords
cluster
data
partition
cache
data changes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016537774A
Other languages
English (en)
Other versions
JP6225262B2 (ja
Inventor
オリバー,ブライアン
ペラルタ,パトリック
マッキン,ポール
アーリス,ノア
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2016529629A publication Critical patent/JP2016529629A/ja
Application granted granted Critical
Publication of JP6225262B2 publication Critical patent/JP6225262B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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 persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2097Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

システムおよび方法は、分散データグリッドにおいてクラスタ間でデータを同期させるためにパーティションレベルジャーナリングをサポートし得る。当該システムは、ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付け得て、上記1つ以上のユーザキャッシュは、複数のパーティションに分割される。さらに、当該システムは、上記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータ変更を取込み得て、リモートクラスタとの同期をサポートするジャーナルキャッシュに上記1つ以上のデータ変更を格納し得る。

Description

著作権表示:
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合にはいかなるときも全ての著作権を保有する。
発明の分野:
本発明は、一般にコンピュータシステムに関し、特に分散データグリッドにおいてフェデレーテッド(federated)キャッシングをサポートすることに関する。
背景:
現代のコンピューティングシステム、特に大規模組織および大企業によって利用されるコンピューティングシステムは、サイズおよび複雑さが増大し続けている。特に、インターネットアプリケーションなどの分野では、何百万人ものユーザが同時に当該アプリケーションにアクセスすることができるべきであるという期待があり、これは事実上、ユーザによって生成および消費される内容の量および当該内容に関わるトランザクションの指数関数的な増大につながっている。また、このような動きは、データベースおよびメタデータストアに対するトランザクションコールの数の対応する増大をもたらし、当該需要に応える能力には限界がある。
これが、本発明の実施例が対処しようとする一般的領域である。
概要:
分散データグリッドにおいてクラスタ間でデータを同期させるためにパーティションレベルジャーナリングをサポートし得るシステムおよび方法が、本明細書に記載されている。当該システムは、ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付け得て、上記1つ以上のユーザキャッシュは、複数のパーティションに分割される。さらに、当該システムは、上記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータ変更を取込み得て、リモートクラスタとの同期をサポートするジャーナルキャッシュに上記1つ以上のデータ変更を格納し得る。
システムおよび方法は、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートし得る。当該システムは、ソースクラスタにおける1つ以上のユーザキャッシュに対して適用される1つ以上のデータ変更をパーティションレベルで追跡し得る。さらに、ソースクラスタにおける1つ以上のクラスタメンバは、1つ以上のレプリケーションメッセージを1つ以上の宛先クラスタに送り得て、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含む。次いで、1つ以上の宛先クラスタは、受取られた1つ以上のデータ変更を処理し得る。
システムおよび方法は、分散データグリッドにおいて自律型クラスタ間の同期中にフェイルオーバをサポートし得る。当該システムは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに当該ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にする。次いで、宛先クラスタにおけるクラスタメンバは、ソースクラスタにおける上記クラスタメンバから1つ以上のレプリケーションメッセージを受取り得て、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含む。さらに、上記1つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバは、上記1つ以上のレプリケーションメッセージを無視し得る。
システムおよび方法は、分散データグリッドにおいてクラスタ間でデータを同期させるために、リセット可能な確認応答(acknowledgement)をサポートし得る。当該システムは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために1つ以上のユニークな識別子(ID)を使用し得る。第1のクラスタは、第2のクラスタから第1のレプリケーションメッセージを受取り得て、レプリケーションメッセージは、当該レプリケーションメッセージが新たなクラスタからのものであることを示す。次いで、当該システムは、第1のレプリケーションメッセージに続いて第2のクラスタから受取られる1つ以上のレプリケーションメッセージを所有する際の冪等性(idempotence)を維持するように第1のクラスタをリセットし得る。
本発明のさまざまな実施例に係るデータグリッドクラスタの図である。 本発明の実施例に係る、分散データグリッドにおいてデータ変更を取込む図を示す。 本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートする図を示す。 本発明の実施例に係る、分散データグリッドにおいてジャーナルキャッシュのクラスタ全体にわたる表示をサポートする図を示す。 本発明の実施例に係る、分散データグリッドにおいてパーティションレベルジャーナリングをサポートするために単一のトランザクションを実行する図を示す。 本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートするための例示的なフローチャートを示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートする図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を開始させる図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を実行する図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期をさらに実行する図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期中のソースクラスタにおけるクラスタストレージメンバ上での障害の図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期中にソースクラスタにおいてフェイルオーバを実行する図を示す。 本発明の実施例に係る、ソースクラスタにおけるフェイルオーバ後に分散データグリッドにおいて自律型クラスタ間の非同期型の同期をサポートする図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期のためのフェイルオーバをサポートするための例示的なフローチャートを示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートする図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートするための例示的なフローチャートを示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用する図を示す。 本発明の実施例に係る、有限状態マシンにおけるさまざまな状態の図を示す。 本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用するための例示的なフローチャートを示す。
詳細な説明:
分散データグリッドにおいてフェデレーテッドキャッシングをサポートし得るシステムおよび方法が本明細書に記載されている。
分散データグリッド
実施例によれば、分散またはクラスタ化された環境内で情報および計算などの関連の動作を管理するために協働する複数のコンピュータサーバを備えるシステムが、本明細書では「データグリッドクラスタ」または「データグリッド」と称される。データグリッドクラスタは、サーバ全体で共有されるアプリケーションオブジェクトおよびデータを管理するために使用され得る。好ましくは、データグリッドクラスタは、遅い応答時間、高いスループット、予測可能なスケーラビリティ、連続的可用性、および情報信頼性を有するべきである。これらの特性の結果、データグリッドクラスタは、計算集約的でステートフルな中間層アプリケーションでの使用に非常に適している。データグリッドクラスタのいくつかの例、例えばOracle Coherenceデータグリッドクラスタは、より高い性能を達成するために情報をインメモリで格納し得て、当該情報のコピーを複数のサーバにわたって同期させ続ける際に冗長性を利用し得て、それによって、サーバ障害が発生した場合のシステムの回復力およびデータの可用性を保証する。例えば、Coherenceは、信頼できる、非常にスケーラブルなピアツーピアクラスタリングプロトコルに加えて、レプリケートおよび分散された(パーティション化された)データ管理およびキャッシングサービスを提供する。
インメモリデータグリッドは、協働するいくつかのサーバにデータを分散させることによってデータストレージおよび管理機能を提供し得る。データグリッドは、アプリケーションサーバと同一の層において、またはアプリケーションサーバ内で実行されるミドルウェアであってもよい。データグリッドは、データの管理および処理を提供し得て、グリッド内でデータが位置する場所に当該処理を送ることもし得る。また、インメモリデータグリッドは、サーバが機能しなくなるかまたはネットワークから切離された際に、そのクラスタ化されたデータ管理サービスを自動的かつ透過的にフェイルオーバして再分散させることによって、単一障害点を排除し得る。新たなサーバが追加されるか、または機能しなくなったサーバが再起動されると、データグリッドは、クラスタを自動的に加入させ得て、サービスは、それに対して再びフェイルオーバされ得て、クラスタ負荷を透過的に再分散させる。また、データグリッドは、ネットワークレベルの耐障害性特徴および透過的なソフト再起動機能を含み得る。
実施例によれば、データグリッドクラスタの機能は、異なるクラスタサービスを使用することに基づいている。クラスタサービスは、ルートクラスタサービス、パーティション化されたキャッシュサービス、およびプロキシサービスを含み得る。データグリッドクラスタ内で、各々のクラスタノードは、クラスタサービスの提供および消費の両方の観点から、いくつかのクラスタサービスに関与し得る。各々のクラスタサービスは、データグリッドクラスタ内でサービスをユニークに特定するサービス名と、クラスタサービスが何をすることができるかを定義するサービスタイプとを有する。データグリッドクラスタにおいて各々のクラスタノード上で実行されるルートクラスタサービス以外に、各々のサービスタイプの複数の名前を付けられたインスタンスが存在し得る。サービスは、ユーザによって構成されてもよく、またはサービスのデフォルトセットとしてデータグリッドクラスタによって提供されてもよい。
図1は、本発明のさまざまな実施例に係るデータグリッドクラスタの図である。図1に示されるように、データグリッドクラスタ100、例えばOracle Coherenceデータグリッドは、さまざまなクラスタサービス111〜116を実行させるクラスタノード101〜106などの複数のクラスタメンバ(またはサーバノード)を含む。また、データグリッドクラスタ100を構成するために、キャッシュコンフィギュレーションファイル110が使用され得る。
実施例によれば、データグリッドクラスタ100は、並列非同期型のプッシュレプリケーション技術に基づいてフェデレーテッドデータ特徴をサポートし得る。フェデレーテッドデータ特徴は、(場合によっては異なる物理的場所において)データグリッドクラスタ間でデータを同期させることを可能にし、障害回復をサポートすることに有益であり、24×7の可用性を提供し、地方のユーザの待ち時間を減少させる。
同期のためのパーティションレベルジャーナリング
図2は、本発明の実施例に係る、分散データグリッドにおいてデータ変更を取込む図を示す。図2に示されるように、分散データグリッド200は、1つ以上のユーザキャッシュ201をサポートし得る。また、1つ以上のユーザキャッシュ201は、クラスタ200全体に均等に分散され得る複数のパーティション、例えばパーティションI〜III 211〜213に分割され得る。
さらに、キャッシュエントリキーに対してハッシュを実行することに基づいて、分散データグリッド200におけるパーティションにユーザデータが割当てられ得る。代替的に、ユーザによって実現されるインターフェースを介して定義され得るキャッシュエントリに関連付けられるキーに対してハッシュを実行することに基づいて、パーティションにユーザデータが割当てられてもよい。また、ユーザデータは、分散データグリッド200におけるパーティションに明示的に割当てられてもよい。
本発明の実施例によれば、パーティション化された分散クラスタ200は、1つ以上のユーザキャッシュ201に対してなされるデータ変更を、それらがなされた順序で取込み得る。図2に示されるように、1つ以上のユーザキャッシュ201に対して適用されるデータ変更210は、(K1,V1)〜(K11,V11)の順序で表わされることができる。これらのデータ変更の中で、(K1,V1)、(K4,V4)および(K5,V5)は、パーティションI 211に関連し、(K2,V2)、(K3,V3)、(K6,V6)、(K10,V10)および(K11,V11)は、パーティションII 212に関連し、(K7,V7)、(K8,V8)および(K9,V9)は、パーティションIII 213に関連する。
図3は、本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートする図を示す。図3に示されるように、分散データグリッド300は、複数のパーティション(例えばパーティションI〜III 311〜313)に分割され得る1つ以上のユーザキャッシュ301をサポートする。
分散データグリッド300は、1つ以上のユーザキャッシュ301に適用されるデータ変更、例えば(K1,V1)〜(K11,V11)を、それらがなされた順序で取込み得る。また、これらのデータ変更は、リモートクラスタとの同期に使用され得るジャーナルキャッシュ302に配置され得る。
本発明の実施例によれば、当該システムは、ジャーナルキャッシュ302に格納された各々のデータ変更のためのグローバルユニーク識別子(ID)320を生成し得る。(例えば整数を使用する)複数の要素を含み得るグローバルユニークID 320は、データ変更がなされるソースパーティション、および、(他のデータ変更に関しても)ソースパーティションにおいてこのようなデータ変更がなされる順序を特定し得る。
例えば、例示的なグローバルユニークID 320は、(Pi,Rj)のフォーマットで表わされることができ、Piは、ソースパーティションを表わし、Rjは、ソースパーティションに対する特定のデータ変更の順序を表わす。
図3に示されるように、パーティションI 311に関連するデータ変更(K1,V1)、(K4,V4)および(K5,V5)は、グローバルユニークID(P1,R1)、(P1,R2)および(P1,R3)をそれぞれ割当てられる。同様に、パーティションII 312に関連するデータ変更(K2,V2)、(K3,V3)、(K6,V6)、(K10,V10)および(K11,V11)は、グローバルユニークID(P2,R1)、(P2,R2)、(P2,R3)、(P2,R4)および(P2,R5)をそれぞれ割当てられる。また、パーティションIII 313に関連するデータ変更(K7,V7)、(K8,V8)および(K9,V9)は、グローバルユニークID(P3,R1)、(P3,R2)および(P3,R3)をそれぞれ割当てられる。
さらに、グローバルユニークID 320の各々は、ジャーナルキャッシュ302におけるエントリのためのキーとして使用され得る。したがって、この複数要素キーは、クラスタ300内でのいかなる入力/出力(IO)および/または同期なしにシステムがクラスタ全体にわたってユニークなIDを生成することを可能にする。
図4は、本発明の実施例に係る、分散データグリッドにおいてジャーナルキャッシュのクラスタ全体にわたる表示をサポートする図を示す。図4に示されるように、分散データグリッド400は、複数のクラスタメンバ(例えばクラスタノード401〜408)を含み得る。
クラスタノード401〜408の各々は、1つ以上のパーティションの所有者であり得る。例えば、クラスタノード401は、パーティションP1〜P3の所有者であり、クラスタノード402は、パーティションP4〜P6の所有者であり、クラスタノード403は、パーティションP7〜P9の所有者であり、クラスタノード404は、パーティションP10〜P12の所有者であり、クラスタノード405は、パーティションP13〜P15の所有者であり、クラスタノード406は、パーティションP16〜P18の所有者であり、クラスタノード407は、パーティションP19〜P21の所有者であり、クラスタノード408は、パーティションP22〜P24の所有者である。
本発明の実施例によれば、ジャーナルキャッシュは、パーティション化されたキャッシュに基づいて、例えばユーザキャッシュを含むパーティションを活用することによって、実現され得る。さらに、ユーザは、ユーザキャッシュへのアクセスと同様の態様でジャーナルキャッシュにアクセスし得る。図4に示されるように、ユーザは、クラスタノード401〜408のうちのいずれか1つから(すなわちユーザキャッシュ411〜418およびジャーナルキャッシュ421〜428を介して)ユーザキャッシュおよびジャーナルキャッシュにアクセスし得る。
図5は、本発明の実施例に係る、分散データグリッドにおいてパーティションレベルジャーナリングをサポートするために単一のトランザクションを実行する図を示す。図5に示されるように、分散データグリッド500は、ユーザキャッシュ501と、ジャーナルキャッシュ502とを含み得る。
本発明の実施例によれば、分散データグリッド500は、ユーザキャッシュ501に対してなされたデータ変更を取込み、リモートクラスタとの同期に使用され得るジャーナルキャッシュ502にこれらのデータ変更を配置し得る。
例えば、ユーザキャッシュ501は、(K1,V1)、(K2,V2)、(K3,V3)および(K4,V4)などのいくつかのデータ変更を既に行っている可能性がある。これらの取込まれたデータ変更は、グローバルユニークID(P1,R1)、(P2,R1)、(P2,R2)および(P1,R2)をそれぞれ使用してジャーナルキャッシュ502に格納され得る。これらのグローバルユニークIDは、(K1,V1)がパーティションP1に対して適用される第1のデータ変更であり、(K2,V2)がパーティションP2に対して適用される第1のデータ変更であり、(K3,V3)がパーティションP2に対して適用される第2のデータ変更であり、(K4,V4)がパーティションP2に対して適用される第2のデータ変更であることを示す。
また、当該システムは、異なるパーティションのためのデータ変更の総数を維持するシーケンステーブル503を活用し得る。図5に示されるように、シーケンステーブル503は、パーティションP1もP2も2つのデータ変更を行ったことを示す。
本発明の実施例によれば、分散データグリッド500は、パーティションのうちのいずれかに対する新たに取込まれたデータ変更のためのユニークなIDを素早く生成するためにシーケンステーブル503を使用し得る。
図5に示されるように、ユーザは、ユーザキャッシュ501におけるパーティションP1に対して適用されるデータ変更、例えば「(K5,V5)をput」を行い得る。当該システムは、このデータ変更を取込み、最新のデータ変更のためのユニークなID、すなわち(P1,R3)を素早く生成し得る。なぜなら、データ変更がパーティションP1に対して適用される第3のデータ変更であるからである。
さらに、分散データグリッド500がジャーナルキャッシュ502にこのデータ変更を格納した後、パーティションP1が3回のデータ変更を行ったことを示すようにシーケンステーブル503が更新され得る。
図6は、本発明の実施例に係る、分散データグリッドにおいて同期のためにパーティションレベルジャーナリングをサポートするための例示的なフローチャートを示す。図6に示されるように、ステップ601において、当該システムは、ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付け得て、上記1つ以上のユーザキャッシュは、複数のパーティションに分割される。次いで、ステップ602において、当該システムは、上記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータを取込み得る。さらに、ステップ603において、当該システムは、1つ以上のリモートクラスタとの同期をサポートするジャーナルキャッシュに上記1つ以上のデータ変更を格納し得る。
自律型クラスタ間の並列非同期型の同期
図7は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートする図を示す。図7に示されるように、分散データグリッド700は、ソースクラスタ701から宛先クラスタ702までなど、自律型クラスタ間でデータ変更を同期させ得る。さらに、当該システムは、パーティション化されたソースクラスタ701におけるさまざまなユーザキャッシュに適用されるデータ変更をパーティションレベルで追跡し得る。
本発明の実施例によれば、異なるパーティションに対するデータ変更を1つ以上の宛先クラスタ、例えば宛先クラスタ702におけるクラスタメンバに同期させるために、ソースクラスタ701における異なるクラスタメンバは並列的に動作し得る。
クラスタレベルでは、ソースクラスタ701における複数のクラスタメンバは、データ変更を宛先クラスタ702における複数のクラスタメンバに並列的に(すなわち多対多の関係で)同期させ得る。パーティションレベルでは、データ変更の同期は、常にソースおよび宛先を伴う(すなわち一対一の関係)。
本発明の実施例によれば、ソースクラスタ701におけるクラスタメンバおよび宛先クラスタ702におけるクラスタメンバは、異なるパーティションの所有者であるクラスタストレージメンバであり得る。代替的に、クラスタメンバは、異なるパーティションの所有者に関連付けられる他のクラスタノードであってもよい。
図7に示されるように、パーティションI 731の所有者であるクラスタストレージメンバ711は、パーティションI 731のためのジャーナルエントリを処理し得て、情報を宛先クラスタ702におけるクラスタストレージメンバ721に送る。また、パーティションII 732の所有者であるクラスタストレージメンバ712は、パーティションII 732のためのジャーナルエントリを処理し得て、パーティションIII 733の所有者であるクラスタストレージメンバ713は、パーティションIII 733のためのジャーナルエントリを処理し得る。クラスタストレージメンバ712もクラスタストレージメンバ713も、同期情報を宛先クラスタ702におけるクラスタストレージメンバ722に送り得る。
本発明の実施例によれば、同期プロセスは、異なるエンティティが関与する観点から非同期型であり得る。これらのエンティティは、ジャーナルに取込まれるデータ変更を生成するクライアントと、宛先クラスタ702にデータ変更を送るソースクラスタ701と、データ変更の受取りおよび処理の成功を示す確認応答を送る宛先クラスタ702とを含み得る。
図8は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を開始させる図を示す。図8に示されるように、分散データグリッド800におけるソースクラスタ801におけるパーティションP1を所有するクラスタストレージメンバ803は、ジャーナルレコード805におけるパーティションP1のためのジャーナルエントリを処理し得て、1つ以上のレプリケーションメッセージ810を宛先クラスタ802におけるクラスタストレージメンバ804に送り得る。例えば、レプリケーションメッセージ810は、ソースクラスタ801におけるパーティションP1に対してなされるデータ変更(1〜3)、(4〜6)および(7〜9)を含み得る。
本発明の実施例によれば、当該システムは、分散データグリッド800においてソースクラスタ801と宛先クラスタ802との間でレプリケーションメッセージ810をやりとりするためにユニークなIDを使用し得る。例えば、ユニークなIDは、ソースクラスタ801における特定のパーティション(例えばパーティションP1)に対して対応するデータ変更がなされる順序で単調にインクリメントされてもよい。したがって、当該システムは、同期動作が冪等的であることを保証することができる。
また、宛先クラスタ802は、宛先クラスタ802における各々のパーティションについて受取られて成功裏に処理された最新のデータ変更を示すレコード806を維持し得る。
図8に示されるように、パーティション「1」についてエントリ「0」を有するレコード806は、宛先クラスタ804におけるクラスタストレージノード804がパーティションP1についていかなるデータ変更も受取っておらず、成功裏に処理していないことを示す。また、レコード806は、他のパーティションに関する情報を格納するためにより多くのエントリを維持し得る。
図9は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期を実行する図を示す。図9に示されるように、分散データグリッド900におけるソースクラスタ901におけるパーティションP1を所有するクラスタストレージメンバ903は、ジャーナルレコード905におけるパーティションP1のためのジャーナルエントリを処理し得て、1つ以上のレプリケーションメッセージ910を宛先クラスタ902におけるクラスタストレージメンバ904に送り得る。
宛先クラスタ902におけるクラスタストレージメンバ904がデータ変更(1〜3)および(4〜6)を受取って成功裏に処理した後、クラスタストレージメンバ904は、確認応答(ACK)920をソースクラスタ903に返し得る。また、当該システムは、データ変更(6)が、ソースクラスタ901におけるパーティションP1についての、宛先クラスタ902において受取られて成功裏に処理された最新のデータ変更であることを示すように、レプリケーションレコード906を更新し得る。
また、宛先クラスタ902がデータ変更(7〜9)を処理している間に、クラスタストレージメンバ903は、さらなるレプリケーションメッセージ910を宛先クラスタ902におけるクラスタストレージメンバ904に送り得る。例えば、レプリケーションメッセージ910は、データ変更(10〜12)を含み得る。
図10は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期をさらに実行する図を示す。図10に示されるように、分散データグリッド1000におけるソースクラスタ1001におけるパーティションP1を所有するクラスタストレージメンバ1003は、ジャーナルレコード1005におけるパーティションP1のためのジャーナルエントリを処理し得て、1つ以上のレプリケーションメッセージ1010を宛先クラスタ1002におけるクラスタストレージメンバ1004に送り得る。
宛先クラスタ1002におけるクラスタストレージメンバ1004がデータ変更(1〜3)および(4〜6)を受取って成功裏に処理したことを示す確認応答(ACK)1020をソースクラスタ1001におけるクラスタストレージメンバ1003が受取った後、クラスタストレージメンバ1003は、これらのデータ変更に関連付けられるリソースに対してガーベッジコレクションを実行し得る。
一方、宛先クラスタ1002におけるクラスタストレージメンバ1004がデータ変更(7〜9)を受取って成功裏に処理した後、クラスタストレージメンバ1004は、ソースクラスタ1001におけるクラスタストレージメンバ1003に確認応答(ACK)1020を返し得て、レプリケーションレコード1006を更新し得て、当該レプリケーションレコード1006は、データ変更(9)が、ソースクラスタ1001におけるパーティションP1についての、宛先クラスタ1002において受取られて成功裏に処理された最新のデータ変更であることを示す。
その間、クラスタストレージメンバ1004は、データ変更(10〜12)を処理し続け得る一方、クラスタストレージメンバ1003は、宛先クラスタ1002におけるクラスタストレージメンバ1004にさらなるレプリケーションメッセージ1010を送り得る。例えば、レプリケーションメッセージ1010は、取込まれたデータ変更(13〜16)を含み得る。
図11は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。図11に示されるように、ステップ1101において、当該システムは、ソースクラスタにおける1つ以上のユーザキャッシュに対して適用される1つ以上のデータ変更をパーティションレベルで追跡し得る。次いで、ステップ1102において、ソースクラスタにおけるクラスタストレージメンバは、1つ以上のレプリケーションメッセージを1つ以上の宛先クラスタに送り得て、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含む。さらに、ステップ1103において、1つ以上の宛先クラスタは、受取られた1つ以上のデータ変更を処理し得る。
自律型クラスタ間の非同期型の同期のためのフェイルオーバ
図12は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期中のソースクラスタにおけるクラスタストレージメンバ上での障害の図を示す。図12に示されるように、ソースクラスタ1201におけるパーティションP1を所有するクラスタストレージメンバ1203は、ジャーナルレコード1205におけるパーティションP1のためのジャーナルエントリを処理し得て、1つ以上のレプリケーションメッセージを宛先クラスタ1202におけるクラスタストレージメンバ1204に送り得る。
宛先クラスタ1202におけるクラスタストレージメンバ1204がデータ変更(10〜12)を受取って成功裏に処理した後、クラスタストレージメンバ1204は、確認応答(ACK)1220をソースクラスタ1201におけるクラスタストレージメンバ1203に返し得る。また、データ変更(12)が、宛先クラスタ1202において受取られて成功裏に処理されたソースクラスタ1201におけるパーティションP1に対する最新のデータ変更であることを示すように、クラスタストレージメンバ1204は、レプリケーションレコード1206を更新し得る。
図12に示されるように、ソースクラスタ1201におけるクラスタストレージメンバ1203は、障害に見舞われる可能性があり、確認応答(ACK)1220を受取る前に利用できなくなる可能性がある。したがって、ソースクラスタ1201におけるクラスタストレージメンバ1203は、宛先クラスタ1202がソースクラスタ1201におけるパーティションP1についてのデータ変更(10〜12)を既に受取って成功裏に処理したことが分からない可能性がある。
その間、宛先クラスタ1202におけるクラスタストレージメンバ1204は、ソースクラスタ1201におけるクラスタストレージメンバ1203に対する障害に対処する必要なく、受取られたデータ変更(13〜16)を処理し続け得る。
図13は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の非同期型の同期中にソースクラスタにおいてフェイルオーバを実行する図を示す。図13に示されるように、クラスタストレージメンバ1303が機能しなくなった後、クラスタストレージメンバ1305が、分散データグリッド1300におけるソースクラスタ1301におけるパーティションP1の所有者として引き継ぎ得る。
ソースクラスタ1301におけるパーティションP1を所有するクラスタストレージメンバ1305は、ジャーナルレコード1307におけるパーティションP1のためのジャーナルエントリを処理し得て、1つ以上のレプリケーションメッセージ1310を宛先クラスタ1302におけるクラスタストレージメンバ1304に送り得る。
クラスタストレージメンバ1303の障害により、ソースクラスタ1301におけるクラスタストレージメンバ1305は、宛先クラスタ1302におけるクラスタストレージメンバ1304がデータ変更(7〜12)および(17〜20)を受取って成功裏に処理したことが分からない可能性がある。
図13に示されるように、ソースクラスタ1301におけるクラスタストレージメンバ1305は、全ての利用可能なメッセージをクラスタストレージメンバ1304に送り得る。これらの利用可能なレプリケーションメッセージは、データ変更(7〜16)および(17〜20)を含み得て、データ変更(7〜16)および(17〜20)のリソースは、ソースクラスタ1301においてガーベッジコレクトされていない。
一方、ソースクラスタ1301におけるクラスタストレージメンバ1305は、宛先クラスタ1302がデータ変更(1〜6)を受取って成功裏に処理し、データ変更(1〜6)のリソースがガーベッジコレクトされていることが分かるので、ソースクラスタ1301におけるクラスタストレージメンバ1305は、データ変更(1〜6)を含む以前のレプリケーションメッセージを宛先クラスタ1302に送ることはない。
さらに、データ変更(13〜16)を成功裏に処理すると、ソースクラスタ1301におけるパーティションP1について受取られて成功裏に処理された最新のデータ変更がデータ変更(16)であることを示すように、クラスタストレージメンバ1304は、レプリケーションレコード1306を更新し得る。また、クラスタストレージメンバ1303は利用できないので、クラスタストレージメンバ1304は、確認応答(ACK)をソースクラスタ1303に返さないように選択し得る。
図14は、本発明の実施例に係る、ソースクラスタにおけるフェイルオーバ後に分散データグリッドにおいて自律型クラスタ間の非同期型の同期をサポートする図を示す。図14に示されるように、分散データグリッド1400におけるソースクラスタ1401におけるクラスタストレージメンバ1403が機能しなくなった後、ソースクラスタ1401におけるクラスタストレージメンバ1405が、パーティションP1の所有者として引き継ぎ得る。クラスタストレージメンバ1405は、ソースクラスタ1401におけるジャーナルレコード1407におけるパーティションP1のためのジャーナルエントリを処理し得る。
さらに、宛先クラスタ1402におけるクラスタストレージメンバ1404は、クラスタストレージメンバ1405からさまざまなレプリケーションメッセージを受取り得る。例えば、これらのレプリケーションメッセージは、データ変更(7〜16)および(17〜20)を含み得る。
次いで、クラスタストレージメンバ1404は、レプリケーションレコード1406をチェックし得て、当該レプリケーションレコード1406は、データ変更(16)が、ソースクラスタ1401におけるパーティションP1について受取られて成功裏に処理された最新のデータ変更であることを示す。したがって、クラスタストレージメンバ1404は、データ変更(7〜16) 1410を無視し得る。なぜなら、クラスタストレージメンバ1404は、これらのデータ変更を既に受取って成功裏に処理しているからである。また、宛先クラスタ1402におけるクラスタストレージメンバ1404がデータ変更(7〜16)を受取って成功裏に処理したことを示すために、クラスタストレージメンバ1404は、確認応答(ACK)1420をソースクラスタ1401におけるクラスタストレージメンバ1405に返し得る。
さらに、宛先クラスタ1402におけるクラスタストレージメンバ1404がデータ変更(17〜20)を受取って成功裏に処理した後、クラスタストレージメンバ1404は、確認応答(ACK)1420をソースクラスタ1401におけるクラスタストレージメンバ1405に返し得る。また、データ変更(20)が、ソースクラスタ1401におけるパーティションP1についての、宛先クラスタ1402において受取られて成功裏に処理された最新のデータ変更であることを示すように、クラスタストレージメンバ1404は、レプリケーションレコード1406を更新し得る。
図15は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の並列非同期型の同期をサポートするための例示的なフローチャートを示す。図15に示されるように、ステップ1501において、当該システムは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに当該ソースクラスタにおける(クラスタストレージメンバなどの)クラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にする。さらに、ステップ1502において、宛先クラスタにおけるクラスタメンバは、1つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取り得て、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含む。次いで、ステップ1503において、上記1つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバは、上記1つ以上のレプリケーションメッセージを無視し得る。
自律型クラスタ全体にわたるリセット可能な確認応答
本発明の実施例によれば、同期動作が冪等的であることを保証する目的で、分散データグリッドにおいてクラスタ間でメッセージをやりとりするためにユニークなIDが使用され得る。例えば、メッセージのやりとりのために使用されるユニークなIDは、単調にインクリメントされるのみであり得る。
図16は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートする図を示す。図16に示されるように、分散データグリッド1600におけるソースクラスタ1601は、1つ以上のデータ変更を宛先クラスタ1602に送った後にシャットダウンされ得る。
例えば、宛先クラスタ1602におけるクラスタストレージメンバ1604によって維持されるレプリケーションレコード1620は、データ変更(20)が、受取られて成功裏に処理されたパーティションP1に対する最新のデータ変更であることを示し得る。
図16に示されるように、新たなソースクラスタ1603が加入して引き継ぎ得る。代替的に、ソースクラスタ1601が、新たなソースクラスタ1603として再起動して再加入してもよい。どちらの場合にも、新たなソースクラスタ1603におけるクラスタストレージメンバ1605は、ソースクラスタ1603が新たなクラスタであることを示す1つ以上のレプリケーションメッセージ1610を宛先クラスタ1602に送り得る。例えば、レプリケーションメッセージ1610における第1のメッセージは、リセットフラグ1611を組み込んでいてもよい。
さらに、宛先クラスタ1602が、新たなクラスタであることを示すレプリケーションメッセージ1610を新たなソースクラスタ1603から受取った後、宛先クラスタ1602は、レプリケーションレコード1620をリフレッシュし得る。図16に示されるように、宛先クラスタ1602は、過去にパーティション1についてのデータ変更がないことを示すために、(強調表示された)エントリを(20)から(0)にリセットし得る。
したがって、当該システムは、クラスタ再起動中に冪等的なメッセージ処理を維持し、ID生成の過渡的な性質を維持するために、リセット可能な確認応答を使用し得る。
また、リセット可能な確認応答は、いくつかのエンティティを短時間で再起動させることができるが他のエンティティは長時間動作し得る分散システムにおいて、IDの永久的な持続を回避することに有益であり得る。
図17は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ全体にわたってリセット可能な確認応答をサポートするための例示的なフローチャートを示す。図17に示されるように、ステップ1701において、当該システムは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために1つ以上のユニークな識別子(ID)を使用し得る。次いで、ステップ1702において、第1のクラスタは、第2のクラスタから第1のレプリケーションメッセージを受取り得て、第1のレプリケーションメッセージは、第2のクラスタが新たなクラスタであることを示す。さらに、ステップ1703において、当該システムは、第1のレプリケーションメッセージに続いて第2のクラスタから受取られる1つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第1のクラスタをリセットし得る。
有限状態マシンを使用した並列非同期型の同期
本発明の実施例によれば、当該システムは、同期プロセスを制御するために(ノンブロッキング)有限状態マシンを使用し得る。有限状態マシンは、いずれの時点においても、可能な特定の個別の状況(または状態)の有限のセットのうちの1つにあるしかないソフトウェアマシンコンポーネントである。例えば、停止、再生、早送り、巻戻しおよび一時停止状態などの複数の状態を有する有限状態マシンとして、カセットプレーヤが表わされることができる。
さらに、当該システムは、有限状態マシンの定義を表現するためにモデルを使用し得る。例えば、このモデルは、公知の状態のセット、許容可能な遷移のセット、および動作のセットを含み得る。
遷移は、有限状態マシンにおいて1つの状態から別の状態に変化するプロセスである。有限状態マシンの遷移は、予め定義され得る。例えば、有限状態マシンでは、明示的に定義された遷移のみが許容されてもよい。
動作は、有限状態マシンによって実行されるアルゴリズムおよびプロセスを表わす。動作は、遷移中、ある状態に入るとき(すなわち以前の状態から遷移するとき)、ある状態から出るとき(すなわち新たな状態に遷移するとき)などの異なる段階で実行され得る。また、ある状態に入るときに実行される動作は、さらなる遷移を起こさせ得る。
有限状態マシンは、システムによって各々のイベントが提供されるときに遷移を行うブロッキング有限状態マシンであってもよく、または、イベントを提供するシステムに対して独立して同時に遷移を行うノンブロッキング有限状態マシンであってもよい。
ノンブロッキング有限状態マシンは、イベントを内部で処理し得て、当該イベントは、その後の評価および起こり得る実行に備えてキューに入れられる。さらに、ノンブロッキング有限状態マシンは、遷移イベント、遅延遷移イベント、合体イベント、および後続イベントなどの異なるタイプのイベントをサポートし得る。
遷移イベントは、特定の状態への遷移を要求する単純なイベントである。他の遷移のように、状態マシンが要求に従う立場にある場合にのみ、当該遷移が起こり得る。
遅延遷移イベントは、遷移イベントと同様である。また、遅延遷移イベントは、コンフィギュラブルな遅延した実行を可能にする。例えば、遅延遷移イベントは、ある時点における公知の状態への遷移を定義し得る。
合体イベントは、別のイベントのラッパである。例えば、同一のイベントが既にキューに存在する場合に、新たなイベントが既存のイベントと合体され得る。また、合体イベントは、FIRSTおよびMOST_RECENTなどの異なるパラメータをとり得る。FIRSTは、最初に投入されたイベントが処理されることを示し、MOST_RECENTは、最新の投入されたイベントが処理されることを示す。
後続イベントは、それより前に他のイベントが投入されていない場合に実行されるであろう別のイベントをラップする。これらのイベントは、タイミングがとられた遅延で有限状態マシンに投入され、他のイベントがこのイベントをプリエンプトすることを可能にする。
図18は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用する図を示す。図18に示されるように、分散データグリッド1800におけるソースクラスタ1801は、さまざまなユーザデータ変更を格納するためにジャーナルキャッシュ1810を使用し得て、当該ユーザデータ変更の各々は、ユニークな識別子(ID)が割当てられ得る。
本発明の実施例によれば、分散データグリッド1800は、ローカルソースクラスタ1801と1つ以上の宛先クラスタ、例えばリモート(宛先)クラスタA〜B 1802〜1803との間のユーザデータ変更の並列非同期型の同期をサポートする。
図18に示されるように、スレッド1804は、ジャーナルキャッシュ1810からユーザデータ変更を読取り得て、ソースクラスタ1801における取込まれたユーザデータ変更を宛先クラスタA 1802に書込む(または同期させる)ことを担当し得る。
また、スレッド1805は、ジャーナルキャッシュ1810からユーザデータ変更を読取り得て、ソースクラスタ1801における取込まれたユーザデータ変更を宛先クラスタB 1803に書込む(または同期させる)ことを担当し得る。
さらに、ガーベッジコレクション(GC)スレッド1806は、異なる宛先クラスタA〜B 1802〜1803に既に書込まれている、または同期されているユーザデータ変更を削除することを担当し得る。
図18に示されるように、スレッド1804は、有限状態マシン1814に関連付けられ得て、スレッド1805は、有限状態マシン1815に関連付けられ得る。有限状態マシン1814〜1815の各々は、同期プロセスを制御するノンブロッキング有限状態マシンであってもよい。
図19は、本発明の実施例に係る、有限状態マシンにおけるさまざまな状態の図を示す。図19に示されるように、有限状態マシン1900は、初期状態1901、接続状態1902、アイドル状態1903、停止状態1904、送信状態1905、およびエラー状態1906などの複数の状態を含み得る。
図19に示されるように、有限状態マシン1900は、初期状態1901から接続状態1902への遷移、接続状態1902からアイドル状態1903への遷移、アイドル状態1903から停止状態1904への遷移、および停止状態1904から接続状態1902に戻る遷移を可能にする。さらに、有限状態マシン1900は、接続状態1902とエラー状態1906との間の遷移、およびアイドル状態1903と送信状態1905との間の遷移を可能にする。
また、当該システムは、有限状態マシン1900が停止状態1904またはエラー状態1906のいずれかから接続状態1902に遷移する前に、状態エントリ動作1910を実行し得る。
図20は、本発明の実施例に係る、分散データグリッドにおいて自律型クラスタ間の同期を制御するために有限状態マシンを使用するための例示的なフローチャートを示す。図20に示されるように、ステップ2001において、当該システムは、1つ以上のデータ変更をローカルクラスタにおける1つ以上のユーザキャッシュに取込み得て、取込まれたデータ変更は、ローカルクラスタにおけるジャーナルキャッシュに格納される。さらに、ステップ2002において、当該システムは、有限状態マシンをローカルクラスタにおけるスレッドに関連付け得る。次いで、ステップ2003において、当該システムは、スレッドを制御するために有限状態マシンを使用し、スレッドは、上記1つ以上のデータ変更をジャーナルキャッシュから読取り、上記1つ以上のデータ変更をリモートクラスタに書込むように動作する。
実施例によれば、分散データグリッドにおいてクラスタ間でデータを同期させることをサポートするための方法であって、ソースクラスタにおける1つ以上のユーザキャッシュに対して適用される1つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージを1つ以上の宛先クラスタに送るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記方法はさらに、1つ以上の宛先クラスタを介して、受取られた1つ以上のデータ変更を処理するステップを備える。
実施例によれば、上記クラスタメンバがソースクラスタにおける1つ以上のユーザキャッシュのパーティションの所有者であることを可能にするステップをさらに備える方法である。
実施例によれば、上記クラスタメンバを介して、上記パーティションのためのジャーナルキャッシュにおける1つ以上のジャーナルエントリを処理するステップをさらに備える方法である。
実施例によれば、ソースクラスタにおける上記クラスタメンバが、1つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作することを可能にするステップをさらに備える方法である。
実施例によれば、ソースクラスタから上記1つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージにユニークな識別子(ID)を関連付けるステップをさらに備える方法である。
実施例によれば、宛先クラスタにおけるクラスタメンバが1つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答を宛先クラスタから受取るステップをさらに備える方法である。
実施例によれば、確認応答を受取った後に、1つ以上のデータ変更に関連付けられたリソースをガーベッジコレクトするステップをさらに備える方法である。
実施例によれば、宛先クラスタに書込むソースクラスタにおける各々のスレッドに有限状態マシンを関連付けるステップをさらに備える方法である。
実施例によれば、各々の上記宛先クラスタを介して、1つ以上のエントリを含むレプリケーションレコードを維持するステップをさらに備え、各々のエントリは、上記宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、方法である。
実施例によれば、宛先クラスタに維持されたレプリケーションレコードに基づいてソースクラスタにおいてフェイルオーバをサポートするステップをさらに備える方法である。
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、ソースクラスタにおける1つ以上のユーザキャッシュに対して適用される1つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージを1つ以上の宛先クラスタに送るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記ステップはさらに、1つ以上の宛先クラスタを介して、受取られた1つ以上のデータ変更を処理するステップを備える。
実施例によれば、上記クラスタメンバがソースクラスタにおける1つ以上のユーザキャッシュのパーティションの所有者であるシステムである。
実施例によれば、上記クラスタメンバが、上記パーティションのためのジャーナルキャッシュにおける1つ以上のジャーナルエントリを処理するように動作するシステムである。
実施例によれば、ソースクラスタにおける上記クラスタメンバが、1つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作するシステムである。
実施例によれば、ソースクラスタから上記1つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージが、ユニークな識別子(ID)に関連付けられるシステムである。
実施例によれば、宛先クラスタにおけるクラスタメンバが1つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答をソースクラスタにおける上記1つ以上のクラスタメンバが宛先クラスタから受取るシステムである。
実施例によれば、ソースクラスタにおける上記1つ以上のクラスタメンバが、確認応答を受取った後に、1つ以上のデータ変更に関連付けられたリソースをガーベッジコレクトするシステムである。
実施例によれば、宛先クラスタに書込むソースクラスタにおける各々のスレッドが、有限状態マシンに関連付けられるシステムである。
実施例によれば、各々の上記宛先クラスタが、1つ以上のエントリを含むレプリケーションレコードを維持するように動作し、各々のエントリは、上記宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示し、各々の上記宛先クラスタがさらに、宛先クラスタに維持されたレプリケーションレコードに基づいてソースクラスタにおいてフェイルオーバをサポートするように動作するシステムである。
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、ソースクラスタにおける1つ以上のユーザキャッシュに対して適用される1つ以上のデータ変更をパーティションレベルで追跡するステップと、ソースクラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージを1つ以上の宛先クラスタに送るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記ステップはさらに、1つ以上の宛先クラスタを介して、受取られた1つ以上のデータ変更を処理するステップを備える。
実施例によれば、分散データグリッドにおいてフェデレーテッドデータをサポートするための方法であって、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記方法はさらに、上記1つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記1つ以上のレプリケーションメッセージを無視するステップを備える。
実施例によれば、ソースクラスタにおける上記別のクラスタメンバが、上記別のクラスタメンバが失われる前はパーティションの所有者であることを可能にする方法である。
実施例によれば、上記クラスタメンバを介して上記パーティションのためのジャーナルキャッシュにおける1つ以上のジャーナルエントリを処理する方法である。
実施例によれば、ソースクラスタから宛先クラスタに送られる各々の上記レプリケーションメッセージにユニークな識別子(ID)を関連付ける方法である。
実施例によれば、ソースクラスタにおける上記クラスタメンバを介して、利用可能なレプリケーションメッセージを宛先クラスタにおけるクラスタメンバに送る方法である。
実施例によれば、上記利用可能なレプリケーションメッセージが1つ以上のデータ変更を含むことを可能にし、上記1つ以上のデータ変更のリソースは、ソースクラスタにおいてガーベッジコレクトされていない、方法である。
実施例によれば、1つ以上のエントリを含むレプリケーションレコードを宛先クラスタを介して維持し、各々のエントリは、宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、方法である。
実施例によれば、1つ以上のレプリケーションメッセージが、レプリケーションレコードに基づいて宛先クラスタにおいて受取られて成功裏に処理されたか否かを判断する方法である。
実施例によれば、宛先クラスタにおけるクラスタメンバが1つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答を、宛先クラスタにおけるクラスタメンバを介してソースクラスタにおけるクラスタメンバに送る方法である。
実施例によれば、ソースクラスタにおける上記クラスタメンバが、1つ以上の宛先クラスタとの同期をサポートするようにソースクラスタにおける他のクラスタメンバと並行して動作することを可能にする方法である。
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記ステップはさらに、上記1つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記1つ以上のレプリケーションメッセージを無視するステップを備える。
実施例によれば、ソースクラスタにおける上記別のクラスタメンバが、上記別のクラスタメンバが失われる前はパーティションの所有者であったシステムである。
実施例によれば、ソースクラスタにおける上記クラスタメンバが、上記パーティションのためのジャーナルキャッシュにおける1つ以上のジャーナルエントリを処理するように動作する方法である。
実施例によれば、ソースクラスタから上記1つ以上の宛先クラスタに送られる各々の上記レプリケーションメッセージが、ユニークな識別子(ID)に関連付けられるシステムである。
実施例によれば、ソースクラスタにおける上記クラスタメンバが、利用可能なレプリケーションメッセージを宛先クラスタにおけるクラスタメンバに送るように動作するシステムである。
実施例によれば、上記利用可能なレプリケーションメッセージが、1つ以上のデータ変更を含み、上記1つ以上のデータ変更のリソースが、ソースクラスタにおいてガーベッジコレクトされていない、システムである。
実施例によれば、宛先クラスタが、1つ以上のエントリを含むレプリケーションレコードを維持するように動作し、各々のエントリは、宛先クラスタにおけるパーティションについて受取られて成功裏に処理された最新のデータ変更を示す、システムである。
実施例によれば、1つ以上のレプリケーションメッセージがレプリケーションレコードに基づいて宛先クラスタにおいて既に受取られて成功裏に処理されたか否かを判断するように宛先クラスタが動作するシステムである。
実施例によれば、宛先クラスタにおけるクラスタメンバが1つ以上のデータ変更を受取って成功裏に処理したことを示す確認応答をソースクラスタにおけるクラスタメンバに送るように宛先クラスタにおけるクラスタメンバが動作するシステムである。
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、ソースクラスタにおける別のクラスタメンバが利用できなくなったときに上記ソースクラスタにおけるクラスタメンバがソースクラスタにおけるパーティションの所有者として引き継ぐことを可能にするステップと、宛先クラスタにおけるクラスタメンバを介して1つ以上のレプリケーションメッセージをソースクラスタにおける上記クラスタメンバから受取るステップとを備え、上記1つ以上のレプリケーションメッセージは、1つ以上のデータ変更を含み、上記ステップはさらに、上記1つ以上のレプリケーションメッセージが宛先クラスタにおいて既に受取られて成功裏に処理されている場合には、宛先クラスタにおけるクラスタメンバを介して上記1つ以上のレプリケーションメッセージを無視するステップを備える。
実施例によれば、分散データグリッドにおいてクラスタ間でデータを同期させることをサポートするための方法であって、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために1つ以上のユニークな識別子(ID)を使用するステップと、第1のクラスタを介して第2のクラスタから第1のレプリケーションメッセージを受取るステップとを備え、第1のレプリケーションメッセージは、第2のクラスタが新たなクラスタであることを示し、上記方法はさらに、第1のレプリケーションメッセージに続いて第2のクラスタから受取られる1つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第1のクラスタをリセットするステップを備える。
実施例によれば、第2のクラスタがジャーナルキャッシュに関連付けられることを可能にするステップをさらに備え、ジャーナルキャッシュは、なされた順序で維持される1つ以上のデータ変更を格納する、方法である。
実施例によれば、各々のレプリケーションメッセージに上記データ変更を含めるステップをさらに備える方法である。
実施例によれば、1つ以上のユニークなIDが単調にインクリメントされるのみであることを可能にするステップをさらに備える方法である。
実施例によれば、第1のレプリケーションメッセージがリセットフラグを含むことを可能にするステップをさらに備える方法である。
実施例によれば、第2のクラスタが、シャットダウンされる前に1つ以上のデータ変更を第1のクラスタに送ることを可能にするステップをさらに備える方法である。
実施例によれば、第2のクラスタのうちの1つが再起動し、新たなクラスタが加入して第2のクラスタを引き継ぐことを可能にするステップをさらに備える方法である。
実施例によれば、第1のクラスタにレコードを維持するステップをさらに備え、レコードは、第2のクラスタから受取られた最新のメッセージのためのユニークなIDを示す、方法である。
実施例によれば、第1のレプリケーションメッセージを受取った後に、第1のクラスタに維持されたレコードをリフレッシュするステップをさらに備える方法である。
実施例によれば、第1のレプリケーションメッセージおよび第1のレプリケーションメッセージに続く上記1つ以上のレプリケーションメッセージを処理するステップをさらに備える方法である。
実施例によれば、分散データグリッドにおいて非同期型メッセージ処理をサポートするためのシステムであって、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、分散データグリッドは、ステップを実行するように動作し、上記ステップは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために1つ以上のユニークな識別子(ID)を使用するステップと、第1のクラスタを介して第2のクラスタから第1のレプリケーションメッセージを受取るステップとを備え、第1のレプリケーションメッセージは、第2のクラスタが新たなクラスタであることを示し、上記ステップはさらに、第1のレプリケーションメッセージに続いて第2のクラスタから受取られる1つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第1のクラスタをリセットするステップを備える。
実施例によれば、第2のクラスタにおけるジャーナルキャッシュが、なされた順序で維持される1つ以上のデータ変更を格納するシステムである。
実施例によれば、各々のレプリケーションメッセージが上記データ変更を含むシステムである。
実施例によれば、1つ以上のユニークなIDが単調にインクリメントされるのみであるシステムである。
実施例によれば、第1のレプリケーションメッセージがリセットフラグを含むシステムである。
実施例によれば、第2のクラスタが、シャットダウンされる前に1つ以上のデータ変更を第1のクラスタに送るように動作するシステムである。
実施例によれば、第2のクラスタのうちの1つが再起動し、新たなクラスタが加入して第2のクラスタを引き継ぐことを分散データグリッドが可能にするシステムである。
実施例によれば、第1のクラスタがレコードを維持するように動作し、レコードは、第2のクラスタから受取られた最新のメッセージのためのユニークなIDを示す、システムである。
実施例によれば、第1のクラスタが、第1のレプリケーションメッセージを受取った後にレコードをリフレッシュし、第1のレプリケーションメッセージおよび第1のレプリケーションメッセージに続く上記1つ以上のレプリケーションメッセージを処理するように動作するシステムである。
実施例によれば、実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、上記ステップは、分散データグリッドにおいて異なるクラスタ間でのメッセージのやりとりをサポートするために1つ以上のユニークな識別子(ID)を使用するステップと、第1のクラスタを介して第2のクラスタから第1のレプリケーションメッセージを受取るステップとを備え、第1のレプリケーションメッセージは、第2のクラスタが新たなクラスタであることを示し、上記ステップはさらに、第1のレプリケーションメッセージに続いて第2のクラスタから受取られる1つ以上のレプリケーションメッセージを所有する際の冪等性を維持するように第1のクラスタをリセットするステップを備える。
本発明は、1つ以上の従来の汎用または専用のデジタルコンピュータ、計算装置、マシンまたはマイクロプロセッサを用いて好都合に実現されることができ、これらは、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能な記憶媒体を含む。ソフトウェア技術分野の当業者に明らかであるように、本開示の教示に基づいて、熟練したプログラマによって適切なソフトウェアコーディングが容易に準備され得る。
いくつかの実施例において、本発明は、本発明のプロセスのうちのいずれかを実行するようにコンピュータをプログラムするために使用され得る命令を格納した記憶媒体またはコンピュータ読取可能な媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブおよび光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気または光カード、(分子メモリICを含む)ナノシステム、または命令および/もしくはデータを格納するのに好適な任意のタイプの媒体またはデバイスを含み得るが、これらに限定されるものではない。
本発明の上記の説明は、例示および説明の目的でなされてきた。それは、網羅的であることを意図したものではなく、開示されている厳密な形態に本発明を限定することを意図したものではない。多くの変形例および変更例が当業者に明らかであろう。変形例および変更例は、開示されている特徴の任意の関連の組み合わせを包含する。実施例は、本発明の原理およびその実際の適用を最もよく説明することによって、意図されている特定の用途に適したさまざまな変形例とともに、当業者がさまざまな実施例について本発明を理解することができるように選択され、記載されている。本発明の範囲は、以下の特許請求の範囲およびそれらの等価物によって定義されるよう意図されている。

Claims (22)

  1. 分散データグリッドにおいてクラスタ間のデータ同期をサポートするための方法であって、
    ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付けるステップを備え、前記1つ以上のユーザキャッシュは、複数のパーティションに分割され、前記方法はさらに、
    前記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータ変更を取込むステップと、
    1つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記1つ以上のデータ変更を格納するステップとを備える、方法。
  2. ユーザデータを前記複数のパーティションのあるパーティションに割当てるステップをさらに備え、前記割当ては、
    キャッシュエントリキーに対するハッシュ、
    キャッシュエントリに関連付けられるキーに対するハッシュ、および
    明示的な割当て、のうちの少なくとも1つに基づく、請求項1に記載の方法。
  3. 前記ジャーナルキャッシュに格納された前記1つ以上のデータ変更を、それらがなされる順序で維持するステップをさらに備える、請求項1または2に記載の方法。
  4. 前記ジャーナルキャッシュは、パーティション化されたキャッシュに基づき、前記ジャーナルキャッシュは、複数のパーティションに分割される、請求項1〜3のいずれか1項に記載の方法。
  5. 前記ジャーナルキャッシュの各パーティションは、1つ以上のバックアップコピーを有する、請求項4に記載の方法。
  6. 各々の取込まれたデータ変更のためのグローバルユニーク識別子(ID)を生成するステップをさらに備える、請求項1〜5のいずれか1項に記載の方法。
  7. 前記グローバルユニークIDは、複数の要素を含む、請求項6に記載の方法。
  8. 前記グローバルユニークIDの一要素は、前記1つ以上のデータ変更がなされるソースパーティションを示す整数であり、前記グローバルユニークIDの別の要素は、前記ソースパーティションに対して前記1つ以上のデータ変更がなされる順序を示す長整数である、請求項7に記載の方法。
  9. 1つ以上のエントリを維持するシーケンステーブルを提供するステップをさらに備え、各々のエントリは、前記複数のパーティションにおけるあるパーティションに対してなされたデータ変更の総数を示す、請求項1〜8のいずれか1項に記載の方法。
  10. 前記シーケンステーブルに基づいて、前記パーティションに対してなされる新たなデータ変更のためのグローバルユニークIDを生成するステップをさらに備える、請求項9に記載の方法。
  11. マシン読取可能な形態でプログラム命令を備えるコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されたときに前記コンピュータシステムに請求項1〜10のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
  12. 請求項11に記載のコンピュータプログラムを格納した非一時的なマシン読取可能な記憶媒体。
  13. 分散データグリッドにおいてクラスタ間のデータ同期をサポートするためのシステムであって、
    1つ以上のマイクロプロセッサと、
    前記1つ以上のマイクロプロセッサ上で動作する複数のサーバノードを有する分散データグリッドとを備え、前記分散データグリッドは、ステップを実行するように動作し、前記ステップは、
    ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付けるステップを備え、前記1つ以上のユーザキャッシュは、複数のパーティションに分割され、前記ステップはさらに、
    前記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータ変更を取込むステップと、
    1つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記1つ以上のデータ変更を格納するステップとを備える、システム。
  14. 前記分散データグリッドは、ユーザデータを前記複数のパーティションのあるパーティションに割当てるように動作し、前記割当ては、
    キャッシュエントリキーに対するハッシュ、
    キャッシュエントリに関連付けられるキーに対するハッシュ、および
    明示的な割当て、のうちの少なくとも1つに基づく、請求項13に記載のシステム。
  15. 前記ジャーナルキャッシュに格納された前記1つ以上のデータ変更は、それらがなされる順序で維持される、請求項13または14に記載のシステム。
  16. 前記ジャーナルキャッシュは、パーティション化されたキャッシュに基づき、前記ジャーナルキャッシュは、複数のパーティションに分割される、請求項13〜15のいずれか1項に記載のシステム。
  17. 前記ジャーナルキャッシュの各パーティションは、1つ以上のバックアップコピーを有する、請求項16に記載のシステム。
  18. 前記分散データグリッドは、各々の取込まれたデータ変更のためのグローバルユニーク識別子(ID)を生成するように動作する、請求項13〜17のいずれか1項に記載のシステム。
  19. 前記グローバルユニークIDは、複数の要素を含む、請求項18に記載のシステム。
  20. 前記グローバルユニークIDの一要素は、前記1つ以上のデータ変更がなされるソースパーティションを示す整数であり、前記グローバルユニークIDの別の要素は、前記ソースパーティションに対して前記1つ以上のデータ変更がなされる順序を示す長整数である、請求項19に記載のシステム。
  21. 前記分散データグリッドは、1つ以上のエントリを維持するシーケンステーブルを提供するように動作し、各々のエントリは、前記複数のパーティションにおけるあるパーティションに対してなされたデータ変更の総数を示し、
    前記分散データグリッドは、前記シーケンステーブルに基づいて、前記パーティションに対してなされる新たなデータ変更のためのグローバルユニークIDを生成するように動作する、請求項13〜20のいずれか1項に記載のシステム。
  22. 実行されたときにシステムにステップを実行させる命令を格納した非一時的なマシン読取可能な記憶媒体であって、前記ステップは、
    ジャーナルキャッシュをローカルクラスタにおける1つ以上のユーザキャッシュに関連付けるステップを備え、前記1つ以上のユーザキャッシュは、複数のパーティションに分割され、前記ステップはさらに、
    前記1つ以上のユーザキャッシュの異なるパーティションに適用される1つ以上のデータ変更を取込むステップと、
    1つ以上のリモートクラスタとの同期をサポートする前記ジャーナルキャッシュに前記1つ以上のデータ変更を格納するステップとを備える、非一時的なマシン読取可能な記憶媒体。
JP2016537774A 2013-08-29 2014-08-26 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法 Active JP6225262B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201361871708P 2013-08-29 2013-08-29
US61/871,708 2013-08-29
US14/467,311 2014-08-25
US14/467,315 2014-08-25
US14/467,308 US9703853B2 (en) 2013-08-29 2014-08-25 System and method for supporting partition level journaling for synchronizing data in a distributed data grid
US14/467,315 US10423643B2 (en) 2013-08-29 2014-08-25 System and method for supporting resettable acknowledgements for synchronizing data in a distributed data grid
US14/467,310 US9652520B2 (en) 2013-08-29 2014-08-25 System and method for supporting parallel asynchronous synchronization between clusters in a distributed data grid
US14/467,308 2014-08-25
US14/467,311 US9659078B2 (en) 2013-08-29 2014-08-25 System and method for supporting failover during synchronization between clusters in a distributed data grid
US14/467,310 2014-08-25
PCT/US2014/052733 WO2015031378A1 (en) 2013-08-29 2014-08-26 System and method for supporting partition level journaling for synchronizing data in a distributed data grid

Publications (2)

Publication Number Publication Date
JP2016529629A true JP2016529629A (ja) 2016-09-23
JP6225262B2 JP6225262B2 (ja) 2017-11-01

Family

ID=52584665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016537774A Active JP6225262B2 (ja) 2013-08-29 2014-08-26 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法

Country Status (5)

Country Link
US (4) US9659078B2 (ja)
EP (1) EP3039844B1 (ja)
JP (1) JP6225262B2 (ja)
CN (1) CN105493474B (ja)
WO (1) WO2015031378A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10021186B2 (en) * 2014-12-19 2018-07-10 Microsoft Technology Licensing, Llc Guaranteed delivery of replication message
US9864791B2 (en) 2014-12-19 2018-01-09 Microsoft Technology Licensing, Llc Flow for multi-master replication in distributed storage
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
CN106557364A (zh) * 2015-09-24 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和系统
CN106778305A (zh) * 2016-12-15 2017-05-31 深圳市中科鼎创科技股份有限公司 一种对单机数据进行持续数据保护的装置及方法
US10915455B2 (en) * 2018-12-04 2021-02-09 Netflix, Inc. Cache warming: agility for a stateful service
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11520640B2 (en) * 2020-01-30 2022-12-06 Alibaba Group Holding Limited Efficient and more advanced implementation of ring-AllReduce algorithm for distributed parallel deep learning
CN112134887B (zh) * 2020-09-23 2022-08-09 哈尔滨海能达科技有限公司 一种分布式集群中节点的数据同步方法及装置
CN112307121B (zh) * 2020-10-30 2023-10-31 中国平安人寿保险股份有限公司 基于Oracle的数据同步方法、装置及计算机设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314779A (ja) * 1995-05-16 1996-11-29 Hitachi Ltd サーバーシステム
JP2000181634A (ja) * 1998-12-18 2000-06-30 Nec Corp ミラーリング装置
US20020133727A1 (en) * 2001-03-15 2002-09-19 International Business Machines Corporation Automated node restart in clustered computer system
JP2005316684A (ja) * 2004-04-28 2005-11-10 Hitachi Ltd データ処理システム
US20070174290A1 (en) * 2006-01-19 2007-07-26 International Business Machines Corporation System and architecture for enterprise-scale, parallel data mining
JP2009104488A (ja) * 2007-10-24 2009-05-14 Hitachi Ltd ストレージ装置及びその制御方法並びにストレージシステム
US20090182970A1 (en) * 2008-01-16 2009-07-16 Battista Robert J Data Transmission for Partition Migration
WO2011039803A1 (ja) * 2009-09-29 2011-04-07 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ複製方法
US20110307450A1 (en) * 2010-06-14 2011-12-15 Hahn Uwe H O Tenant separation within a database instance
US8296265B2 (en) * 2003-07-25 2012-10-23 Hitachi, Ltd. Method and apparatus for synchronizing applications for data recovery using storage based journaling
JP2013532862A (ja) * 2010-12-27 2013-08-19 株式会社日立製作所 ストレージシステム及びその制御情報の管理方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002251313A (ja) 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム
US7137040B2 (en) * 2003-02-12 2006-11-14 International Business Machines Corporation Scalable method of continuous monitoring the remotely accessible resources against the node failures for very large clusters
US8234517B2 (en) 2003-08-01 2012-07-31 Oracle International Corporation Parallel recovery by non-failed nodes
US7478263B1 (en) * 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US20080270704A1 (en) 2007-04-30 2008-10-30 He Dingshan Cache arrangement for improving raid i/o operations
US20100179874A1 (en) * 2009-01-13 2010-07-15 Yahoo! Inc. Media object metadata engine configured to determine relationships between persons and brands
US20110040617A1 (en) 2009-08-11 2011-02-17 Google Inc. Management of publisher yield
US8812799B2 (en) 2009-12-11 2014-08-19 International Business Machines Corporation Cluster families for cluster selection and cooperative replication
US8341115B1 (en) 2009-12-26 2012-12-25 Emc Corporation Dynamically switching between synchronous and asynchronous replication
US8751863B2 (en) * 2011-05-23 2014-06-10 Microsoft Corporation Implementing failover processes between storage stamps
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
CN104641614B (zh) * 2012-04-13 2018-04-13 高盛有限责任公司 用于可扩展的结构化数据分布的系统和方法
JP5928583B2 (ja) 2012-05-16 2016-06-01 富士通株式会社 ノード装置および通信方法
US9229829B2 (en) 2012-07-25 2016-01-05 GlobalFoundries, Inc. Synchronous mode replication to multiple clusters
US9497234B2 (en) 2012-12-27 2016-11-15 Facebook, Inc. Implicit social graph connections

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314779A (ja) * 1995-05-16 1996-11-29 Hitachi Ltd サーバーシステム
JP2000181634A (ja) * 1998-12-18 2000-06-30 Nec Corp ミラーリング装置
US20020133727A1 (en) * 2001-03-15 2002-09-19 International Business Machines Corporation Automated node restart in clustered computer system
US8296265B2 (en) * 2003-07-25 2012-10-23 Hitachi, Ltd. Method and apparatus for synchronizing applications for data recovery using storage based journaling
JP2005316684A (ja) * 2004-04-28 2005-11-10 Hitachi Ltd データ処理システム
US20070174290A1 (en) * 2006-01-19 2007-07-26 International Business Machines Corporation System and architecture for enterprise-scale, parallel data mining
JP2009104488A (ja) * 2007-10-24 2009-05-14 Hitachi Ltd ストレージ装置及びその制御方法並びにストレージシステム
US20090182970A1 (en) * 2008-01-16 2009-07-16 Battista Robert J Data Transmission for Partition Migration
WO2011039803A1 (ja) * 2009-09-29 2011-04-07 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ複製方法
US20110307450A1 (en) * 2010-06-14 2011-12-15 Hahn Uwe H O Tenant separation within a database instance
JP2013532862A (ja) * 2010-12-27 2013-08-19 株式会社日立製作所 ストレージシステム及びその制御情報の管理方法

Also Published As

Publication number Publication date
JP6225262B2 (ja) 2017-11-01
US10423643B2 (en) 2019-09-24
US20150066850A1 (en) 2015-03-05
US20150066849A1 (en) 2015-03-05
US20150066848A1 (en) 2015-03-05
US20150066843A1 (en) 2015-03-05
US9652520B2 (en) 2017-05-16
EP3039844A1 (en) 2016-07-06
EP3039844B1 (en) 2019-05-08
WO2015031378A1 (en) 2015-03-05
US9703853B2 (en) 2017-07-11
US9659078B2 (en) 2017-05-23
CN105493474B (zh) 2020-11-20
CN105493474A (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
US20220239602A1 (en) Scalable leadership election in a multi-processing computing environment
US10817478B2 (en) System and method for supporting persistent store versioning and integrity in a distributed data grid
US9460185B2 (en) Storage device selection for database partition replicas
JP2021002369A (ja) 索引更新パイプライン
US8954391B2 (en) System and method for supporting transient partition consistency in a distributed data grid
US8589732B2 (en) Consistent messaging with replication
US11550820B2 (en) System and method for partition-scoped snapshot creation in a distributed data computing environment
JP2016524750A5 (ja)
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US9424147B2 (en) System and method for supporting memory allocation control with push-back in a distributed data grid
CN117354141A (zh) 应用服务管理方法、设备和计算机可读存储介质
Ehsan ul Haque Persistence and Node FailureRecovery in Strongly Consistent Key-Value Datastore

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171006

R150 Certificate of patent or registration of utility model

Ref document number: 6225262

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250