特許第6263596号(P6263596)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エイチジーエスティーネザーランドビーブイの特許一覧

特許6263596分散キャッシュメモリにおける適応分割用のシステム及び方法
<>
  • 特許6263596-分散キャッシュメモリにおける適応分割用のシステム及び方法 図000002
  • 特許6263596-分散キャッシュメモリにおける適応分割用のシステム及び方法 図000003
  • 特許6263596-分散キャッシュメモリにおける適応分割用のシステム及び方法 図000004
  • 特許6263596-分散キャッシュメモリにおける適応分割用のシステム及び方法 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6263596
(24)【登録日】2017年12月22日
(45)【発行日】2018年1月17日
(54)【発明の名称】分散キャッシュメモリにおける適応分割用のシステム及び方法
(51)【国際特許分類】
   G06F 12/08 20160101AFI20180104BHJP
   G06F 12/00 20060101ALI20180104BHJP
【FI】
   G06F12/08 523Z
   G06F12/08 543B
   G06F12/08 513
   G06F12/00 514M
【請求項の数】24
【外国語出願】
【全頁数】14
(21)【出願番号】特願2016-221690(P2016-221690)
(22)【出願日】2016年11月14日
(65)【公開番号】特開2017-134817(P2017-134817A)
(43)【公開日】2017年8月3日
【審査請求日】2017年3月13日
(31)【優先権主張番号】14/941,125
(32)【優先日】2015年11月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】503116280
【氏名又は名称】エイチジーエスティーネザーランドビーブイ
(74)【代理人】
【識別番号】110002572
【氏名又は名称】特許業務法人平木国際特許事務所
(72)【発明者】
【氏名】プルキット アムビカナンダン ミスラ
(72)【発明者】
【氏名】ダニエル ピーター ノエ
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2014− 38494(JP,A)
【文献】 特開2004−164606(JP,A)
【文献】 特開2004−139366(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用の方法であって、前記分散キャッシュが、キャッシュスライスに分割され、前記方法が、
第1のルーティング表に基づいて、第1の複数のキャッシュスライスを第1のコンピュータノードに割り当てるステップと、
第1の期間後に、前記コンピュータノードの前記キャッシュスライス用のアクセス統計に基づいて、第2の複数のキャッシュスライスを前記第1のコンピュータノードに、且つ前記第1の複数のキャッシュスライスの第1のサブセットを前記第1のコンピュータノード以外の少なくとも1つのコンピュータノードに再割り当てするステップと、
前記第1の期間後に、キャッシュスライスの割り当てによる第2のルーティング表を前記コンピュータノードに提供するステップと、
を含む方法。
【請求項2】
前記アクセス統計が、各キャッシュスライス及び期間用のアクセスサイズに基づく前記キャッシュスライス用の転送速度を含む、請求項1に記載の方法。
【請求項3】
前記第2の複数のキャッシュスライス、及び前記第1の複数のキャッシュスライスの前記第1のサブセットの前記再割り当てが、ネットワーク利用の低減に帰着する、請求項1に記載の方法。
【請求項4】
前記第2の複数のキャッシュスライス、及び前記第1の複数のキャッシュスライスの前記第1のサブセットを決定するために、前記第1のルーティング表及び前記第2のルーティング表を比較することを更に含む、請求項1に記載の方法。
【請求項5】
(a)前記第1の複数のキャッシュスライスの前記第1のサブセットから汚染データをフラッシュするステップと、
(b)前記第1の複数のキャッシュスライスの前記第1のサブセットをライトスルーキャッシュスライスにするステップと、
(c)前記第2の複数のキャッシュスライスから既存データを削除するステップと、
を更に含む、請求項4に記載の方法。
【請求項6】
(a)、(b)及び(c)の少なくとも1つの間に第1のエラーが発生したかどうかを決定することを更に含む、請求項5に記載の方法。
【請求項7】
前記第1のエラーが発生した場合に、前記第1のルーティング表に基づいて、前記第1の複数のキャッシュスライスを前記第1のコンピュータノードに再割り当てすることを更に含む、請求項6に記載の方法。
【請求項8】
たとえ前記第1のエラーが発生しなかったとしても、前記第1のコンピュータノードにおいて、データ要求のサービスを中止することを更に含む、請求項6に記載の方法。
【請求項9】
前記第1のコンピュータノードにおいて、前記第2のルーティング表に基づいてデータ要求の宛先を決定することを更に含む、請求項8に記載の方法。
【請求項10】
前記第2のルーティング表に基づいたデータ要求の前記宛先の決定中に、第2のエラーが発生したかどうかを決定することを更に含む、請求項9に記載の方法。
【請求項11】
前記第2のエラーが発生した場合に、前記第1のルーティング表に基づいて、前記第1の複数のキャッシュスライスを前記第1のコンピュータノードに再割り当てすることを更に含む、請求項10に記載の方法。
【請求項12】
前記第1のエラーが発生しなかった場合に、前記第1のコンピュータノードにおいて、データ要求のサービスを再開することを更に含む、請求項11に記載の方法。
【請求項13】
ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用のシステムであって、
キャッシュスライスに分割された前記分散キャッシュと、
第1のコンピュータノードであって、
第1のルーティング表に基づいて、第1の複数のキャッシュスライスを前記第1のコンピュータノードに割り当てるように、
第1の期間後に、前記コンピュータノードの前記キャッシュスライス用のアクセス統計に基づいて、第2の複数のキャッシュスライスを前記第1のコンピュータノードに再割り当てし、前記第1の複数のキャッシュスライスの第1のサブセットを前記第1のコンピュータノード以外の少なくとも1つのコンピュータノードに再割り当てするように、且つ
前記第1の期間後に、キャッシュスライスの割り当てによる第2のルーティング表を前記コンピュータノードに提供するように構成される第1のコンピュータノードと、
を含むシステム。
【請求項14】
前記アクセス統計が、各キャッシュスライス及び期間用のアクセスサイズに基づく前記キャッシュスライス用の転送速度を含む、請求項13に記載のシステム。
【請求項15】
前記第2の複数のキャッシュスライス、及び前記第1の複数のキャッシュスライスの前記第1のサブセットの前記再割り当てが、ネットワーク利用の低減に帰着する、請求項13に記載のシステム。
【請求項16】
前記第1のコンピュータノードが、前記第2の複数のキャッシュスライス、及び前記第1の複数のキャッシュスライスの前記第1のサブセットを決定するために、前記第1のルーティング表及び前記第2のルーティング表を比較するように更に構成される、請求項13に記載のシステム。
【請求項17】
前記第1のコンピュータノードが、
(a)前記第1の複数のキャッシュスライスの前記第1のサブセットから汚染データをフラッシュするように、
(b)前記第1の複数のキャッシュスライスの前記第1のサブセットをライトスルーキャッシュスライスにするように、且つ
(c)前記第2の複数のキャッシュスライスから既存データを削除するように、
更に構成される、請求項16に記載のシステム。
【請求項18】
前記第1のコンピュータノードが、(a)、(b)及び(c)の少なくとも1つの間に第1のエラーが発生したかどうかを決定するように更に構成される、請求項17に記載のシステム。
【請求項19】
前記第1のコンピュータノードが、前記第1のエラーが発生した場合に、前記第1のルーティング表に基づいて、前記第1の複数のキャッシュスライスを前記第1のコンピュータノードに再割り当てするように更に構成される、請求項18に記載のシステム。
【請求項20】
たとえ前記第1のエラーが発生しなかったとしても、前記第1のコンピュータノードが、データ要求のサービスを中止するように更に構成される、請求項18に記載のシステム。
【請求項21】
前記第1のコンピュータノードが、前記第2のルーティング表に基づいてデータ要求の宛先を決定するように更に構成される、請求項20に記載のシステム。
【請求項22】
前記第1のコンピュータノードが、前記第2のルーティング表に基づいてデータ要求の前記宛先の決定中に第2のエラーが発生したかどうかを決定するように更に構成される、請求項21に記載のシステム。
【請求項23】
前記第1のコンピュータノードが、前記第2のエラーが発生した場合に、前記第1のルーティング表に基づいて、前記第1の複数のキャッシュスライスを前記第1のコンピュータノードに再割り当てするように更に構成される、請求項22に記載のシステム。
【請求項24】
前記第1のエラーが発生しなかった場合に、前記第1のコンピュータノードが、データ要求のサービスを再開するように更に構成される、請求項23に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分散キャッシュ又は記憶メモリの適応分割用のシステム及び方法に関する。
【背景技術】
【0002】
コンピュータクラスタは、ネットワークを通して相互接続できる2つ以上のコンピュータノードからなる。コンピュータクラスタは、分散記憶メモリシステム、例えば分散キャッシュシステムを実現することができる。クラスタの総記憶容量は、典型的には、標準サイズの多数のスライスに分割される。スライスは、クラスタのコンピュータノードにわたって分散される。各スライスは、唯一のコンピュータノードにローカルにすることができる。リモートコンピュータノードによって所有されるスライスに属する論理ブロックアドレス(LBA)用のコンピュータノードにおけるどんな要求も、リモートノード上で処理するためにネットワークを通じて送信される必要がある。
【0003】
これは、ネットワーク上のトラフィックを増加させる可能性があり、それは、ネットワークの競合故に、ネットワーク帯域幅及び待ち時間を悪化させる可能性がある。従って、スライスを適切に分散するためのシステム及び方法が望ましく、それは、ネットワーク性能に対するリモートデータ要求の強い影響を低減することができる。
【発明の概要】
【課題を解決するための手段】
【0004】
キャッシュスライスに分割される分散キャッシュの適応分割を実行するための方法及びシステムが提供される。分散キャッシュのスライスは、ルーティング表に基づいて、クラスタにおける異なるコンピュータノードに割り当てられる。所定の期間後に、キャッシュスライスは、アクセス統計に基づいてクラスタの他のコンピュータノードに再割り当てすることができ、クラスタにおけるコンピュータノードへのキャッシュスライスの再割り当てに対応する新しいルーティング表が提供される。
【0005】
本開示の態様によれば、ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用の方法が提供され、分散キャッシュは、キャッシュスライスに分割される。方法は、第1のルーティング表に基づいて、第1の複数のキャッシュスライスを第1のコンピュータノードに割り当てるステップと、第1の期間後に、コンピュータノードのキャッシュスライス用のアクセス統計に基づいて、第2の複数のキャッシュスライスを第1のコンピュータノードに、且つ第1の複数のキャッシュスライスの第1のサブセットを第1のコンピュータノード以外の少なくとも1つのコンピュータノードに再割り当てするステップと、第1の期間後に、キャッシュスライスの割り当てによる第2のルーティング表をコンピュータノードに提供するステップと、を含むことができる。
【0006】
本開示の態様によれば、ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用のシステムが提供される。システムは、キャッシュスライスに分割された分散キャッシュ、及び第1のコンピュータノードを含むことができる。第1のコンピュータノードは、第1のルーティング表に基づいて、第1の複数のキャッシュスライスを第1のコンピュータノードに割り当てるように構成され、第1の期間後に、コンピュータノードのキャッシュスライス用のアクセス統計に基づいて、第2の複数のキャッシュスライスを第1のコンピュータノードに再割り当てし、第1の複数のキャッシュスライスの第1のサブセットを第1のコンピュータノード以外の少なくとも1つのコンピュータノードに再割り当てするように構成され、且つ第1の期間後に、キャッシュスライスの割り当てによる第2のルーティング表をコンピュータノードに提供するように構成され得る。
【0007】
本開示の様々な目的、特徴及び利点は、次の図面と共に検討された場合には、以下の詳細な説明を参照して、より完全に理解することができる。以下の図面において、同様の参照数字は、同様の要素を識別する。以下の図面は、実例のためだけであり、本発明の限定となるようには意図されていない。本発明の範囲は、続く特許請求の範囲で述べられる。
【図面の簡単な説明】
【0008】
図1】本開示の態様に従って、例示的なクラスタシステムを示す。
図2】本開示の態様に従って、例示的なクラスタシステム、クラスタノード当たりのデータ転送速度、及び例示的なスライス割り当てを示す。
図3】本開示の態様に従って、例示的なクラスタシステム、クラスタノード当たりのデータ転送速度、及びスライス再割り当てを示す。
図4】本開示の態様に従って、クラスタシステムにおいてルーティングマップを更新するための例示的な方法を示す。
【発明を実施するための形態】
【0009】
分散キャッシュシステムの適応分割用のシステム及び方法が開示される。クラスタの総キャッシュは、多数のスライスに分割され、それらのスライスは、クラスタのコンピュータノードに関連付けられる。開示されるシステム及び方法は、クラスタのネットワーク利用を検討し、且つ新しいコンピュータノードにスライスを再割り当てすることができる。新しい割り当てを表す新しいルーティングマップは、クラスタの全てのコンピュータノードに送ることができる。
【0010】
図1は、コンピュータノードの例示的なクラスタ100を示す。具体的には、クラスタ100は、コンピュータノード102、104及び106を含む。ノード102は、サーバ108及び記憶装置110を含み、ノード104は、サーバ112及び記憶装置114を含み、ノード106は、サーバ116及び記憶装置118を含む。ノード102、104及び106は、ネットワーク120を通して相互接続される。幾つかの先行技術の分散記憶システムは、典型的には、ストライピングを通じコンピュータノードにわたってスライスを分散する。データストライピング技術は、例えばラウンドロビン方式を通して、異なるコンピュータノードの物理的な記憶装置上に論理的に連続するスライスを記憶する。例えば、クラスタ100におけるスライスは、ノード102、104及び106に、この順序で連続的に割り当てることができる。他の先行技術の分散記憶システムは、例えばハッシュ関数を用いて、クラスタのノード間にスライスをランダムに分散することができる。
【0011】
これらの先行技術のシステムは、貧弱なスケーラビリティを示す。例えば、クラスタにおける「N」ノード間のスライスのランダム及び均一な分散を仮定すると、特定のノードのサーバから要求されたデータパケットが、ノードにローカルに記憶されている可能性は、単に1/Nである。要求されたデータパケットがローカルに記憶されていない場合に、データパケットの要求は、ネットワークを通じてリモートノードに送信される必要があり、データパケットは、それを要求したノードへとネットワークを通じて転送される必要がある。ノードの数が増加するにつれて、データパケット要求を満たすために、ますます多くのデータパケットが、ネットワークを通じて転送されなければならない。これは、ネットワークの利用可能な帯域幅に否定的な影響を及ぼす可能性がある。上位層アプリケーションがまた、ネットワーク帯域幅を求めて競争しようとする可能性があるので、システムは、ネットワーク輻輳故に貧弱な性能を有する可能性がある。
【0012】
上記のように、アクセスに関する事前知識なしに、スライスは、最初にクラスタにおける全てのノードにわたってストライピングされ得る。ノードは、クラスタにおける全てのスライス所有権に関する情報を備えたルーティングマップを有することができ、ルーティングマップは、要求を適切な所有者に送るために用いることができる。各ノードはまた、全てのスライス用のアクセス統計を維持することができる。この情報を記憶するためのデータ構造は、スライスの数に従ったサイズにできるアレイとすることができ、且つまたタイムスタンプ用のフィールドをアレイに有することができる。スライス番号は、アレイインデックスからほのめかすことができ、アレイにおける各インデックスは、そのスライス用のアクセス統計、例えばそのノードからその特定のスライスに対して読み取られた且つ/又は書き込まれたデータ量を示すことができる。タイムスタンプは、データ速度(MB/秒)が、データ構造における情報の最後のリセットからの期間用に容易に計算できるように、全データ構造のために記憶することができる。
【0013】
特定のノードが、論理ブロックアドレス(LBA)用の要求を受信した時はいつも、それは、LBAが属するスライスを決定することができ、次に、その特定のスライスの所有者ノードを決定するためにルーティングマップを調べることができる。特定のノードが、特定のスライスの所有者である場合に、それは、どんなネットワーク資源も消費せずに、要求をローカルでサービスすることができる。特定のスライスが、別のノードによって所有されている場合に、要求は、その所有者に送られる。それに応じて、特定のノードはまた、そのスライス用のアクセス統計カウンタを修正することができる。
【0014】
本開示の態様によれば、開示されるシステム及び方法は、所定の期間後に、各スライス用の新しい所有者を決定することができ、それは、ネットワーク利用を低減することが可能である。新しい所有者は、新しい所有者に関する決定を通知するために、アクセス統計に関する十分な情報が収集される所定の期間後に決定することができる。開示される方法が、新しい所有者にスライスが変わり得ると決定した場合に、そのスライスは、例えばキャッシュを作り直すためのユーザの介入も要求もなしに、動的に再割り当てられ得る。
【0015】
1つを超えるノードが、同じスライス内のデータにアクセスできるので、スライスが新しい所有者に再割り当てされた後で、他のノードは、やはり、リモートでスライスにアクセスすることを要求してもよい。従って、ネットワークは、やはり、リモートノードにおけるデータアクセス要求に対応するべきである。本開示の態様によれば、スライスは、アクセスの場所に基づいてノードに、例えば最も多くのデータを転送するノードに再割り当てすることができ、それは、ネットワークに対する影響を最小化することに帰着し得る。
【0016】
ネットワーク利用の低減に加えて、スライスの動的な割り当てはまた、スケーラビリティを改善することができる。何故なら、それが、クラスタへのより多くのコンピュータノードの追加を可能にするからである。開示されるシステム及び方法はまた、例えば新しいアプリケーション、アプリケーション障害の場合に、又は負荷分散用に、アクセスパターンの変化によりよく適合することができる。
【0017】
図2及び3は、スライスの例示的で動的な割り当て及び結果としてのネットワーク利用の低減を示す。具体的には、図2は、2つのノード(N1、N2)を備えたクラスタ200を示す。クラスタの総キャッシュは、4つのスライス202に分割される。最初にスライス202は、ルーティングマップ204に示されているように、ラウンドロビン方式で、ノードN1とN2との間に割り当てられる。具体的には、スライス{0、2}は、ノードN1に割り当てられ、スライス{1、3}は、ノードN2に割り当てられる。スライスにおけるデータ用のどんな受信された要求も、ルーティングマップ204に従ってサービスされる。例えば、スライス0に存在するLBA用のノードN1に対する要求は、ローカルにサービスされる。スライス1に存在するLBA用のノードN1に対する要求は、例えばノードN2にLBAを要求することによって、ネットワークを通じてサービスされる。上記のように、開示されるシステム及び方法は、所定の期間後に、例えばクラスタにおけるノード用のアクセス統計を検討することによって、スライス用の新しい所有者を決定することができる。実例的な例として、表206は、ノードN1用のアクセス統計を示し、表208は、ノードN2用のアクセス統計を示す。例えば、表206は、ノードN1が、50MB/sの転送速度でスライス0にデータを要求し210、且つ100MB/sの転送速度でスライス1にデータを要求する212ことを示す。上記のように、リモート要求だけが、総利用可能ネットワーク帯域幅を低減するネットワーク利用を増加させ、従って、ノードN1に関し、リモートスライス、例えばスライス1及び3におけるデータの要求は、ネットワーク利用に寄与する。従って、ノードN2に関し、リモートスライス、例えばスライス0及び2におけるデータの要求は、ネットワーク利用に寄与する。表206及び208におけるアクセス統計に基づいて、ノードN1用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度(N1)=転送速度スライス1+転送速度スライス3=100(Mb/s)+30(Mb/s)=130(Mb/s)
【0018】
同様に、ノードN2用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度(N2)=転送速度スライス0+転送速度スライス2=20(Mb/s)+60(Mb/s)=80(Mb/s)
【0019】
従って、総ネットワーク利用は、130MB/s+80MB/s=210MB/sであり、それは高い。本開示の態様によれば、リモート転送割合及び総ネットワーク利用に基づいて、スライスは、総ネットワーク利用を低減するために再割り当てすることができる。これは、図3に示されている。例えば、図3は、図2のクラスタを示し、そこでは、スライスの2つが、再割り当てされた。具体的には、スライス1は、前にノードN2に割り当てられたが、ノードN1に再割り当てされ302、スライス2は、前にノードN1に割り当てられたが、ノードN2に再割り当てされた304。全ての再割り当て後に、新しいルーティングマップ306は、全てのノードに配布され、その結果、各ノードは、新しいスライス割り当てに気付くことができる。
【0020】
再割り当て後に、ノードN1用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度(N1)=転送速度スライス2+転送速度スライス3=20(Mb/s)+30(Mb/s)=50(Mb/s)
【0021】
同様に、ノードN2用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度(N2)=転送速度スライス0+転送速度スライス1=20(Mb/s)+40(Mb/s)=60(Mb/s)
【0022】
従って、総ネットワーク利用は、50MB/s+60MB/s=110MB/sであり、それは、初期値と比較して著しく低く、例えば52.3%だけ低い。クラスタにおける各ノードは、それが所与の時間窓でアクセスした各スライス用に、アクセスサイズの累積値を、例えばバイトで維持することができる。次に、各スライスの転送速度は、アクセスサイズを窓サイズで割ることによって計算することができる。再マッピングのときに、各スライス用に、再マッピングアルゴリズムは、各ノードの転送速度をチェックし、最高転送速度を有するノードにスライスを割り当てることができる。スライスの現在の所有者が、特定のスライス用に最大転送速度を有する場合に、スライスは、再マッピングされる必要がない。多数のノードが、最高転送速度を有する場合に、同スコアは、例えば、アクセスサイズ、スライス所有権入れ換えの周期性、キャッシュ汚染、及び他の発見的方法を用いて壊すことができる。オリジナルで新しいネットワーク利用は、リモートノードによる各スライス用の転送速度の合計によって計算することができる。統計は、再マッピングのラウンド後にリセットすることができる。
【0023】
再マッピングの頻度は、管理者によって決定することができる。例えば、それは、一日の特定の時刻に、例えば要求トラフィックが低いときに実行することができる。再マッピングはまた、例えば、自動的に行うことができる。例えば、バックグランドにおけるプロセスは、各ノードから周期的に転送速度をポーリングし、且つ例えばアプリケーションアクセスパターンの変化故に、定常状態からの変化があるかどうかを決定することができる。
【0024】
本発明の代替の態様によれば、ノードにおけるキャッシュ空間の利用、所有権変更後に移動することが必要であろう汚染データの排除及び量などの他の発見的方法が、改善されたスライス配置を決定するために利用され得る。各ノードは、フラッシュできる汚染データの量を追跡することができる。スライスの再マッピングは、回避することができる。それは、閾値を超えて汚染データをフラッシュことを意味するであろう。再マッピング中の様々なノードによる大きなデータ量のフラッシングは、ディスクへのランダムな書き込みをもたらす可能性があり、従って再マッピングを実行する時間に影響する可能性があり、且つまたキャッシュミスにおいてディスクからデータをフェッチする必要のあるアプリケーションI/Oに影響する可能性がある。ノードが、例えば転送速度に基づいてスライス用の最適な所有者になり得るので、キャッシュ利用もまた考えられ得るが、しかしそれは、そのスライスをその最適な所有者に記憶することが性能を改善するであろうことを意味しない。各ノード用に、優先権が、転送速度に基づいて、それらのスライスに割り当てられ得る。キャッシュ利用と共にこれらの優先権は、特定のスライスが、所与のノードに再マッピングされるべきかどうかを決定するために、再マッピング中に使用することができる。キャッシュ利用が低い場合に、再マッピングが行われ得る。低くなければ、低い優先権のスライスのマッピングは、他のより高い優先権のスライスからデータを排除させる可能性があり、それは、性能に否定的に影響し得る。
【0025】
新しいルーティングマップが作成された後で、例えば、どんな休止時間もなしに、クラスタを削除も作り直すこともせず、長い期間にわたるデータ要求の処理を中断することもなく、各クラスタにおけるルーティングマップを動的に更新することが望ましい。
【0026】
本開示の態様によれば、新しいルーティングマップは、クラスタにおける全てのノードにわたってアトミックに更新することができる。例えば、ノードの1つは、更新を調整する責任を負うことができるマネージャノードに割り当てることができる。マネージャノードは、クラスタにおける全ての他のノードに新しいルーティングマップを提供することができ、且つそれらのノードに更新処理を開始するように要求することができる。本開示の態様によれば、更新処理は、3つのステップを含むことができる。第1のステップ中に、全てのノードは、新しいルーティングマップを現在のルーティングマップと個々に比較することができ、且つどのスライスがそれらに再割り当てされたか(例えば得られたスライス)、及びどのスライスが、もはやそれらに割り当てられないか(例えば失われたスライス)を決定することができる。
【0027】
現在のスライス所有者は、キャッシュミスにおいて、バックエンドからデータをフェッチすることができる。再マッピング中に、古い所有者が、全ての汚染データはフラッシュせず、且つ後続のデータをライトスルーとして処理した場合に、新しい所有者は、(リモートヒット期間が終了した後で)バックエンドから陳腐化したデータをフェッチすることに終わる可能性がある。全ての失われたスライス所有権に関し、ノードは、それらのスライス用にノードがキャッシュに有するどんな汚染データもフラッシュすることができ、且つまたそれらのスライスをライトスルーにすることができる。従って、フラッシュされた後で、どんな新しい書き込みも、再びスライスを汚染はしない。これは、どんなエラーの場合にも、スライスの古い所有者への依存があり得ないように、バックエンド(キャッシュされた装置)との一貫性を保証することができる。
【0028】
全ての得られたスライス所有権に関し、ノードは、キャッシュに存在するどんな既存データも削除することができる。この動作は、上記のように、失われたスライス所有権用のプロセスが、ノードが所有権を失ったスライスに属するデータを削除せずに汚染データをフラッシュするので、実行される。この動作は、どんな問題も引き起こさない。何故なら、所有権が失われたスライスに属するデータは、新しいデータがキャッシュされるときに、最終的にキャッシュから排除されるからである。例えば、スライスが新しい所有者に再マッピングされた場合に、古い所有者は、所有権変更の前に、スライスに関連するどんな汚染データもフラッシュすることができる。所有権変更後のリモートヒット期間に、新しい所有者は、キャッシュミスにおいてデータ用に古い所有者に問い合わせることができる。何故なら、バックエンドからデータを得る代わりに、古い所有者からデータを得ることが、より速くなり得るからである。これは、ネットワーク及びソリッドステートドライブアクセスが、ハードディスクドライブアクセスより速いので、一般に真である。所有権変更後の要求に基づいたキャッシングはまた、キャッシュ汚染を回避することができる。何故なら、古い所有者においてキャッシュされたスライスの全てのブロックが、新しい所有者によって必要とされるわけではないからである。リモートヒット期間は、有限の期間とすることができ、且つ新しい所有者のキャッシュのウォーミングアップ用にしようとすることができる。ブロックに対する読み出し要求に関し、新しい所有者は、ブロック用に古い所有者に問い合わせることができ、それをキャッシュすることができる。古い所有者がそのブロックを有しない場合に、新しい所有者は、バックエンドからそれをフェッチすることができる。その後の書き込み要求は、ブロックを修正することができ、それは、古い所有者におけるブロックのコピーを陳腐化することになろう。再マッピングの新しいラウンド中に、スライスがその古い所有者に再マッピングされる場合、古い所有者がまだ、そのブロックを自らのキャッシュに有している場合に、古い所有者は、読み出し要求に対して、陳腐化したデータを返すことになろう。この理由で、ノードが所有権を得るスライス用にノードが有している可能性があるどんな既存データも予め削除する。
【0029】
このステップの完了後に、各ノードは、ステップの完了のステータス、例えば、ノードが汚染データをうまくフラッシュし、どんな既存データも削除したかどうか、又はこのステップにおいてエラーがあったかどうかに関して、マネージャノードに通知することができる。本開示の態様によれば、全てのノードが、ステップをうまく完了したことを示した場合に、マネージャノードは、更新処理の第2のステップに移るように全てのノードに命令することができる。少なくとも1つのノードが、第1のステップ中にエラーがあったことを示した場合に、マネージャノードは、更新処理を中止するように全てのノードに命令することができる。
【0030】
第2のステップにおいて、マネージャノードは、全てのノードに、それらの要求のサービスを個々に休止するように(例えば受信した要求はキューに保持できる)、且つ新しいルーティングマップを適用するように命令することができる。このステップを完了した後で、各ノードは、ステップの完了のステータス、例えば、それらが新しいマップをうまく適用したかどうか、又はこのステップにエラーがあったかどうかに関してマネージャノードに通知することができる。ステップが成功だったことを全てのノードが示す場合に、マネージャノードは、更新処理の第3のステップに移るように全てのノードに命令することができる。少なくとも1つのノードが、第2のステップ中にエラーがあったことを示した場合に、マネージャノードは、更新処理を中止するように全てのノードに命令することができる。ノードが中止命令を受信した場合に、ノードは、新しいルーティングマップを廃棄することができ、且つ前のルーティングマップに従って、それらの要求の処理を再開することができる。本開示の代替の態様によれば、マネージャノードは、しばらくして最初からプロトコル再試行することができる。更新処理の第3のステップにおいて、全てのノードは、それらの要求のサービスを再開することができる。
【0031】
図4は、本開示の態様に従ってルーティングマップを更新するための例示的な方法400を示す。具体的には、マネージャノードは、全てのノードに新しいルーティングマップを送信することができ、且つ更新プロセスを開始するように全てのノードに要求することができる402。ひとたびノードが新しいルーティングマップを受信すると、ノードは、新しいルーティングマップを現在のルーティングマップと比較することができる404。次に、ノードは、それらが得たか且つ/又は失ったスライスを決定することができる406。全ての失われたスライス所有権に関し、ノードは、キャッシュにおけるそれらのスライス用の汚染データをフラッシュし、且つそれらのスライスをライトスルーにする408。全ての得られたスライス所有権に関し、ノードは、キャッシュに存在する可能性があるどんな既存データも削除する410。ノードのいずれかでエラーが発生した場合に412、マネージャノードは、プロセスを中止することができる414。たとえエラーが発生しなくても、ノードは、それらの要求のサービスを中止し416、新しいルーティングマップを適用することができる418。ノードのいずれかでエラーが発生した場合に420、マネージャノードは、プロセスを中止することができる414。エラーが発生しない場合に、ノードは、要求のサービスを再開することができる。
【0032】
全てのノードにわたってルーティングマップを更新した後で、スライスの新しい所有権は有効になる。しかしながら、新しい所有者は、所有権更新のちょうど終了したラウンド後に新しい所有者が得たスライス用のどんなデータも含まない。これは、どんなデータ整合性の問題ももたらさない。何故なら、所有権変更の前に、所有権が変わったスライスに属する全ての汚染データがフラッシュされ、従って、新しい所有者が、どんな要求もサービスするために、バックエンドからデータを常にフェッチすることができるからである。しかしながら、これは、待ち時間を増加させる可能性がある。何故なら、キャッシュは、再度ウォーミングする必要があり、それは、所有権変更の各ラウンド後に、鋸歯状の性能特性につながる可能性があるからである。
【0033】
開示されるシステム及び方法は、この問題を緩和することができる。本開示の態様によれば、データは、所有権変更の前に、バックエンドにフラッシュされる代わりに、新しい所有者に転送することができる。本開示の代替の態様によれば、データは、所有権変更後に、古い所有者ノードから新しい所有者ノードへとバックグランドにおいて転送することができる。
【0034】
これらの解決法は、特定のスライス用にキャッシュされた全てのデータが、頻繁にアクセスされるわけではないので、キャッシュ汚染に潜在的につながる可能性がある。例えば、スライスのサブセットだけが頻繁にアクセスされる可能性があり、残りは、まれにしかアクセスされず、それによって、キャッシュするには、残りをそれほど最新ではなくする。かかるシナリオに関し、特定のスライス用の全てのキャッシュされたデータを古い所有者ノードから新しい所有者ノードに転送することは、幾らかより頻繁にアクセスされるデータが新しい所有者から排除されることにつながる可能性がある。
【0035】
本開示の態様によれば、要求に基づいたデータキャッシングは、鋸歯状性能を改善し、且つキャッシュ汚染を回避することができる。要求に基づいたデータキャッシングは、リモートヒット期間と呼ばれる、期限を定めたプロセスである。新しい及び古いルーティングマップを調べることによって、開示される方法は、スライスの現在の及び古い所有者を決定することができる。どんな要求に関しても、新しい所有者がデータを有しない場合に、開示される方法は、古い所有者を調べることができ、古い所有者が、そのキャッシュにまだデータを有するかどうかをチェックすることができる。これは、ルーティングマップの更新プロセス中に、失われたスライス用のデータが削除されないことを仮定する。データは、キャッシュにおいてクリーンであり、且つキャッシュガーベジコレクションポリシーによって最終的に排除することができるように、フラッシュすることができる。
【0036】
本開示の態様によれば、古い所有者が、まだデータを有する場合に、要求は、サービスされ得る。データは、同様にキャッシュされ、新しい所有者に固定される。従って、データは、要求に基づいて古い所有者から新しい所有者に移動させることができ、それは、キャッシュ汚染を回避する。加えて、古い所有者からデータをフェッチすることは、バックエンドからデータをフェッチするより速くすることができ、従って、鋸歯状性能は、改善することができる。データは、それが修正され、古い所有者に陳腐化したデータを持たせる可能性があるので、新しい所有者に固定される必要がある。これは、リモートヒット期間中に、新しい所有者における、新しく得られたスライスに属するデータの排除を防ぐことができる。古い所有者が、そのキャッシュにデータを有していない場合に、データは、バックエンドからフェッチすることができ、且つ新しい所有者においてキャッシュし固定することができる。
【0037】
リモートヒット期間が終わった後で、古い所有者は、もはや、どんなキャッシュミス用にも調べられず、データは、新しい所有者において固定を解除することができる。リモートヒット期間の持続時間は、様々な発見的方法を用いて、例えば、キャッシュをウォーミングするための過去の時間に基づいて、決定することができる。
【0038】
当業者は、本明細書で説明される明細書及び図面における様々な実例が、電子ハードウェア、コンピュータソフトウェア又は両方の組み合わせとして実現され得ることを理解されるであろう。ハードウェア及びソフトウェアのこの互換性を説明するために、様々な実例的なブロック、モジュール、要素、コンポーネント、方法及びアルゴリズムが、それらの機能性の点から上記で一般的に説明された。かかる機能性が、ハードウェア、ソフトウェア、又は組み合わせとして実現されるかどうかは、全体的なシステムに課される特定の用途及び設計制約に依存する。当業者は、各特定の用途のために様々な方法で、説明された機能性を実現することができる。様々なコンポーネント及びブロックは、主題技術の範囲から逸脱することなしに、全て違った風に(例えば、異なる順序で配置されるか、又は異なる方法で分割される)配置することができる。
【0039】
更に、通信プロトコルの実装形態は、1つのコンピュータシステムにおいて集中方式で、又は異なる要素が、幾つかの相互接続されたコンピュータシステムにわたって散在される分散方式で実現することができる。本明細書で説明される方法を実行するために適合された任意の種類のコンピュータシステム又は他の装置が、本明細書で説明される機能を実行するために適している。
【0040】
ハードウェア及びソフトウェアの典型的な組み合わせは、コンピュータプログラム、即ちロードされ実行された場合に、本明細書で説明される方法を実行するようにコンピュータシステムを制御するコンピュータプログラムを備えた汎用コンピュータシステムとすることが可能である。通信プロトコル用の方法もまた、コンピュータプログラムプロダクトに埋め込むことができ、コンピュータプログラムプロダクトは、本明細書で説明される方法の実装形態を可能にする全ての特徴を含み、且つコンピュータシステムにロードされた場合に、これらの方法を実行することができる。
【0041】
この文脈におけるコンピュータプログラム又はアプリケーションは、情報処理能力を有するシステムに、特定機能を直接、又は次のいずれか又は両方、即ちa)他の言語、コード又は表記法への変換、b)異なる材料形態における再現のいずれか又は両方の後で実行させるように意図された、任意の言語、コード又は表記法における、命令セットの任意の表現を意味する。意味深いことに、この通信プロトコルは、その趣旨又は本質的な属性から逸脱せずに、他の特定の形態において具体化することができ、従って、本発明の範囲を示すものとして、前述の明細書ではなく、以下の特許請求の範囲が参照されるべきである。
【0042】
通信プロトコルは、これらの実例的な実施形態を特に参照して詳細に説明された。しかしながら、様々な修正及び変更が、前述の明細書で説明されているような本開示の趣旨及び範囲内で行われる得、かかる修正及び変更が、この開示の均等物及び一部と考えられるべきであることが明らかである。
【符号の説明】
【0043】
100 クラスタ
102、104、106 コンピュータノード
108、112、116 サーバ
110、114、118 記憶装置
120 ネットワーク
200 クラスタ
202 スライス
204 ルーティングマップ
206、208 表
306 ルーティングマップ
図1
図2
図3
図4