(57)【特許請求の範囲】
【請求項１】
ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用の方法であって、前記分散キャッシュが、キャッシュスライスに分割され、前記方法が、
第１のルーティング表に基づいて、第１の複数のキャッシュスライスを第１のコンピュータノードに割り当てるステップと、
第１の期間後に、前記コンピュータノードの前記キャッシュスライス用のアクセス統計に基づいて、第２の複数のキャッシュスライスを前記第１のコンピュータノードに、且つ前記第１の複数のキャッシュスライスの第１のサブセットを前記第１のコンピュータノード以外の少なくとも１つのコンピュータノードに再割り当てするステップと、
前記第１の期間後に、キャッシュスライスの割り当てによる第２のルーティング表を前記コンピュータノードに提供するステップと、
を含む方法。
【請求項２】
前記アクセス統計が、各キャッシュスライス及び期間用のアクセスサイズに基づく前記キャッシュスライス用の転送速度を含む、請求項１に記載の方法。
【請求項３】
前記第２の複数のキャッシュスライス、及び前記第１の複数のキャッシュスライスの前記第１のサブセットの前記再割り当てが、ネットワーク利用の低減に帰着する、請求項１に記載の方法。
【請求項４】
前記第２の複数のキャッシュスライス、及び前記第１の複数のキャッシュスライスの前記第１のサブセットを決定するために、前記第１のルーティング表及び前記第２のルーティング表を比較することを更に含む、請求項１に記載の方法。
【請求項５】
（ａ）前記第１の複数のキャッシュスライスの前記第１のサブセットから汚染データをフラッシュするステップと、
（ｂ）前記第１の複数のキャッシュスライスの前記第１のサブセットをライトスルーキャッシュスライスにするステップと、
（ｃ）前記第２の複数のキャッシュスライスから既存データを削除するステップと、
を更に含む、請求項４に記載の方法。
【請求項６】
（ａ）、（ｂ）及び（ｃ）の少なくとも１つの間に第１のエラーが発生したかどうかを決定することを更に含む、請求項５に記載の方法。
【請求項７】
前記第１のエラーが発生した場合に、前記第１のルーティング表に基づいて、前記第１の複数のキャッシュスライスを前記第１のコンピュータノードに再割り当てすることを更に含む、請求項６に記載の方法。
【請求項８】
たとえ前記第１のエラーが発生しなかったとしても、前記第１のコンピュータノードにおいて、データ要求のサービスを中止することを更に含む、請求項６に記載の方法。
【請求項９】
前記第１のコンピュータノードにおいて、前記第２のルーティング表に基づいてデータ要求の宛先を決定することを更に含む、請求項８に記載の方法。
【請求項１０】
前記第２のルーティング表に基づいたデータ要求の前記宛先の決定中に、第２のエラーが発生したかどうかを決定することを更に含む、請求項９に記載の方法。
【請求項１１】
前記第２のエラーが発生した場合に、前記第１のルーティング表に基づいて、前記第１の複数のキャッシュスライスを前記第１のコンピュータノードに再割り当てすることを更に含む、請求項１０に記載の方法。
【請求項１２】
前記第１のエラーが発生しなかった場合に、前記第１のコンピュータノードにおいて、データ要求のサービスを再開することを更に含む、請求項１１に記載の方法。
【請求項１３】
ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用のシステムであって、
キャッシュスライスに分割された前記分散キャッシュと、
第１のコンピュータノードであって、
第１のルーティング表に基づいて、第１の複数のキャッシュスライスを前記第１のコンピュータノードに割り当てるように、
第１の期間後に、前記コンピュータノードの前記キャッシュスライス用のアクセス統計に基づいて、第２の複数のキャッシュスライスを前記第１のコンピュータノードに再割り当てし、前記第１の複数のキャッシュスライスの第１のサブセットを前記第１のコンピュータノード以外の少なくとも１つのコンピュータノードに再割り当てするように、且つ
前記第１の期間後に、キャッシュスライスの割り当てによる第２のルーティング表を前記コンピュータノードに提供するように構成される第１のコンピュータノードと、
を含むシステム。
【請求項１４】
前記アクセス統計が、各キャッシュスライス及び期間用のアクセスサイズに基づく前記キャッシュスライス用の転送速度を含む、請求項１３に記載のシステム。
【請求項１５】
前記第２の複数のキャッシュスライス、及び前記第１の複数のキャッシュスライスの前記第１のサブセットの前記再割り当てが、ネットワーク利用の低減に帰着する、請求項１３に記載のシステム。
【請求項１６】
前記第１のコンピュータノードが、前記第２の複数のキャッシュスライス、及び前記第１の複数のキャッシュスライスの前記第１のサブセットを決定するために、前記第１のルーティング表及び前記第２のルーティング表を比較するように更に構成される、請求項１３に記載のシステム。
【請求項１７】
前記第１のコンピュータノードが、
（ａ）前記第１の複数のキャッシュスライスの前記第１のサブセットから汚染データをフラッシュするように、
（ｂ）前記第１の複数のキャッシュスライスの前記第１のサブセットをライトスルーキャッシュスライスにするように、且つ
（ｃ）前記第２の複数のキャッシュスライスから既存データを削除するように、
更に構成される、請求項１６に記載のシステム。
【請求項１８】
前記第１のコンピュータノードが、（ａ）、（ｂ）及び（ｃ）の少なくとも１つの間に第１のエラーが発生したかどうかを決定するように更に構成される、請求項１７に記載のシステム。
【請求項１９】
前記第１のコンピュータノードが、前記第１のエラーが発生した場合に、前記第１のルーティング表に基づいて、前記第１の複数のキャッシュスライスを前記第１のコンピュータノードに再割り当てするように更に構成される、請求項１８に記載のシステム。
【請求項２０】
たとえ前記第１のエラーが発生しなかったとしても、前記第１のコンピュータノードが、データ要求のサービスを中止するように更に構成される、請求項１８に記載のシステム。
【請求項２１】
前記第１のコンピュータノードが、前記第２のルーティング表に基づいてデータ要求の宛先を決定するように更に構成される、請求項２０に記載のシステム。
【請求項２２】
前記第１のコンピュータノードが、前記第２のルーティング表に基づいてデータ要求の前記宛先の決定中に第２のエラーが発生したかどうかを決定するように更に構成される、請求項２１に記載のシステム。
【請求項２３】
前記第１のコンピュータノードが、前記第２のエラーが発生した場合に、前記第１のルーティング表に基づいて、前記第１の複数のキャッシュスライスを前記第１のコンピュータノードに再割り当てするように更に構成される、請求項２２に記載のシステム。
【請求項２４】
前記第１のエラーが発生しなかった場合に、前記第１のコンピュータノードが、データ要求のサービスを再開するように更に構成される、請求項２３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、分散キャッシュ又は記憶メモリの適応分割用のシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータクラスタは、ネットワークを通して相互接続できる２つ以上のコンピュータノードからなる。コンピュータクラスタは、分散記憶メモリシステム、例えば分散キャッシュシステムを実現することができる。クラスタの総記憶容量は、典型的には、標準サイズの多数のスライスに分割される。スライスは、クラスタのコンピュータノードにわたって分散される。各スライスは、唯一のコンピュータノードにローカルにすることができる。リモートコンピュータノードによって所有されるスライスに属する論理ブロックアドレス（ＬＢＡ）用のコンピュータノードにおけるどんな要求も、リモートノード上で処理するためにネットワークを通じて送信される必要がある。
【０００３】
これは、ネットワーク上のトラフィックを増加させる可能性があり、それは、ネットワークの競合故に、ネットワーク帯域幅及び待ち時間を悪化させる可能性がある。従って、スライスを適切に分散するためのシステム及び方法が望ましく、それは、ネットワーク性能に対するリモートデータ要求の強い影響を低減することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
キャッシュスライスに分割される分散キャッシュの適応分割を実行するための方法及びシステムが提供される。分散キャッシュのスライスは、ルーティング表に基づいて、クラスタにおける異なるコンピュータノードに割り当てられる。所定の期間後に、キャッシュスライスは、アクセス統計に基づいてクラスタの他のコンピュータノードに再割り当てすることができ、クラスタにおけるコンピュータノードへのキャッシュスライスの再割り当てに対応する新しいルーティング表が提供される。
【０００５】
本開示の態様によれば、ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用の方法が提供され、分散キャッシュは、キャッシュスライスに分割される。方法は、第１のルーティング表に基づいて、第１の複数のキャッシュスライスを第１のコンピュータノードに割り当てるステップと、第１の期間後に、コンピュータノードのキャッシュスライス用のアクセス統計に基づいて、第２の複数のキャッシュスライスを第１のコンピュータノードに、且つ第１の複数のキャッシュスライスの第１のサブセットを第１のコンピュータノード以外の少なくとも１つのコンピュータノードに再割り当てするステップと、第１の期間後に、キャッシュスライスの割り当てによる第２のルーティング表をコンピュータノードに提供するステップと、を含むことができる。
【０００６】
本開示の態様によれば、ネットワークによって相互接続された複数のコンピュータノードを含むクラスタにおける分散キャッシュの適応分割用のシステムが提供される。システムは、キャッシュスライスに分割された分散キャッシュ、及び第１のコンピュータノードを含むことができる。第１のコンピュータノードは、第１のルーティング表に基づいて、第１の複数のキャッシュスライスを第１のコンピュータノードに割り当てるように構成され、第１の期間後に、コンピュータノードのキャッシュスライス用のアクセス統計に基づいて、第２の複数のキャッシュスライスを第１のコンピュータノードに再割り当てし、第１の複数のキャッシュスライスの第１のサブセットを第１のコンピュータノード以外の少なくとも１つのコンピュータノードに再割り当てするように構成され、且つ第１の期間後に、キャッシュスライスの割り当てによる第２のルーティング表をコンピュータノードに提供するように構成され得る。
【０００７】
本開示の様々な目的、特徴及び利点は、次の図面と共に検討された場合には、以下の詳細な説明を参照して、より完全に理解することができる。以下の図面において、同様の参照数字は、同様の要素を識別する。以下の図面は、実例のためだけであり、本発明の限定となるようには意図されていない。本発明の範囲は、続く特許請求の範囲で述べられる。
【図面の簡単な説明】
【０００８】
【図１】本開示の態様に従って、例示的なクラスタシステムを示す。
【図２】本開示の態様に従って、例示的なクラスタシステム、クラスタノード当たりのデータ転送速度、及び例示的なスライス割り当てを示す。
【図３】本開示の態様に従って、例示的なクラスタシステム、クラスタノード当たりのデータ転送速度、及びスライス再割り当てを示す。
【図４】本開示の態様に従って、クラスタシステムにおいてルーティングマップを更新するための例示的な方法を示す。
【発明を実施するための形態】
【０００９】
分散キャッシュシステムの適応分割用のシステム及び方法が開示される。クラスタの総キャッシュは、多数のスライスに分割され、それらのスライスは、クラスタのコンピュータノードに関連付けられる。開示されるシステム及び方法は、クラスタのネットワーク利用を検討し、且つ新しいコンピュータノードにスライスを再割り当てすることができる。新しい割り当てを表す新しいルーティングマップは、クラスタの全てのコンピュータノードに送ることができる。
【００１０】
図１は、コンピュータノードの例示的なクラスタ１００を示す。具体的には、クラスタ１００は、コンピュータノード１０２、１０４及び１０６を含む。ノード１０２は、サーバ１０８及び記憶装置１１０を含み、ノード１０４は、サーバ１１２及び記憶装置１１４を含み、ノード１０６は、サーバ１１６及び記憶装置１１８を含む。ノード１０２、１０４及び１０６は、ネットワーク１２０を通して相互接続される。幾つかの先行技術の分散記憶システムは、典型的には、ストライピングを通じコンピュータノードにわたってスライスを分散する。データストライピング技術は、例えばラウンドロビン方式を通して、異なるコンピュータノードの物理的な記憶装置上に論理的に連続するスライスを記憶する。例えば、クラスタ１００におけるスライスは、ノード１０２、１０４及び１０６に、この順序で連続的に割り当てることができる。他の先行技術の分散記憶システムは、例えばハッシュ関数を用いて、クラスタのノード間にスライスをランダムに分散することができる。
【００１１】
これらの先行技術のシステムは、貧弱なスケーラビリティを示す。例えば、クラスタにおける「Ｎ」ノード間のスライスのランダム及び均一な分散を仮定すると、特定のノードのサーバから要求されたデータパケットが、ノードにローカルに記憶されている可能性は、単に１／Ｎである。要求されたデータパケットがローカルに記憶されていない場合に、データパケットの要求は、ネットワークを通じてリモートノードに送信される必要があり、データパケットは、それを要求したノードへとネットワークを通じて転送される必要がある。ノードの数が増加するにつれて、データパケット要求を満たすために、ますます多くのデータパケットが、ネットワークを通じて転送されなければならない。これは、ネットワークの利用可能な帯域幅に否定的な影響を及ぼす可能性がある。上位層アプリケーションがまた、ネットワーク帯域幅を求めて競争しようとする可能性があるので、システムは、ネットワーク輻輳故に貧弱な性能を有する可能性がある。
【００１２】
上記のように、アクセスに関する事前知識なしに、スライスは、最初にクラスタにおける全てのノードにわたってストライピングされ得る。ノードは、クラスタにおける全てのスライス所有権に関する情報を備えたルーティングマップを有することができ、ルーティングマップは、要求を適切な所有者に送るために用いることができる。各ノードはまた、全てのスライス用のアクセス統計を維持することができる。この情報を記憶するためのデータ構造は、スライスの数に従ったサイズにできるアレイとすることができ、且つまたタイムスタンプ用のフィールドをアレイに有することができる。スライス番号は、アレイインデックスからほのめかすことができ、アレイにおける各インデックスは、そのスライス用のアクセス統計、例えばそのノードからその特定のスライスに対して読み取られた且つ／又は書き込まれたデータ量を示すことができる。タイムスタンプは、データ速度（ＭＢ／秒）が、データ構造における情報の最後のリセットからの期間用に容易に計算できるように、全データ構造のために記憶することができる。
【００１３】
特定のノードが、論理ブロックアドレス（ＬＢＡ）用の要求を受信した時はいつも、それは、ＬＢＡが属するスライスを決定することができ、次に、その特定のスライスの所有者ノードを決定するためにルーティングマップを調べることができる。特定のノードが、特定のスライスの所有者である場合に、それは、どんなネットワーク資源も消費せずに、要求をローカルでサービスすることができる。特定のスライスが、別のノードによって所有されている場合に、要求は、その所有者に送られる。それに応じて、特定のノードはまた、そのスライス用のアクセス統計カウンタを修正することができる。
【００１４】
本開示の態様によれば、開示されるシステム及び方法は、所定の期間後に、各スライス用の新しい所有者を決定することができ、それは、ネットワーク利用を低減することが可能である。新しい所有者は、新しい所有者に関する決定を通知するために、アクセス統計に関する十分な情報が収集される所定の期間後に決定することができる。開示される方法が、新しい所有者にスライスが変わり得ると決定した場合に、そのスライスは、例えばキャッシュを作り直すためのユーザの介入も要求もなしに、動的に再割り当てられ得る。
【００１５】
１つを超えるノードが、同じスライス内のデータにアクセスできるので、スライスが新しい所有者に再割り当てされた後で、他のノードは、やはり、リモートでスライスにアクセスすることを要求してもよい。従って、ネットワークは、やはり、リモートノードにおけるデータアクセス要求に対応するべきである。本開示の態様によれば、スライスは、アクセスの場所に基づいてノードに、例えば最も多くのデータを転送するノードに再割り当てすることができ、それは、ネットワークに対する影響を最小化することに帰着し得る。
【００１６】
ネットワーク利用の低減に加えて、スライスの動的な割り当てはまた、スケーラビリティを改善することができる。何故なら、それが、クラスタへのより多くのコンピュータノードの追加を可能にするからである。開示されるシステム及び方法はまた、例えば新しいアプリケーション、アプリケーション障害の場合に、又は負荷分散用に、アクセスパターンの変化によりよく適合することができる。
【００１７】
図２及び３は、スライスの例示的で動的な割り当て及び結果としてのネットワーク利用の低減を示す。具体的には、図２は、２つのノード（Ｎ１、Ｎ２）を備えたクラスタ２００を示す。クラスタの総キャッシュは、４つのスライス２０２に分割される。最初にスライス２０２は、ルーティングマップ２０４に示されているように、ラウンドロビン方式で、ノードＮ１とＮ２との間に割り当てられる。具体的には、スライス｛０、２｝は、ノードＮ１に割り当てられ、スライス｛１、３｝は、ノードＮ２に割り当てられる。スライスにおけるデータ用のどんな受信された要求も、ルーティングマップ２０４に従ってサービスされる。例えば、スライス０に存在するＬＢＡ用のノードＮ１に対する要求は、ローカルにサービスされる。スライス１に存在するＬＢＡ用のノードＮ１に対する要求は、例えばノードＮ２にＬＢＡを要求することによって、ネットワークを通じてサービスされる。上記のように、開示されるシステム及び方法は、所定の期間後に、例えばクラスタにおけるノード用のアクセス統計を検討することによって、スライス用の新しい所有者を決定することができる。実例的な例として、表２０６は、ノードＮ１用のアクセス統計を示し、表２０８は、ノードＮ２用のアクセス統計を示す。例えば、表２０６は、ノードＮ１が、５０ＭＢ／ｓの転送速度でスライス０にデータを要求し２１０、且つ１００ＭＢ／ｓの転送速度でスライス１にデータを要求する２１２ことを示す。上記のように、リモート要求だけが、総利用可能ネットワーク帯域幅を低減するネットワーク利用を増加させ、従って、ノードＮ１に関し、リモートスライス、例えばスライス１及び３におけるデータの要求は、ネットワーク利用に寄与する。従って、ノードＮ２に関し、リモートスライス、例えばスライス０及び２におけるデータの要求は、ネットワーク利用に寄与する。表２０６及び２０８におけるアクセス統計に基づいて、ノードＮ１用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度（Ｎ１）＝転送速度スライス１＋転送速度スライス３＝１００（Ｍｂ／ｓ）＋３０（Ｍｂ／ｓ）＝１３０（Ｍｂ／ｓ）
【００１８】
同様に、ノードＮ２用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度（Ｎ２）＝転送速度スライス０＋転送速度スライス２＝２０（Ｍｂ／ｓ）＋６０（Ｍｂ／ｓ）＝８０（Ｍｂ／ｓ）
【００１９】
従って、総ネットワーク利用は、１３０ＭＢ／ｓ＋８０ＭＢ／ｓ＝２１０ＭＢ／ｓであり、それは高い。本開示の態様によれば、リモート転送割合及び総ネットワーク利用に基づいて、スライスは、総ネットワーク利用を低減するために再割り当てすることができる。これは、図３に示されている。例えば、図３は、図２のクラスタを示し、そこでは、スライスの２つが、再割り当てされた。具体的には、スライス１は、前にノードＮ２に割り当てられたが、ノードＮ１に再割り当てされ３０２、スライス２は、前にノードＮ１に割り当てられたが、ノードＮ２に再割り当てされた３０４。全ての再割り当て後に、新しいルーティングマップ３０６は、全てのノードに配布され、その結果、各ノードは、新しいスライス割り当てに気付くことができる。
【００２０】
再割り当て後に、ノードＮ１用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度（Ｎ１）＝転送速度スライス２＋転送速度スライス３＝２０（Ｍｂ／ｓ）＋３０（Ｍｂ／ｓ）＝５０（Ｍｂ／ｓ）
【００２１】
同様に、ノードＮ２用のリモート要求速度は、次の式に基づいて計算することができる。
リモート要求速度（Ｎ２）＝転送速度スライス０＋転送速度スライス１＝２０（Ｍｂ／ｓ）＋４０（Ｍｂ／ｓ）＝６０（Ｍｂ／ｓ）
【００２２】
従って、総ネットワーク利用は、５０ＭＢ／ｓ＋６０ＭＢ／ｓ＝１１０ＭＢ／ｓであり、それは、初期値と比較して著しく低く、例えば５２．３％だけ低い。クラスタにおける各ノードは、それが所与の時間窓でアクセスした各スライス用に、アクセスサイズの累積値を、例えばバイトで維持することができる。次に、各スライスの転送速度は、アクセスサイズを窓サイズで割ることによって計算することができる。再マッピングのときに、各スライス用に、再マッピングアルゴリズムは、各ノードの転送速度をチェックし、最高転送速度を有するノードにスライスを割り当てることができる。スライスの現在の所有者が、特定のスライス用に最大転送速度を有する場合に、スライスは、再マッピングされる必要がない。多数のノードが、最高転送速度を有する場合に、同スコアは、例えば、アクセスサイズ、スライス所有権入れ換えの周期性、キャッシュ汚染、及び他の発見的方法を用いて壊すことができる。オリジナルで新しいネットワーク利用は、リモートノードによる各スライス用の転送速度の合計によって計算することができる。統計は、再マッピングのラウンド後にリセットすることができる。
【００２３】
再マッピングの頻度は、管理者によって決定することができる。例えば、それは、一日の特定の時刻に、例えば要求トラフィックが低いときに実行することができる。再マッピングはまた、例えば、自動的に行うことができる。例えば、バックグランドにおけるプロセスは、各ノードから周期的に転送速度をポーリングし、且つ例えばアプリケーションアクセスパターンの変化故に、定常状態からの変化があるかどうかを決定することができる。
【００２４】
本発明の代替の態様によれば、ノードにおけるキャッシュ空間の利用、所有権変更後に移動することが必要であろう汚染データの排除及び量などの他の発見的方法が、改善されたスライス配置を決定するために利用され得る。各ノードは、フラッシュできる汚染データの量を追跡することができる。スライスの再マッピングは、回避することができる。それは、閾値を超えて汚染データをフラッシュことを意味するであろう。再マッピング中の様々なノードによる大きなデータ量のフラッシングは、ディスクへのランダムな書き込みをもたらす可能性があり、従って再マッピングを実行する時間に影響する可能性があり、且つまたキャッシュミスにおいてディスクからデータをフェッチする必要のあるアプリケーションＩ／Ｏに影響する可能性がある。ノードが、例えば転送速度に基づいてスライス用の最適な所有者になり得るので、キャッシュ利用もまた考えられ得るが、しかしそれは、そのスライスをその最適な所有者に記憶することが性能を改善するであろうことを意味しない。各ノード用に、優先権が、転送速度に基づいて、それらのスライスに割り当てられ得る。キャッシュ利用と共にこれらの優先権は、特定のスライスが、所与のノードに再マッピングされるべきかどうかを決定するために、再マッピング中に使用することができる。キャッシュ利用が低い場合に、再マッピングが行われ得る。低くなければ、低い優先権のスライスのマッピングは、他のより高い優先権のスライスからデータを排除させる可能性があり、それは、性能に否定的に影響し得る。
【００２５】
新しいルーティングマップが作成された後で、例えば、どんな休止時間もなしに、クラスタを削除も作り直すこともせず、長い期間にわたるデータ要求の処理を中断することもなく、各クラスタにおけるルーティングマップを動的に更新することが望ましい。
【００２６】
本開示の態様によれば、新しいルーティングマップは、クラスタにおける全てのノードにわたってアトミックに更新することができる。例えば、ノードの１つは、更新を調整する責任を負うことができるマネージャノードに割り当てることができる。マネージャノードは、クラスタにおける全ての他のノードに新しいルーティングマップを提供することができ、且つそれらのノードに更新処理を開始するように要求することができる。本開示の態様によれば、更新処理は、３つのステップを含むことができる。第１のステップ中に、全てのノードは、新しいルーティングマップを現在のルーティングマップと個々に比較することができ、且つどのスライスがそれらに再割り当てされたか（例えば得られたスライス）、及びどのスライスが、もはやそれらに割り当てられないか（例えば失われたスライス）を決定することができる。
【００２７】
現在のスライス所有者は、キャッシュミスにおいて、バックエンドからデータをフェッチすることができる。再マッピング中に、古い所有者が、全ての汚染データはフラッシュせず、且つ後続のデータをライトスルーとして処理した場合に、新しい所有者は、（リモートヒット期間が終了した後で）バックエンドから陳腐化したデータをフェッチすることに終わる可能性がある。全ての失われたスライス所有権に関し、ノードは、それらのスライス用にノードがキャッシュに有するどんな汚染データもフラッシュすることができ、且つまたそれらのスライスをライトスルーにすることができる。従って、フラッシュされた後で、どんな新しい書き込みも、再びスライスを汚染はしない。これは、どんなエラーの場合にも、スライスの古い所有者への依存があり得ないように、バックエンド（キャッシュされた装置）との一貫性を保証することができる。
【００２８】
全ての得られたスライス所有権に関し、ノードは、キャッシュに存在するどんな既存データも削除することができる。この動作は、上記のように、失われたスライス所有権用のプロセスが、ノードが所有権を失ったスライスに属するデータを削除せずに汚染データをフラッシュするので、実行される。この動作は、どんな問題も引き起こさない。何故なら、所有権が失われたスライスに属するデータは、新しいデータがキャッシュされるときに、最終的にキャッシュから排除されるからである。例えば、スライスが新しい所有者に再マッピングされた場合に、古い所有者は、所有権変更の前に、スライスに関連するどんな汚染データもフラッシュすることができる。所有権変更後のリモートヒット期間に、新しい所有者は、キャッシュミスにおいてデータ用に古い所有者に問い合わせることができる。何故なら、バックエンドからデータを得る代わりに、古い所有者からデータを得ることが、より速くなり得るからである。これは、ネットワーク及びソリッドステートドライブアクセスが、ハードディスクドライブアクセスより速いので、一般に真である。所有権変更後の要求に基づいたキャッシングはまた、キャッシュ汚染を回避することができる。何故なら、古い所有者においてキャッシュされたスライスの全てのブロックが、新しい所有者によって必要とされるわけではないからである。リモートヒット期間は、有限の期間とすることができ、且つ新しい所有者のキャッシュのウォーミングアップ用にしようとすることができる。ブロックに対する読み出し要求に関し、新しい所有者は、ブロック用に古い所有者に問い合わせることができ、それをキャッシュすることができる。古い所有者がそのブロックを有しない場合に、新しい所有者は、バックエンドからそれをフェッチすることができる。その後の書き込み要求は、ブロックを修正することができ、それは、古い所有者におけるブロックのコピーを陳腐化することになろう。再マッピングの新しいラウンド中に、スライスがその古い所有者に再マッピングされる場合、古い所有者がまだ、そのブロックを自らのキャッシュに有している場合に、古い所有者は、読み出し要求に対して、陳腐化したデータを返すことになろう。この理由で、ノードが所有権を得るスライス用にノードが有している可能性があるどんな既存データも予め削除する。
【００２９】
このステップの完了後に、各ノードは、ステップの完了のステータス、例えば、ノードが汚染データをうまくフラッシュし、どんな既存データも削除したかどうか、又はこのステップにおいてエラーがあったかどうかに関して、マネージャノードに通知することができる。本開示の態様によれば、全てのノードが、ステップをうまく完了したことを示した場合に、マネージャノードは、更新処理の第２のステップに移るように全てのノードに命令することができる。少なくとも１つのノードが、第１のステップ中にエラーがあったことを示した場合に、マネージャノードは、更新処理を中止するように全てのノードに命令することができる。
【００３０】
第２のステップにおいて、マネージャノードは、全てのノードに、それらの要求のサービスを個々に休止するように（例えば受信した要求はキューに保持できる）、且つ新しいルーティングマップを適用するように命令することができる。このステップを完了した後で、各ノードは、ステップの完了のステータス、例えば、それらが新しいマップをうまく適用したかどうか、又はこのステップにエラーがあったかどうかに関してマネージャノードに通知することができる。ステップが成功だったことを全てのノードが示す場合に、マネージャノードは、更新処理の第３のステップに移るように全てのノードに命令することができる。少なくとも１つのノードが、第２のステップ中にエラーがあったことを示した場合に、マネージャノードは、更新処理を中止するように全てのノードに命令することができる。ノードが中止命令を受信した場合に、ノードは、新しいルーティングマップを廃棄することができ、且つ前のルーティングマップに従って、それらの要求の処理を再開することができる。本開示の代替の態様によれば、マネージャノードは、しばらくして最初からプロトコル再試行することができる。更新処理の第３のステップにおいて、全てのノードは、それらの要求のサービスを再開することができる。
【００３１】
図４は、本開示の態様に従ってルーティングマップを更新するための例示的な方法４００を示す。具体的には、マネージャノードは、全てのノードに新しいルーティングマップを送信することができ、且つ更新プロセスを開始するように全てのノードに要求することができる４０２。ひとたびノードが新しいルーティングマップを受信すると、ノードは、新しいルーティングマップを現在のルーティングマップと比較することができる４０４。次に、ノードは、それらが得たか且つ／又は失ったスライスを決定することができる４０６。全ての失われたスライス所有権に関し、ノードは、キャッシュにおけるそれらのスライス用の汚染データをフラッシュし、且つそれらのスライスをライトスルーにする４０８。全ての得られたスライス所有権に関し、ノードは、キャッシュに存在する可能性があるどんな既存データも削除する４１０。ノードのいずれかでエラーが発生した場合に４１２、マネージャノードは、プロセスを中止することができる４１４。たとえエラーが発生しなくても、ノードは、それらの要求のサービスを中止し４１６、新しいルーティングマップを適用することができる４１８。ノードのいずれかでエラーが発生した場合に４２０、マネージャノードは、プロセスを中止することができる４１４。エラーが発生しない場合に、ノードは、要求のサービスを再開することができる。
【００３２】
全てのノードにわたってルーティングマップを更新した後で、スライスの新しい所有権は有効になる。しかしながら、新しい所有者は、所有権更新のちょうど終了したラウンド後に新しい所有者が得たスライス用のどんなデータも含まない。これは、どんなデータ整合性の問題ももたらさない。何故なら、所有権変更の前に、所有権が変わったスライスに属する全ての汚染データがフラッシュされ、従って、新しい所有者が、どんな要求もサービスするために、バックエンドからデータを常にフェッチすることができるからである。しかしながら、これは、待ち時間を増加させる可能性がある。何故なら、キャッシュは、再度ウォーミングする必要があり、それは、所有権変更の各ラウンド後に、鋸歯状の性能特性につながる可能性があるからである。
【００３３】
開示されるシステム及び方法は、この問題を緩和することができる。本開示の態様によれば、データは、所有権変更の前に、バックエンドにフラッシュされる代わりに、新しい所有者に転送することができる。本開示の代替の態様によれば、データは、所有権変更後に、古い所有者ノードから新しい所有者ノードへとバックグランドにおいて転送することができる。
【００３４】
これらの解決法は、特定のスライス用にキャッシュされた全てのデータが、頻繁にアクセスされるわけではないので、キャッシュ汚染に潜在的につながる可能性がある。例えば、スライスのサブセットだけが頻繁にアクセスされる可能性があり、残りは、まれにしかアクセスされず、それによって、キャッシュするには、残りをそれほど最新ではなくする。かかるシナリオに関し、特定のスライス用の全てのキャッシュされたデータを古い所有者ノードから新しい所有者ノードに転送することは、幾らかより頻繁にアクセスされるデータが新しい所有者から排除されることにつながる可能性がある。
【００３５】
本開示の態様によれば、要求に基づいたデータキャッシングは、鋸歯状性能を改善し、且つキャッシュ汚染を回避することができる。要求に基づいたデータキャッシングは、リモートヒット期間と呼ばれる、期限を定めたプロセスである。新しい及び古いルーティングマップを調べることによって、開示される方法は、スライスの現在の及び古い所有者を決定することができる。どんな要求に関しても、新しい所有者がデータを有しない場合に、開示される方法は、古い所有者を調べることができ、古い所有者が、そのキャッシュにまだデータを有するかどうかをチェックすることができる。これは、ルーティングマップの更新プロセス中に、失われたスライス用のデータが削除されないことを仮定する。データは、キャッシュにおいてクリーンであり、且つキャッシュガーベジコレクションポリシーによって最終的に排除することができるように、フラッシュすることができる。
【００３６】
本開示の態様によれば、古い所有者が、まだデータを有する場合に、要求は、サービスされ得る。データは、同様にキャッシュされ、新しい所有者に固定される。従って、データは、要求に基づいて古い所有者から新しい所有者に移動させることができ、それは、キャッシュ汚染を回避する。加えて、古い所有者からデータをフェッチすることは、バックエンドからデータをフェッチするより速くすることができ、従って、鋸歯状性能は、改善することができる。データは、それが修正され、古い所有者に陳腐化したデータを持たせる可能性があるので、新しい所有者に固定される必要がある。これは、リモートヒット期間中に、新しい所有者における、新しく得られたスライスに属するデータの排除を防ぐことができる。古い所有者が、そのキャッシュにデータを有していない場合に、データは、バックエンドからフェッチすることができ、且つ新しい所有者においてキャッシュし固定することができる。
【００３７】
リモートヒット期間が終わった後で、古い所有者は、もはや、どんなキャッシュミス用にも調べられず、データは、新しい所有者において固定を解除することができる。リモートヒット期間の持続時間は、様々な発見的方法を用いて、例えば、キャッシュをウォーミングするための過去の時間に基づいて、決定することができる。
【００３８】
当業者は、本明細書で説明される明細書及び図面における様々な実例が、電子ハードウェア、コンピュータソフトウェア又は両方の組み合わせとして実現され得ることを理解されるであろう。ハードウェア及びソフトウェアのこの互換性を説明するために、様々な実例的なブロック、モジュール、要素、コンポーネント、方法及びアルゴリズムが、それらの機能性の点から上記で一般的に説明された。かかる機能性が、ハードウェア、ソフトウェア、又は組み合わせとして実現されるかどうかは、全体的なシステムに課される特定の用途及び設計制約に依存する。当業者は、各特定の用途のために様々な方法で、説明された機能性を実現することができる。様々なコンポーネント及びブロックは、主題技術の範囲から逸脱することなしに、全て違った風に（例えば、異なる順序で配置されるか、又は異なる方法で分割される）配置することができる。
【００３９】
更に、通信プロトコルの実装形態は、１つのコンピュータシステムにおいて集中方式で、又は異なる要素が、幾つかの相互接続されたコンピュータシステムにわたって散在される分散方式で実現することができる。本明細書で説明される方法を実行するために適合された任意の種類のコンピュータシステム又は他の装置が、本明細書で説明される機能を実行するために適している。
【００４０】
ハードウェア及びソフトウェアの典型的な組み合わせは、コンピュータプログラム、即ちロードされ実行された場合に、本明細書で説明される方法を実行するようにコンピュータシステムを制御するコンピュータプログラムを備えた汎用コンピュータシステムとすることが可能である。通信プロトコル用の方法もまた、コンピュータプログラムプロダクトに埋め込むことができ、コンピュータプログラムプロダクトは、本明細書で説明される方法の実装形態を可能にする全ての特徴を含み、且つコンピュータシステムにロードされた場合に、これらの方法を実行することができる。
【００４１】
この文脈におけるコンピュータプログラム又はアプリケーションは、情報処理能力を有するシステムに、特定機能を直接、又は次のいずれか又は両方、即ちａ）他の言語、コード又は表記法への変換、ｂ）異なる材料形態における再現のいずれか又は両方の後で実行させるように意図された、任意の言語、コード又は表記法における、命令セットの任意の表現を意味する。意味深いことに、この通信プロトコルは、その趣旨又は本質的な属性から逸脱せずに、他の特定の形態において具体化することができ、従って、本発明の範囲を示すものとして、前述の明細書ではなく、以下の特許請求の範囲が参照されるべきである。
【００４２】
通信プロトコルは、これらの実例的な実施形態を特に参照して詳細に説明された。しかしながら、様々な修正及び変更が、前述の明細書で説明されているような本開示の趣旨及び範囲内で行われる得、かかる修正及び変更が、この開示の均等物及び一部と考えられるべきであることが明らかである。
【符号の説明】
【００４３】
１００  クラスタ
１０２、１０４、１０６  コンピュータノード
１０８、１１２、１１６  サーバ
１１０、１１４、１１８  記憶装置
１２０  ネットワーク
２００  クラスタ
２０２  スライス
２０４  ルーティングマップ
２０６、２０８  表
３０６  ルーティングマップ
【図１】
0006263596.tif 000002
【図２】
0006263596.tif 000003
【図３】
0006263596.tif 000004
【図４】
0006263596.tif 000005