(58)【調査した分野】(Int.Cl.,DB名)
前記永続ストレージに複数の分散ローカルディスクを含むステップをさらに含み、前記分散データグリッドにおける各メンバーは、前記分散ローカルディスクのうちの1つ以上に対するビジビリティのみを有する、請求項1に記載の方法。
すべての永続化されたパーティションがリカバリに先立って可視であることを保証するためにリカバリクォーラムを使用するステップをさらに含む、請求項1〜4のいずれか1項に記載の方法。
コンピュータシステムによって実行されると、前記コンピュータシステムに請求項1〜7のいずれか1項に記載の方法を実行させる、マシン読み取り可能な形式のプログラム命令を含むコンピュータプログラム。
複数の分散ローカルディスクが前記永続ストレージに含まれており、前記分散データグリッドにおける各メンバーは、前記分散ローカルディスクのうちの1つ以上に対するビジビリティのみを有し、
前記コーディネータは、前記分散データグリッドにおけるメンバーであり、
前記コーディネータは、前記分散データグリッドにおける前記複数のメンバーから前記複数の永続化されたパーティションについての情報を受け取り、
前記分散データグリッドは、すべての永続化されたパーティションがリカバリに先立って可視であることを保証するためにリカバリクォーラムを使用するよう動作し、
前記永続ストレージは、1つ以上のストレージエリアネットワーク(SAN)を含み、前記1つ以上のSANは、
前記分散データグリッドにおいて複数のメンバーによって共有されること、
複数のストレージ位置にて複数のメンバーによって共有されること、および、
1つ以上のローカルディスクを有するハイブリッドな展開において複数のメンバーによって共有されること、のうち少なくともいずれかである、請求項9に記載のシステム。
1つ以上のコミュニケーションチャンネルと相互接続される複数のサーバノードを含む分散データグリッドに使用されるコーディネータであって、前記分散データグリッドにおける複数のメンバーが、永続ストレージにおいて1つ以上のキャッシュサービスに関連付けられる複数のパーティションを永続化しており、前記コーディネータは、
前記分散データグリッドにおける前記複数のメンバーの間でパーティションオーナーシップのビューを同期するように構成される同期ユニットと、
どのパーティションが前記分散データグリッドにおけるどのメンバーからリカバリされるかについての分散コンセンサスを形成するように構成される形成ユニットとを含む、コーディネータ。
複数の分散ローカルディスクが前記永続ストレージに含まれており、前記分散データグリッドにおける各メンバーは、1つ以上の分散ローカルディスクに対するビジビリティのみを有しており、
前記コーディネータは、前記分散データグリッドにおけるメンバーであり、
前記コーディネータはさらに、前記分散データグリッドにおける前記複数のメンバーから、前記複数の永続化されたパーティションについての情報を受け取るように構成される受取ユニットを含む、
すべての永続化されたパーティションがリカバリに先立って可視であることを保証するために、リカバリクォーラムが使用され、
前記永続ストレージは、1つ以上のストレージエリアネットワーク(SAN)を含み、前記1つ以上のSANは、
前記分散データグリッドにおいて複数のメンバーによって共有されること、
複数のストレージ位置にて複数のメンバーによって共有されること、および、
1つ以上のローカルディスクを有するハイブリッドな展開において複数のメンバーによって共有されること、のうち少なくともいずれかである、請求項12に記載のコーディネータ。
前記分散コンセンサスに基づいて、前記分散データグリッドにおいて各メンバーについてパーティションリカバリ割当を決定するように構成される決定ユニットをさらに含み、
決定ユニットは、前記パーティションリカバリ割当を決定するプラガブルパーティション割当ストラテジーコンポーネントであり、
前記分散データグリッドにおいて各メンバーに前記パーティションリカバリ割当を提供するように構成される提供ユニットをさらに含み、前記各メンバーは、前記分散データグリッドに関連付けられる前記永続ストレージから1つ以上のパーティションをリカバリするよう動作する、請求項13に記載のコーディネータ。
【発明を実施するための形態】
【0014】
詳細な説明
本願明細書において、分散データグリッドにおいて永続性をサポートし得るシステムおよび方法が記載される。
【0015】
分散データグリッド
ある実施形態に従うと、本願明細書において「データグリッドクラスタ」または「データグリッド」と称されるものは、分散化またはクラスタ化された環境内において情報および演算のような関連するオペレーションを管理するために一緒に作動する複数のコンピュータサーバを含むシステムである。データグリッドクラスタは、これらのサーバにわたって共有されるアプリケーションオブジェクトおよびデータを管理するために使用され得る。好ましくは、データグリッドクラスタは、低い応答時間、高いスループット、予測可能なスケーラビリティ、連続的な可用性、および情報信頼性を有するべきである。これらの能力の結果、データグリッドクラスタは、計算集中的である、ステートフルな中間層アプリケーションにおける使用に良好に好適である。たとえばオラクルコヒーレンスデータグリッドクラスタ(Oracle Coherence data grid cluster)といったデータグリッドクラスタのいくつかの例は、より高い性能を達成するために情報をインメモリで格納し得るとともに、複数のサーバにわたって同期される当該情報のコピーを保つ際に冗長性を用い得、これにより、サーバの故障の場合にシステムの回復性とデータの可用性とを保証する。たとえば、コヒーレンスは、信頼性があり、非常にスケーラブルなピアツーピアクラスタリングプロトコル上で、複製および分散(パーティション化)されたデータ管理およびキャッシングサービスを提供する。
【0016】
インメモリデータグリッドは、共に作動する多くのサーバ上にデータを分散することによってデータストレージおよび管理能力を提供し得る。データグリッドは、アプリケーションサーバと同じ層において実行されるか、または、アプリケーションサーバ内において実行されるミドルウェアであり得る。データグリッドは、データの管理および処理を提供し得、さらに、データがグリッドにおいて位置するところに処理をプッシュし得る。さらに、インメモリデータグリッドは、サーバが作動しなくなるかまたはネットワークから切断される場合に、自動的かつトランスピアレントにフェイルオーバーし、そのクラスタデータ管理サービスを再分散することによって単一障害点(single points of failure)を除去し得る。新しいサーバが追加されるか、または、フェイルしたサーバが再起動されると、当該サーバは自動的にクラスタに加わり、サービスはそれに戻るようにフェイルオーバーされ得、トランスピアレントにクラスタロードを再分散する。データグリッドはさらに、ネットワークレベルのフォールトトレランス機能と、トランスピアレントなソフトリスタート(soft restart)能力とを含み得る。
【0017】
実施形態に従うと、データグリッドクラスタの機能は、異なるクラスタサービスの使用に基づく。クラスタサービスは、ルートクラスタサービス、パーティション化されたキャッシュサービス、および、プロキシサービスを含み得る。データグリッドクラスタ内では、各クラスタノードは、クラスタサービスを提供および消費する両方の点において多くのクラスタサービスに参加し得る。各クラスタサービスは、データグリッドクラスタ内のサービスを一意に識別するサービス名と、クラスタサービスが行なうことが可能であることを定義するサービスタイプとを有する。データグリッドクラスタにおいて各クラスタノード上で実行されるルートクラスタサービス以外に、各サービスタイプの複数の名称付けされたインスタンス(multiple named instances)が存在し得る。サービスは、ユーザによって構成されるか、または、サービスのデフォルトセットとしてデータグリッドクラスタによって提供されるかのいずれかであり得る。
【0018】
図1は、本発明のさまざまな実施形態に従ったデータグリッドクラスタの図である。
図1に示されるように、たとえばオラクルコヒーレンスデータグリッドといったデータグリッドクラスタ100は、さまざまなクラスタサービス111〜116が実行されるクラスタノード101〜106のような複数のクラスタメンバー(またはサーバノード)を含む。さらに、キャッシュコンフィギュレーションファイル110は、データグリッドクラスタ100を構成するために使用され得る。
【0019】
キャッシュコンテンツの永続ストレージ
本発明の実施形態に従うと、分散データグリッドは、異なるタイプのキャッシュコンテンツのためのリカバリ可能な永続ストレージを提供し得、分散データグリッドがシャットダウンされた後のデータ損失を防止し得る。
【0020】
図2は、本発明の実施形態に従った、分散データグリッドにおける永続性をサポートすることについての図を示す。
図2に示されるように、分散データグリッド200は、インメモリデータストア202にさまざまなタイプのキャッシュコンテンツ211〜213を含み得る。さらに、分散データグリッド200は、永続ストレージ203においてキャッシュコンテンツ211〜213を永続するために永続レイヤー201を使用し得る。
【0021】
永続レイヤー201は、永続ストレージ203が異なる物理トポロジーを使用することを可能にする。たとえば、永続レイヤー201は、分散データグリッド200における全メンバーが同じビジビリティ(visibility)を共有し得る、ストレージエリアネットワーク(SAN:storage area network)221のような中央位置にキャッシュコンテンツを格納し得る。代替的には、永続レイヤー201は、分散データグリッド200のメンバーがローカルビジビリティのみを有する異なるローカルディスク222にキャッシュコンテンツを格納し得る。
【0022】
さらに、永続レイヤー201は物理トポロジー(たとえばSAN221または分散ローカルディスク222)の選択に対して非依存(agnostic)であり得る。たとえば、分散データグリッド200は、複数のSANまたは複数のSANマウントポイントを活用し得る。さらに、分散データグリッド200は、複数のメンバーによって共有されない複数のSANを含む物理トポロジーを活用し得る。代替的には、物理トポロジーは、ストレージ位置をエクスポートする複数のSANを含むか、または、ローカルディスクおよびSANのハイブリッドな展開(hybrid deployment)を含み得る。
【0023】
さらに、永続レイヤー201は、永続化されるデータ/メタデータのパーティションワイドのアトミック性(partition-wide atomicity)をサポートし得、分散データグリッド200の再起動の後にトランザクションの保証を提供し得る。さらに、永続レイヤー201は性能インパクトを最小化し、かつ、分散データグリッド200を再起動するために必要とされるリカバリ時間を低減し得る。
【0024】
図3は、本発明の実施形態に従った、分散データグリッドにおいて永続性をサポートするために、共有されるストレージを使用することについての図を示す。
図3に示されるように、複数のメンバー(たとえばマシンA311〜C313上のメンバー301〜305)を含む分散データグリッド300は、さまざまなキャッシュサービス320をサポートし得る。
【0025】
さらに、分散データグリッド300は、中央位置においてキャッシュサービス320のためのキャッシュコンテンツを格納するために、ストレージエリアネットワーク(SAN)310のような共有された永続ストレージを使用し得る。
図3に示されるように、マシンA311〜C313上の異なるメンバー301〜305は、同じビジビリティを共有し得、すべてがSAN310において永続化パーティション322にアクセスを有し得る。
【0026】
したがって、分散データグリッド300がシャットダウンの後に再起動される場合に、システムは永続化されたキャッシュコンテンツをリカバリし、データ損失を防止し得る。
【0027】
図4は、本発明の実施形態に従った、分散データグリッドにおいて永続性をサポートするために分散ローカルディスクを使用することについての図を示す。
図4に示されるように、複数のメンバー(たとえばマシンA411〜C413上のメンバー401〜405)を含む分散データグリッド400は、さまざまなキャッシュサービス420をサポートし得る。
【0028】
さらに、分散データグリッド400は、キャッシュサービス420のためのキャッシュコンテンツを異なるマシン上のローカルディスクへ格納し得る。たとえば、メンバー401〜402は、関連するキャッシュコンテンツをマシンA411上のローカルディスクA431へ格納し得る(たとえば永続化パーティション421)。さらに、メンバー403〜404は、関連するキャッシュコンテンツをマシンB412上のローカルディスクB432に格納し得(たとえば永続化パーティション422)、また、マシンC413は、関連するキャッシュコンテンツをマシンC413上のローカルディスクC433へ格納し得る(たとえば永続化パーティション423)。
【0029】
したがって、分散データグリッド400は、分散した態様でさまざまなタイプのキャッシュコンテンツの自動的なリカバリをサポートし得るとともに、分散データグリッド400の再起動の間にデータ損失を防止し得る。
【0030】
分散永続ストアのリカバリ
本発明の実施形態に従うと、分散データグリッドは、分散した態様で永続ストアのリカバリをサポートし得る。
【0031】
図5は、本発明の実施形態に従った、分散データグリッドにおいて分散永続ストアのリカバリ(distributed persistent store recovery)をサポートすることについての図を示す。
図5に示されるように、分散データグリッド500は、たとえばメンバー501〜505のような複数のメンバーを含み得、たとえばローカルディスクA511〜C513のような分散ローカルディスクを使用してキャッシュコンテンツを永続し得る。
【0032】
さらに、分散データグリッド500における各メンバーは、ローカルディスクにおいて永続化されるパーティションに対してのみビジビリティを有し得る。たとえば、メンバー501およびメンバー502は、ローカルディスクA511における永続化パーティション521のみを認識し得、メンバー503およびメンバー504は、ローカルディスクB512における永続化パーティション522のみを認識し得、また、メンバー505は、ローカルディスクC513における永続化パーティション523のみを認識し得る。
【0033】
本発明の実施形態に従うと、分散データグリッド500は、異なるローカルディスクA511〜C513上において永続化パーティション521〜523をディスカバリ(discover)するよう内部プロトコルを使用し得る。たとえば、ディスカバリプロトコルは、クラスタコールドスタート/再起動シナリオおよび複数ノード障害シナリオ(たとえば、パーティションのプライマリオーナーの損失および/またはパーティションの1つ以上のバックアップオーナーの損失を伴う)の両方の間、永続ストアのリカバリをサポートする。
【0034】
図5に示されるように、分散データグリッド500は、コーディネータメンバー510のようなコーディネータを使用して、分散データグリッド500においてさまざまな永続化パーティション521〜523のリカバリをコーディネートし得る。コーディネータメンバー510は、永続化パーティション521〜523の完全なリストを得るために、分散データグリッド500における他のメンバー501〜505に分散クエリーを送信し得る。
【0035】
したがって、本開示の実施形態に従うと、メンバー(501〜505,510)は、分散データグリッドの要素である。分散データグリッドの複数のメンバーのうちの1つのメンバー510は、分散データグリッドにおけるさまざまな永続化パーティションのリカバリのための情報を扱うコーディネータとして作動し得る。情報を扱うことは、分散データグリッドにおける複数のメンバーの間でパーティションオーナーシップのビューを同期することと、複数の永続化パーティションに関する情報を分散データグリッドにおける複数のメンバーから受け取ることとを含み得る。ある局面において、コーディネータは、「コーディネータメンバー」510と称され得る。
【0036】
本発明の実施形態に従うと、コーディネータメンバー510は、パーティションリカバリ割当540を決定するために、
プラガブルパーティション割当ストラテジーコンポーネント(pluggable partition assignment strategy component)520を使用し得る。たとえば、システムは、パーティションのリストを下まで見て、どのメンバーがパーティションのバージョンを見ることができるか調べる。その後、システムは、同期されたパーティションオーナーシップビュー530に基づいて、どのメンバーを使用してどのパーティションをリカバリするべきかを決定し得る。
【0037】
さらに、システムは、分散データグリッド500に永続サポートを追加することにより引き起こされる性能インパクトを最小化し得る。たとえば、システムは、永続ストアに対する書込オペレーションを実現するために、分散データグリッド500において非同期メッセージプロセスを使用し得る。さらに、システムは、複数の入力/出力(I/O)オペレーションを同時に行なうことを可能にする。
【0038】
さらに、コーディネータメンバー510は、リカバリを実行するために、性能ボトルネックを作り出す傾向があり得る分散データグリッド500における1つまたはいくつかのメンバーのみの使用を回避し得る。
【0039】
さらに、システムは、リカバリによるデータ損失を防止するために、すべての永続化パーティションがリカバリに先立って可視であることを保証するためにリカバリクォーラム(recovery quorum)を使用し得る。
【0040】
分散データグリッド500においてサービスレベルクォーラムをサポートするさまざまな実施形態の付加的な説明は、2012年1月17日に出願された、本願明細書において参照により援用される「データグリッドクラスタにおいてサービスレベルクォーラムをサポートするためのシステムおよび方法(SYSTEM AND METHOD FOR SUPPORTING SERVICE LEVEL QUORUM IN A DATA GRID CLUSTER)」という名称を有する米国特許出願番号第13/352,203号(代理人管理番号ORACL−05131US2)において提供される。
【0041】
したがって、分散データグリッド500は、分散データグリッド500の再起動の間に、永続キャッシュコンテンツのリカバリを分散した態様で自動的に実行し得る。
【0042】
図6は、本発明の実施形態に従った、分散データグリッドにおける永続ストアのリカバリをコーディネートすることについての図を示す。
図6に示されるように、分散データグリッド600におけるコーディネータメンバー610は、分散ローカルディスクからの永続化パーティションのリカバリをコーディネートすることができる。たとえば、コーディネータメンバー610は、ローカルディスク630から永続化パーティションをリカバリするためにメンバー620に指示を与え得る。
【0043】
ステップ601では、コーディネータメンバー610は、永続化パーティションのリストアの準備をするようメンバー620(および同時に分散データグリッド600におけるすべての他のメンバー)に指示を与え得る。その後、ステップ602において、(恐らく分散データグリッド600における他の各メンバーとともに)メンバー620は、コーディネータメンバー610にローカルパーティションオーナーシップを提供し得る。
【0044】
ステップ603では、コーディネータメンバー610は、分散データグリッド600における異なるメンバーからパーティションオーナーシップ情報を得た後、全体的なパーティションオーナーシップのビューを同期し得る。
【0045】
さらに、ステップ604において、コーディネータメンバー610は、全体的なパーティションオーナーシップのビューに基づいて、永続化パーティションのリカバリの準備をするようにメンバー620に指示を与え得る。ステップ605では、メンバー620は、ローカルディスク630における永続化パーティションをチェックし得る。その後、ステップ606では、メンバー620は、ローカルディスク630における永続化パーティション(たとえば永続化パーティションID)をコーディネータメンバー610に報告し得る。
【0046】
ステップ607では、コーディネータメンバー610は、分散データグリッド600における異なるメンバーから永続化パーティションに関する情報を得た後、リカバリ割当を決定するといったように、リカバリ処理をどのように構成するかについて決定を行ない得る。
【0047】
その後、ステップ608では、コーディネータメンバー610は、分散データグリッド600における各メンバーにパーティションリカバリ割当(たとえばリカバリパーティションID)を提供し得る。最後に、ステップ609では、分散データグリッド600における異なるメンバー(メンバー620を含む)が、受け取られたパーティションリカバリ割当に基づいて、永続化パーティションのリカバリを行ない得る。
【0048】
図7は、本発明の実施形態に従った、分散データグリッドにおいて一貫したパーティションリカバリをサポートすることについての図を示す。
図7に示されるように、分散データグリッド700はたとえばメンバー701〜705といった複数のメンバーを含み得、当該複数のメンバーの各々は、ローカルディスクにおいて永続化されたパーティションに対してのみビジビリティを有し得る。
【0049】
さらに、コーディネータメンバー710は、分散ローカルディスクA711〜C713からさまざまな永続化パーティション721〜723のリカバリをコーディネートし得る。さらに、コーディネータメンバー710は、どのメンバーを使用してどのパーティションをリカバリするべきかを決定するよう、
プラガブルパーティション割当ストラテジーコンポーネント720を使用し得る。
【0050】
本発明の実施形態に従うと、分散データグリッド700におけるマシンが失われると、システムは、インメモリバックアップをインメモリプライマリにプロモートし得る。このプロセスの一部として、システムは新しい永続化パーティションをディスク上に作成し得るとともに、メモリにおけるデータから他のメンバー上に1つ以上のインメモリバックアップを作成し得る。
【0051】
さらに、2つ以上(バックアップカウントに依存する)のメンバープロセスが同時に消えることによりインメモリデータ損失が発生すると、システムは、ディスクに対するビジビリティを有するメンバーが存在する場合、ディスク上の永続バージョンから新しいインメモリプライマリをリカバリし得る。
【0052】
図7に示されるように、ローカルディスクA711に関連付けられるマシンが失われると、永続化パーティション721は利用不可能になり得る。そのような場合、分散データグリッド700は自身をリバランスし得る。たとえば、分散データグリッド700は、ローカルディスクB712またはローカルディスクC713のいずれかに永続化されるバックアップパーティションをプライマリパーティションとしてプロモートし得る。
【0053】
本発明の実施形態に従うと、分散データグリッド700は、システムが常に、最も新しい有効なパーティションをリストアすることを保証し得る。たとえば、ローカルディスクB712における永続化パーティション722は、ローカルディスクA711における永続化パーティション721が正しく更新され得ないか、または、パーティションの以前のオーナーの消滅により古いバージョンのパーティションが存在するので、より新しいバージョンのパーティションを含み得る。
【0054】
本発明の実施形態に従うと、分散データグリッド700は、永続化パーティション721〜723のディスカバリおよび/またはリカバリをサポートするためにリカバリクォーラムを使用し得る。リカバリクォーラムを使用することにより、永続性からのリカバリが阻止(gated)または保護され得る。したがって、分散データグリッド700は、失われたメンバーの数がインメモリ冗長性ターゲットを超える場合であってもデータが失われないことを保証し得る。
【0055】
さらに、分散データグリッド700は、すべての永続化パーティションがリカバリに先立って可視であることを保証し得る。たとえば、リカバリクォーラムは、(ローカルディスクおよび/またはクラスタ内のSANのような)可能なストレージ位置のすべてに対するビジビリティを保証するように構成され得る。さらに、分散データグリッド700は永続ストアから親のないパーティション(orphaned partition)をリカバリし得、それらを空のパーティションとして割り当て得る。
【0056】
さらに、分散データグリッド700は、リカバリクォーラムに基づいて異なるリカバリポリシーを確立し得る。たとえば、分散データグリッド700は、キャパシティに集中するSAN/共有ストレージポリシーを確立し得る。さらに、分散データグリッド700は、すべてのストレージ位置が到達可能であることを保証する分散/シェアードナッシングストレージポリシー(distributed/shared-nothing storage policies)を確立し得る。さらに、分散データグリッド700は、構成されたメンバーシップサイズおよびホストリストに基づいてさまざまなポリシーを確立し得る。
【0057】
本発明の実施形態に従うと、システムは、分散データグリッド700におけるさまざまなメンバー701〜705が規則的な態様でシャットダウン(および/または再起動)されることを可能にするとともに、サービスまたは全クラスタのグレースフルな中断/再開を可能にする。さらに、システムは、分散データグリッドのシャットダウンの間にパーティショントランスファーおよび永続ストアの移動を防止し得る。たとえば、休止されたサービス/クラスタは、新メンバーに加わり得ず、バックアップからパーティションをリストアし得ず、永続ストアから親のないパーティションをリカバリし得ず、空の親のないパーティションを割り当て得ず、パーティション分散を実行し得ない。
【0058】
図8は、本発明の実施形態に従った、分散データグリッドにおける分散永続ストアのリカバリをサポートするための例示的なフローチャートを示す。
図8に示されるように、ステップ801では、システムは、分散データグリッドにおける複数のメンバーが、1つ以上のキャッシュサービスに関連付けられる複数のパーティションを永続ストレージに永続することを可能にする。その後、ステップ802では、コーディネータは、分散データグリッドにおいて、複数のメンバーの間でパーティションオーナーシップのビューを同期し得る。さらに、ステップ803では、分散データグリッドは、同期されたビューに基づいて、分散データグリッドにおいてどのメンバーからどのパーティションがリカバリされ得るかについての分散コンセンサス(distributed consensus)を形成し得る。分散コンセンサスは、問題を解決するように協働するクラスタノード101〜106のような複数のクラスタメンバー(またはサーバノード)の間で到達される合意(agreement)である。
【0059】
永続ストアバージョニングおよびインテグリティ
図9は、本発明の実施形態に従った、分散データグリッドにおける永続ストアバージョニングをサポートすることについての図を示す。
図9に示されるように、分散データグリッド900は、異なるキャッシュサービスをサポートするよう、インメモリデータストア920においてさまざまなパーティション(たとえばパーティション901)を使用し得る。
【0060】
さらに、分散データグリッド900は、分散ローカルディスク910にパーティション901を永続するために永続ストア(たとえば永続化パーティション911)を使用し得る。
【0061】
システムは、分散ローカルディスク910における各永続化パーティションについて、一意識別子(unique identifier;ID)または一意バージョン番号906を提供し得る。
図9に示されるように、分散データグリッド900におけるメンバー902は、永続化パーティション911について、グローバル一意識別子(GUID: globally unique identifier)921を生成し得る。GUID921は、特別なネーミングフォーマットを使用してさまざまなタイプの情報を含み得る。
【0062】
たとえば、GUID921は少なくとも、パーティション番号(またはパーティションID903)と、パーティション901に関連付けられるパーティションバージョン番号911とを含み得る。さらに、GUID921は、メンバー902がGUID921を生成することを示すメンバーID904を含み得る。
【0063】
さらに、GUID921は、パーティション901が最初に永続化される時間を示すタイムスタンプ905のような他の情報を含み得る。タイムスタンプ905は、グローバルウォールクロックではなく、論理時間のスタンプ(たとえば各パーティションについてのベクトルクロックのスタンプ)である。したがって、システムは、如何なる種類の障害またはトランスファーシナリオに直面した場合でも、GUIDスタンプが単調に前進することを保証し得る。
【0064】
本発明の実施形態に従うと、分散データグリッド900は、単調増加するオーダで、各永続化パーティションについてバージョン番号910を維持し得る。したがって、システムは、分散データグリッド900における任意のメンバーまたはオーナーシップの変更でのデータ変異(data mutation)を説明し得る(account for)。
【0065】
図10は、本発明の実施形態に従った、分散データグリッドにおける永続ストアのインテグリティをサポートすることについての図を示す。
図10に示されるように、分散データグリッド1000における永続ストア1001は、キャッシュID1021〜1123に各々が関連付けられる異なるキャッシュA1011〜C1013からのキャッシュコンテンツを含み得る。
【0066】
さらに、システムは、永続ストア1001にシールオペレーション(seal operation)1002を適用し得る。シールオペレーション1002は、永続ストア1001が完全に初期化されるとともにリカバリされる資格があることを保証し得る。
【0067】
さらに、システムは、永続ストア1001に対して確認オペレーション1003を適用し得る。確認オペレーション1003は、永続ストア1001がシールされたかどうかチェックし得る。たとえば、システムは、永続ストア1001がシールされていない場合、永続ストア1001におけるキャッシュコンテンツが有効ではないことを決定し得る。
【0068】
したがって、システムは、分散データグリッド1000が常に有効な永続化パーティションをリストアし、かつ、カスケードクラスタ障害により引き起こされ得る部分的なコピーをリカバリすることを回避することを保証し得る。
【0069】
図11は、本発明の実施形態に従った、分散データグリッドにおいて永続化パーティションをリストアすることについての図を示す。
図11に示されるように、分散データグリッド1100は、分散ローカルディスク1110においてさまざまな永続化パーティション1111〜1113を格納し得る。
【0070】
分散ローカルディスク1110に格納された各永続化パーティション1111〜1113は、たとえばGUID1141〜1143といったグローバル一意識別子(GUID)に関連付けられ得る。GUID1141〜1143は、少なくともパーティション番号(すなわちパーティションid)およびバージョン番号を含む異なるタイプの情報を含み得る。
【0071】
本発明の実施形態に従うと、分散データグリッド1100におけるメンバー1101〜1102は、分散ローカルディスク1110における永続化パーティション1011〜1013に対する異なるビジビリティを有し得る。システムは、どのメンバーが特定の永続化パーティション1111〜1113に対してビジビリティを有し得ることについての情報を含むGUID1141〜1143を構成し得る。
【0072】
さらに、分散ローカルディスク1110におけるカスケード障害の結果、同じ永続化パーティション1011〜1013の複数バージョンが、分散データグリッド1100の異なるメンバー1101〜1102上に存在し得る。これらの異なるバージョンを明確にするために、分散データグリッド1100におけるメンバー1101〜1102の各々は、発見される永続化パーティションの各々について、(パーティション番号および他の情報を含み得る)GUID1141〜1143を報告し得る。本発明の実施形態に従うと、パーティションについて最も新しいGUIDの存在を報告するメンバーのみがリカバリのために考慮され得る。
【0073】
図11に示されるように、分散データグリッド1100における各メンバー1101〜1102は、ローカルビジビリティに基づいて、分散ローカルディスク1110から、利用可能なGUIDのリスト1121〜1122を収集し得る。その後、各メンバー1101〜1102は、利用可能なGUIDのリスト1121〜1122を分散データグリッド1100におけるレゾルバ1103に提供(または登録)し得、レゾルバ1103は、GUID1141〜1143においてエンコードされたパーティション番号およびバージョン情報に基づいて、異なるパーティションについて最新のGUID1130を決定し得る。
【0074】
さらに、システムの分散的な性質により、分散ローカルディスク1110は、同じパーティションの複数の異なるバージョンを含み得る。言いかえれば、レゾルバ1103は、同じパーティション番号および異なるバージョン番号を含む複数のGUIDを受け取り得る。
【0075】
そのような場合、レゾルバ1103は、同じパーティションに関連付けられる各GUIDからバージョン番号を取得し得るとともに、どのGUIDが最も新しいバージョン番号を有しているかを判定し得る。さらに、分散データグリッド1100は、シールオペレーションおよび確認オペレーションの実行に基づいて、最も新しいバージョン番号を有する永続化パーティションが有効であることを保証し得る。
【0076】
さらに、レゾルバ1103は、GUID1141〜1143においてエンコードされたメンバーID情報に基づいて、分散データグリッド1100におけるどのメンバー1101〜1102が特定の永続化パーティション1111〜1113をリカバリすることを担うかを決定し得る。
【0077】
その後、レゾルバ1103は、最新のGUIDのリスト1131〜1132を含み得るパーティションリカバリ割当を各異なるメンバー1101〜1102に提供し得る。したがって、メンバー1101〜1102は、永続化パーティション1111〜1113をリストアする実際の動作を行ない得る。
【0078】
したがって、システムは、分散データグリッド1100が常に任意の永続化パーティションの最新の有効なバージョンをリストアし、かつ、カスケードクラスタ障害により引き起こされ得る部分的なコピーをリカバリすることを回避し得ることを保証し得る。
【0079】
図12は、本発明の実施形態に従った、分散データグリッドにおける永続ストアのバージョニングおよびインテグリティをサポートするための例示的なフローチャートを示す。
図12に示されるように、ステップ1201では、システムは、分散データグリッドの1つ以上のメンバーから複数の識別子(たとえばGUID)を受け取り得、上記の各識別子は、分散データグリッドについて永続ストレージにおける永続化パーティションに関連付けられる。その後、ステップ1202では、システムは、各パーティションについて識別子を選択し得、各選択された識別子は、パーティションの最も新しい有効なバージョンに関連付けられる。さらに、ステップ1203では、システムは、選択された識別子に関連付けられる永続化パーティションから上記パーティションをリカバリすることを担う、分散データグリッドにおけるメンバーを決定し得る。
【0080】
実行中のシステムの永続スナップショット
図13は、本発明の実施形態に従った、分散データグリッドにおける実行中のシステムの永続スナップショットを提供することについての図を示す。
図13に示されるように、分散データグリッド1300は、インメモリデータストア1302を使用して、さまざまなキャッシュサービス1320をサポートし得る。
【0081】
さらに、システムは、オンデマンドで任意の特定の時に、キャッシュサービス1320をサポートする、インメモリデータストア1302上にて実行中のシステムのスナップショット1301を取得するよう、ユーザが管理ツール1310を使用することを可能にする。たとえば、スナップショット1301は、実行中のシステムのバックアップを一晩のうちに作成するように使用され得る。
【0082】
本発明の実施形態に従うと、システムは、スナップショット1301を取る前に、キャッシュサービス1320を停止し得る。したがって、システムは、スナップショット1301を取るために時間において一貫したポイントを提供し得る。その後、スナップショット1301が取られた後、キャッシュサービス1320が再開され得る。
【0083】
さらに、スナップショット1301は、各パーティション化されたキャッシュサービス1320の一貫したビューを提供し得る。たとえば、スナップショット1301は、当該パーティション化されたキャッシュサービス1320についてのメタデータ1311およびキャッシュデータ1312を含む、実行中のシステムの状態情報のカタログを提供し得る。さらに、システムは、中央位置(たとえばSAN1321)または分散ローカルディスク1322のいずれかにスナップショット1301を格納し得る。
【0084】
さらに、スナップショット1301におけるさまざまなアーティファクトが作成され分散ローカルディスク1322に格納される場合、システムは、分散ローカルディスク1322からスナップショット1301の永続状態情報を抽出するよう、
プラガブル(またはポータブル)アーカイバ1303を使用し得るとともに、監査または他の目的に使用可能である単一のアーカイブユニット1330を作成し得る。
【0085】
したがって、システムは、連続的な態様で分散データグリッド1300にキャッシュコンテンツを永続する代わりに、分散データグリッド1300においてパーティション化されたキャッシュサービスの状態について、ユーザがスナップショットを取ることを可能にする。
【0086】
図14は、本発明の実施形態に従った、分散データグリッドにおける実行中のシステムの永続スナップショットを提供するための例示的なフローチャートを示す。
図14に示されるように、ステップ1401では、システムは、分散データグリッドにおいて、1つ以上のキャッシュサービスが複数のクラスタメンバー上で実行されることを可能にする。その後、ステップ1402では、システムは、分散データグリッドにおける複数のクラスタメンバーから、上記1つ以上のキャッシュサービスに関連付けられる状態情報のカタログを収集し得る。さらに、ステップ1403では、システムは、分散データグリッド上で実行される上記1つ以上のキャッシュサービスについてのスナップショットを作成し得る。
【0087】
図15は、本発明のある実施形態に従って使用され得るコーディネータ1500の簡略ブロック図である。コーディネータ1500のブロックは、本発明の原理を実施するために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せによって実現され得る。当業者であれば、
図15に記載されるブロックは、上述のように、本発明の原理を実現するために、組み合されてもよく、またはサブブロックへと分離されてもよいということが理解される。したがって、本願明細書における記載は、本願明細書において記載される機能ブロックの任意の可能な組合せ、分離、またはさらなる定義をサポートし得る。
【0088】
図15において、以前に記載された任意の分散データグリッドのような分散データグリッドのために使用され得るコーディネータ1500が示される。分散データグリッドは、1つ以上のコミュニケーションチャンネルに相互接続される複数のサーバノードを含み得、当該分散データグリッドにおける複数のメンバーが、永続ストレージにおける1つ以上のキャッシュサービスに関連付けられる複数のパーティションを永続化する。
【0089】
示されるように、コーディネータは、分散データグリッドにおける複数のメンバーの間でパーティションオーナーシップのビューを同期するように構成され得る同期ユニット1501と、分散データグリッドにおいてどのパーティションがどのメンバーからリカバリされるかについての分散コンセンサスを形成するように構成され得る形成ユニット1503とを含み得る。一実施形態において、各ユニットは、コンピュータプログラム命令を読み出すことにより対応するプロセスを実行するプロセッサとして実現され得る。
【0090】
一実施形態において、複数の分散ローカルディスクが永続ストレージに含まれ得、分散データグリッドにおける各メンバーは、1つ以上の分散ローカルディスクに対するビジビリティのみを有し得る。
【0091】
一実施形態において、コーディネータ1500は、当該分散データグリッドにおけるメンバーであり得る。
【0092】
一実施形態において、コーディネータ1500はさらに、上記複数の永続化されたパーティションについての情報を分散データグリッドにおける複数のメンバーから受け取るように構成される受取ユニット(1505)を含み得る。
【0093】
一実施形態において、リカバリクォーラムは、すべての永続化されたパーティションがリカバリに先立って可視であることを保証するために使用され得る。
【0094】
一実施形態において、永続ストレージは、1つ以上のストレージエリアネットワーク(SAN)を含み得、上記1つ以上のSANは、分散データグリッドにおいて複数のメンバーによって共有されること、複数のストレージ位置にて複数のメンバーによって共有されること、および、1つ以上のローカルディスクを有するハイブリッドな展開において複数のメンバーによって共有されることのうち少なくともいずれかである。
【0095】
一実施形態において、コーディネータ1500は、分散コンセンサスに基づいて、分散データグリッドにおける各メンバーについてパーティションリカバリ割当を決定するように構成され得る決定ユニット1507を含み得る。
【0096】
一実施形態において、決定ユニット1507は、
図5に示されるような
プラガブルパーティション割当ストラテジーコンポーネント520のような、パーティションリカバリ割当を決定する
プラガブルパーティション割当ストラテジーコンポーネントであり得る。
【0097】
一実施形態において、コーディネータは、分散データグリッドにおける各メンバーにパーティションリカバリ割当を提供するように構成され得る提供ユニット1509をさらに含み、各メンバーは、分散データグリッドに関連付けられる永続ストレージから1つ以上のパーティションをリカバリするよう動作する。
【0098】
当業者は、コーディネータ1500は、以前の例示的な実施形態において記載されたコーディネータ510、610および710の例示的な実現例であるということを理解し得る。当業者はさらに、本発明の原理に従って、上述したようなオペレーションのいずれかまたはその組合せを実行するよう、コーディネータ1500およびそのコンポーネントが所望のように修正され得るということを理解し得る。
【0099】
図16を参照して、本発明の実施形態に従ったシステム1600が示される。
図16は、システム1600によって実現される機能的な構成の図を示す。システム1600は、永続ストレージ1610、マネージャ1620、複数のメンバー1630、コーディネータ1640、およびコンセンサス形成部1650を含む。
【0100】
永続ストレージ1610は、1つ以上のキャッシュサービスに関連付けられる複数のパーティションを格納する。マネージャ1620は、分散データグリッドにおける複数のメンバー1630が、永続ストレージ1610において1つ以上のキャッシュサービスに関連付けられる複数のパーティションを管理することを可能にする。コーディネータ1640は、分散データグリッドにおける複数のメンバー1630の間でパーティションオーナーシップのビューを同期する。コンセンサス形成部1650は、どのパーティションが分散データグリッドにおけるどのメンバーからリカバリされるかについての分散コンセンサスを、同期されたビューに基づいて形成する。
【0101】
図17は、周知のハードウェア要素を含むコンピュータシステム1700の図を示す。すなわち、コンピュータシステム1700は、中央処理装置(CPU)1710、マウス1720、キーボード1730、ランダムアクセスメモリ(RAM)1740、ハードディスク1750、ディスクドライブ1760、通信インターフェイス(I/F)1770、およびモニタ1780を含む。コンピュータシステム1700は、複数のメンバー1630のうちのメンバーであり得る。
【0102】
ある局面において、マネージャ1620、コーディネータ1640およびコンセンサス形成部1650は、CPU1710によって実現される。さらなる局面では、マネージャ1620、コーディネータ1640およびコンセンサス形成部1650が実現されるように、1つより多いプロセッサが使用され得る。すなわち、マネージャ1620、コーディネータ1640およびコンセンサス形成部1650のうちのいずれかは互いから物理的に遠隔である。
【0103】
さらに別の局面において、システム1600は、マネージャ1620、コーディネータ1640および/またはコンセンサス形成部1650として機能する複数のハードワイヤード回路を使用することにより実現され得る。
【0104】
本発明は、1つ以上のプロセッサ、メモリ、および/または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【0105】
いくつかの実施形態では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納したストレージ媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピーディスク(登録商標)、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気または光学カード、ナノシステム(分子メモリICを含む)、または命令および/またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【0106】
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記修正例および変形例は、記載された機能の任意の関連する組合せを含む。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。