(57)【要約】 【課題】管理システムが、キャッシュまたは他のクラスタを有効化および監視して、クラスタが構成を認識するようにし、クラスタの基礎的な構造に対する初期化および変更が動的に更新されるようにする。【解決手段】分散メモリキャッシュシステム１００は、クライアントに対して初期構成を、構成エンドポイントによって提供されるエイリアスによって参照されるメモリキャッシュノードから提供する。構成の更新がメモリキャッシュノードから取得され、メモリキャッシュノードの各々はキャッシュクラスタの現在の構成を格納する。管理システムは、新しいキャッシュノードのプロビジョニングなどの、キャッシュクラスタに対する変更を監視して、クライアントによる取得のために、キャッシュノード内に格納された構成を更新する。【選択図】図１
2019212336.tif 000002
【特許請求の範囲】
【請求項１】
分散メモリキャッシュシステムを管理するための管理システムにより実行される方法であって、前記方法は、
複数のメモリキャッシュノードの分割されたメモリ空間に格納された構成に関連する前記メモリキャッシュノードに対するエイリアスを提供することと、
前記複数のメモリキャッシュノードに対するプロビジョニングもしくはプロビジョニングの解除、又は前記複数のメモリキャッシュノードとは別の新たなメモリキャッシュノードの追加もしくは前記複数のメモリキャッシュノードの少なくとも１つのメモリキャッシュノードの取り除きにより前記構成の変更について監視することと、
前記構成の変更を監視したことに基づいて、前記メモリキャッシュノードに対するエイリアスを更新すること、
を含む管理システムにより実行される方法。
【請求項２】
前記構成の変更について監視することが、前記メモリキャッシュノードの障害を検出することを含み、
前記メモリキャッシュノードの障害の検出に基づいて、前記エイリアスを更新する
請求項１のコンピュータに実行される方法。
【請求項３】
前記構成の変更について監視することが、追加のキャッシング能力の必要性を示す指標を検出することを含み、
前記キャッシング能力の必要性を示す指標に基づいて、前記エイリアスを更新する
請求項１のコンピュータに実行される方法。
【請求項４】
コンピューティング資源のサービスを管理するための管理システムにより実行される方法であって、
複数の記憶ノードの分割されたメモリ空間に格納された構成に関連するエイリアスを提供することと、
前記複数の記憶ノードに対するプロビジョニングもしくはプロビジョニングの解除、又は前記複数の記憶ノードとは別の新たな記憶ノードの追加もしくは前記複数の記憶ノードの少なくとも１つの記憶ノードの取り除きにより前記構成の変更について監視することと、
前記構成の変更を監視したことに基づいて、前記記憶ノードに対するエイリアスを更新することと、
を含むコンピュータに実行される方法。
【請求項５】
前記複数の記憶ノードの少なくとも１つの記憶ノードの取り除きの際には、
前記取り除きの記憶ノードのプロビジョニング解除と、前記少なくとも１つの記憶ノードを取り除いた残りの前記記憶ノード間での再割り当てとの動作を行う、請求項４のコンピュータに実行される方法。
【請求項６】
前記複数の記憶ノードとは別の新たな記憶ノードの追加の際には、
前記新たな記憶ノードのプロビジョニングと、前記新たな記憶ノードを含む複数の記憶ノードの間での再割り当てとの動作を行う、請求項４のコンピュータに実行される方法。
【請求項７】
前記複数の記憶ノードとは別の新たな記憶ノードの追加及び前記複数の記憶ノードの少なくとも１つの記憶ノードの取り除きの際には、
前記新たな記憶ノードのプロビジョニングと、前記前記取り除きの記憶ノードのプロビジョニング解除と、前記新たな記憶ノードを含む複数の記憶ノードの間での再割り当て
とを行う、請求項４のコンピュータに実行される方法。
【発明の詳細な説明】
【背景技術】
【０００１】
データセンターは、１つ以上のクライアントによる使用のためのコンピューティング資源（resource）を提供する。これらのサービスは、コンピューティング、ストレージおよびネットワーキングサービスを含み得る。例えば、データセンターは、アプリケーションをホストするためのマシン、アプリケーションデータを格納するためのストレージ、繰り返されるデータ要求に迅速に応答するためのキャッシュ、および資源間の通信を可能にするためのネットワーキングを提供し得る。データセンターサービスを利用することにより、顧客は、予想されるハードウェアニーズを購入するのではなく、コンピューティング利用および／または資源利用に対して支払い得る。これは、顧客が、必要に応じて、コンピューティングサービスの利用を拡張および縮小するのを可能にする。例えば、開発者または管理者が利用を監視および予測するのではなく、アプリケーションが、必要に応じてさらに多くのストレージを要求するように構成され得る。
【０００２】
関連出願の相互参照
本出願は、2012年11月26日に出願された「DISTRIBUTED CACHING CLUSTER MANAGEMENT」という名称の米国特許出願第13/685,615号（代理人整理番号90204-847689(057200US)）からの優先権およびその利益を主張する。本出願は、2012年11月26日に出願された「DISTRIBUTED CACHING CLUSTER CONFIGURATION」という名称の同時係属の米国特許出願第13/685,596号（代理人整理番号90204-847691(057100US)）、2012年11月26日に出願された「DISTRIBUTED CACHING CLUSTER CLIENT CONFIGURATION」という名称の同時係属の米国特許出願第13/685,607号（代理人整理番号90204-847692(057000US)）および2012年11月26日に出願された「REPLICATION IN DISTRIBUTED CACHING CLUSTER」という名称の同時係属の米国特許出願第13/685,620号（代理人整理番号90204-847693(056900US)）の完全な開示に関連し、それらを全ての目的のために参照により組み込む。
【０００３】
オンデマンドシステムが、データおよびオブジェクトをデータベースからキャッシングすることによりデータベースが読み取られる必要がある回数を低減するために使用され得る。例えば、一実現形態は、クライアントはサーバーを知っているが、サーバーは互いに知らない、クライアント中心型アーキテクチャを使用する。鍵を読み取るかまたは設定するために、クライアントは、ハッシュを使用してどのサーバーに接触するかを判断し、そのサーバーに接触する。サーバーは次いで、第２のハッシュを計算して、対応する値をどこで格納または読み取るかを判断する。サーバーグループに対する追加または除去は、クライアントによって管理される。
【図面の簡単な説明】
【０００４】
本開示に従った様々な実施形態が、図を参照して説明される。
【図１】少なくとも１つの実施形態に従ったクラスタキャッシュ管理の実例を示す。
【図２】少なくとも１つの実施形態に従ったクラスタキャッシュ管理の実例を示す。
【図３】少なくとも１つの実施形態に従った環境の実例を示す。
【図４】クラスタキャッシュ管理の実施形態の実例を示す。
【図５】少なくとも１つの実施形態に従った構成要素間の論理接続の実例を示す。
【図６】少なくとも１つの実施形態に従ったプロセスの例示的なチャートを示す。
【図７】少なくとも１つの実施形態に従ったプロセスの実例を示す。
【図８】少なくとも１つの実施形態に従ったプロセスの実例を示す。
【図９】少なくとも１つの実施形態に従ったプロセスの実例を示す。
【図１０】少なくとも１つの実施形態に従ったプロセスの実例を示す。
【図１１】少なくとも１つの実施形態に従ったハッシュの実例を示す。
【図１２】少なくとも１つの実施形態に従ったハッシュの実例を示す。
【図１３】様々な実施形態が実現できる環境を示す。
【発明を実施するための形態】
【０００５】
以下の記述で、様々な実施形態が説明される。説明のため、特定の構成および詳細が、実施形態の完全な理解を提供するために明記される。しかし、当業者には、実施形態はその具体的詳細がなくても実施され得ることも明らかであろう。さらに、説明している実施形態を不明瞭にしないように、周知の特徴は、省略されるか、または簡略化され得る。
【０００６】
本明細書で説明および提案する技術は、キャッシュクラスタを有効化および監視して、そのキャッシュクラスタが構成を認識するようにして、キャッシュクラスタの基礎的な構造に対する初期化および変更が動的に更新できるようにすることを含む。例えば、キャッシュクラスタは、１つ以上のメモリキャッシュノードの組を含み得る。構成は、とりわけ、キャッシュクラスタ内のメモリキャッシュノードの数およびメモリキャッシュノードの位置の指標であり得る。構成は、一実施形態では、１つ以上のメモリキャッシュノードの組の各々で保持され得る。そのため、各メモリキャッシュノードは、キャッシュクラスタ内のあらゆるメモリキャッシュノードの構成を知ることができる。構成を格納するメモリキャッシュノードは、構成エンドポイント内でエイリアスによって参照され得る。クライアントが最初にキャッシュクラスタに接続しようとする場合、クライアントは、静的構成エンドポイントからキャッシュクラスタ内のメモリキャッシュノードへエイリアスを解決し得る。クライアントは、初期構成をメモリキャッシュノードに要求し得る。キャッシュクラスタに対して追加の要求が行われると、第１のメモリキャッシュノードが１つ以上の方法（キャッシュクラスタに追加されるか、またはキャッシュクラスタから除去されるなど）で変更され得る。そのため、構成が更新されて、キャッシュクラスタ内の１つ以上のメモリキャッシュノードの組の各々に送信され得る。管理システムは、キャッシュクラスタに対するこれらの変更を監視し、変更には、例えば、新しいメモリキャッシュノードのプロビジョニングまたは故障したメモリキャッシュノードの交換を含む。管理システムは、メモリキャッシュノード内に格納された構成も更新し得る。クライアントは、次いで、更新された構成を、キャッシュクラスタの現在の構成を有するメモリキャッシュノードから直接、取得し得る。そのため、更新された構成は、ノードが解決された後、構成エンドポイントを介してメモリキャッシュノードを解決する必要なく、クライアントによって容易に取得される。管理システムは、キャッシュクラスタを管理する１つ以上のコンピューティング資源を含み得る。複数のメモリキャッシュノードが、キャッシュクラスタを作成するために１つ以上の方法で一緒にグループ化され得ることに留意されるべきである。
【０００７】
キャッシュクラスタは、データソースへのアクセスを削減するために、データおよびオブジェクトをキャッシュし得る。キャッシュクラスタは、１つ以上のメモリキャッシュノードを含み得る。各ノードは、キャッシュされたデータの組の一部を格納し得る。キャッシュされたデータは、データの要素をキャッシュクラスタから取得するために使用される鍵に基づき、メモリキャッシュノード間で分割され得る。データソースは、データベース、アプリケーションプログラミングインタフェース（ＡＰＩ）または他のデータストアもしくはデータソースを含み得る。メモリキャッシュノードは、要求に対する応答を迅速化するために、キャッシュ用ストレージとして、ＲＡＭなどの、コンピュータメモリを使用し得る。
【０００８】
一実例では、キャッシュクラスタは、管理システムによって管理される。管理システムは、１つ以上のキャッシュクラスタの構成を判断、格納、および／または維持し得る。加えて、管理システムは、ネットワークを経由して、分散コンピューティング資源に論理的
に接続され得る。管理システムは、コンピューティング資源をメモリキャッシュノードとしてプロビジョニングするように構成され得る。管理システムは、プロビジョニングされたメモリキャッシュノードを１つ以上のキャッシュクラスタのいずれかと関連付けるようにも構成され得る。一実施形態では、管理システムは、メモリキャッシュノードを徐々に停止（wind down）して、コンピューティング資源をキャッシュクラスタから分散コンピューティング資源の汎用プールに移動させるようにも構成され得る。キャッシュクラスタが更新されると、キャッシュクラスタの構成が管理システム内で更新されて、メモリキャッシュノードの１つ以上に送信され得る。そのため、各メモリキャッシュノードは、キャッシュクラスタの構成の現在のバージョンを含み得る。
【０００９】
一例として、キャッシュクラスタは、データベースに対して要求を行うウェブアプリケーションに対応する４つのメモリキャッシュノードを有し得る。トラフィック混雑のため、第５のメモリキャッシュノードがオンラインにされて、ウェブアプリケーションとデータベースとの間での要求の対応を支援し得る。メモリキャッシュノードは、一例として、第５のノードに対してコンピューティング資源をプロビジョニングし、第５のノードをキャッシュクラスタの一部としてスピンアップさせ得る、管理システムによってオンラインにされ得る。第５のメモリキャッシュノードをオンラインにした後、管理システムは、第５のメモリキャッシュノードを組み込むために、キャッシュクラスタのための構成を更新し得る。更新された構成は、格納および読み出しのために、メモリキャッシュノードの１つ以上にプッシュ型配信され得る。一実施形態では、クライアントは、構成エンドポイントに接触することなく、更新された構成をメモリキャッシュノードから受信し得る。別の実施形態では、静的構成エンドポイントは、更新された構成を含むメモリキャッシュノードを参照するエイリアスに対する更新を受信し得る。キャッシュクラスタのクライアントは、キャッシュ妨害を最小限にするために、構成エンドポイントからエイリアスを受信して、更新された構成を受信し得る。
【００１０】
構成は、複数の方法でクライアントに配信され得る。一実施形態では、事前定義された構成エンドポイントが、そこから現在の構成を要求するためのメモリキャッシュノードに対するアドレスを解決するために、クライアントドライバによって問い合わされ得る。構成エンドポイントは、クライアントシステムに対するクライアントドライバを含むサポートソフトウェアが、構成エンドポイントによって提供されるエイリアスを、構成が取得され得るメモリキャッシュノードに解決することが可能であり得るように、静的に宣言され得る。構成は、メモリキャッシュノードを含む、キャッシュクラスタのメモリキャッシュ資源にアクセスする方法を記述できる。エイリアスのこの静的宣言は、新しいクライアントを開始する前に新しいクライアントを手動で構成するのではなく、新しいクライアントが、開始して、メモリキャッシュノードを解決し、構成を取得して、現在のキャッシュクラスタ状態に自己構成するのを可能にする。別の実施形態では、メモリキャッシュノードは、キャッシュクラスタの構造を記述する構成を格納するための予約された空間も含むことができる。データの通常のキャッシングは、データを満了にし得るが、メモリキャッシュノードの制御範囲内のストレージのセクションは、削除を心配することなく、構成がかかる予約された構成空間内に格納され得るように、分割され得る。
【００１１】
メモリキャッシュノードと既に通信しているクライアントは、メモリキャッシュノードからの現在の構成よりも新しい場合、現在の構成を要求することもできる。一実施形態では、メモリキャッシュノード内に格納された構成が、クライアントが有する現在の構成から更新されている場合、要求が行われる。別の実施形態では、クライアントは、定期的に、または不定期に、１つ以上のメモリキャッシュノードから構成を要求し得る。別の実施形態では、クライアントからの要求に応答する代わりに、キャッシュクラスタに対する構成変更または任意の他の変更の際に、新しい構成が、メモリキャッシュノードによってクライアントにプッシュ型配信され得る。なおさらに、キャッシュクラスタの構成が、定期
的、ハートビート、満了、または不定期的などの、時間間隔に基づき、メモリキャッシュノードによってクライアントに発信され得る。追加の実施形態では、構成は、クライアントがキャッシュクラスタへのアクセスを要求すると、クライアントにプッシュ型配信され得る。現在の構成を提供することにより、メモリキャッシュノードは、クライアントがメモリキャッシュノードをアクセスすると更新するであろうという期待で、変更され得る。
【００１２】
プロビジョニングという用語は、コンピューティング資源の使用に対する割当てを含むように幅広く読まれることを意図する。いくつかの実施形態では、これは、コンピューティング資源を使用のために準備することを含む。一実施形態では、メモリキャッシュノードのプロビジョニングは、サーバーの割当て、オペレーティングシステムのインストール、メモリキャッシュノードのインストールおよび構成、並びにメモリキャッシュノードの使用のための有効化を含むであろう。例えば、プロビジョニングシステムは、メモリキャッシュノードとして使用するためにサーバーを選択し得る。プロビジョニングシステムは次いで、サーバーをメモリキャッシュノードとして使用するために準備するワークフローを作成し得る。ワークフローの一部として、マシンイメージがサーバー上にロードされ得る。マシンイメージは、オペレーションシステム、メモリキャッシュソフトウェアおよび／または設定を含み得る。マシンイメージのロード後、サーバーは、オペレーティングシステムにブートされて、任意のさらなるソフトウェアおよび／または設定を受信され得る。かかる設定は、キャッシュクラスタ構成を含み得る。プロビジョニングの完了後、サーバーは、メモリキャッシュノードとしての使用のために管理システムに引き渡され得る。
【００１３】
ここで図１を参照すると、少なくとも１つの実施形態に従った分散メモリキャッシュシステム１００の実例が示されている。管理システム１１４は、キャッシュされた情報をキャッシュ１１２からクライアントに提供するキャッシュクラスタ１１３を管理する１つ以上のコンピューティング資源を含み得る。管理システム１１４は、キャッシュクラスタ１１３を監視して、サービスの必要性および／または障害に少なくとも部分的に基づき調整し得る。キャッシュサービス１００は、キャッシュクラスタ１１３を形成する１つ以上のメモリキャッシュノード１１０に対するエイリアスを含む構成エンドポイント１０６を含み得、各メモリキャッシュノード１１０は、キャッシュ１１２からのキャッシュされたデータおよび構成１０８をサービスし得る。キャッシュクラスタ１１３は、複数のキャッシュノード１１０を含み得る。一実施形態では、キャッシュクラスタ１１３は、複数のメモリキャッシュノード１１０を含み得る。メモリキャッシュノード１１０は各々、サーバーなどのコンピューティング装置上で実行する仮想マシンを含み得る。別の実施形態では、キャッシュクラスタ１１３は、直接ハードウェア上で実行する複数のメモリキャッシュノード１１０を含み得る。そのため、本明細書で参照されるプログラムおよびプロセスは、実際のハードウェアまたは仮想マシン上で実行され得ることが認識されるべきである。
【００１４】
一実施形態では、管理システム１１４は、キャッシュクラスタ１１３を監視する監視システムおよびキャッシュクラスタ１１３を調整するプロビジョニングシステムを含み得る。監視は、キャッシュクラスタ１１３の構成要素ならびに／またはキャッシュサービス１００全体の入力、出力および状態に関する測定値を記録すること、ならびに／または、それらの指標を判定することを含み得る。プロビジョニングシステムは、新しいメモリキャッシュノードのプロビジョニング、現在のメモリキャッシュノードのプロビジョニング解除およびキャッシュクラスタ１１３上で実行された変更に基づく新しい構成１０８の判定などのサービスを提供し得る。例えば、監視システムは、メモリキャッシュノード１１０が故障していることを検出して、問題をプロビジョニングシステムに伝達し得る。プロビジョニングシステムは、新しいメモリキャッシュノード１１０のプロビジョニング、故障しているメモリキャッシュノード１１０の除去、および構成１０８の更新を行うワークフローが作成されるようにし得る。プロビジョニングシステムは次いで、新しいメモリキャッシュノードが、故障しているメモリキャッシュノードに取って代わり、構成エンドポイ
ントが有効なエイリアスで更新され、メモリキャッシュノード１１０の１つ以上が新しい構成１０８を受信するように、ワークフローを実行させ得る。一実施形態では、メモリキャッシュノード１１０が次いで、ピアツーピア方式などで、それらの間で情報を伝搬するので、プロビジョニングシステムは、構成をメモリキャッシュノード１１０の１つに伝達する必要があるだけである。
【００１５】
メモリキャッシュノード１１０は、構成１０８のためのストレージも提供し得、構成１０８は、キャッシュクラスタ１１３との通信パラメータを列挙し得る。いくつかの実施形態では、この構成１０８は、キャッシュ満了規則の対象ではない予約された構成空間内に格納され得る。一実施形態では、構成は、キャッシュ１１２内に格納されて、クライアントまたは管理システム１１４は、構成１０８が利用可能であることを確実にするために十分に頻繁な要求および／更新を確実にする。構成１０８は、キャッシュクラスタ１１３に対する変更に遅れないようにするために上書きされ、かつ／または更新され得る。
【００１６】
構成エンドポイント１０６は、構成１０８の取得を支援するためにも提供され得る。いくつかの実施形態では、構成エンドポイント１０６は、構成１０８の取得のために、メモリキャッシュノードに対するエイリアスとして直接参照され得る静的資源である。例えば、新しいクライアントは、構成エンドポイント１０６のホスト名で初期化され得る。新しいクライアントのインスタンス生成時に、クライアントは、構成エンドポイント１０６と接続して、メモリキャッシュノードに対するエイリアスを解決し、構成１０８をメモリキャッシュノードから取得し得る。構成エンドポイント１０６を提供することにより、クライアントは、古くなって保守を必要とし得るメモリキャッシュノードのリストを用いて開始するのではなく、自己構成し得る。いくつかの実施形態では、クライアントは、構成エンドポイント１０８によって提供されたエイリアス内で参照されたメモリキャッシュノードまたはメモリキャッシュノード１１０に構成１０８を要求することにより、さらに新しい構成１０８の取得を継続し得る。一実施形態では、構成エンドポイントは、ドメインネームシステム（ＤＮＳ）サービスによって実装され得る。クライアントは、静的なホスト名をドメインネームサーバーに要求し、メモリキャッシュノードへ解決するＩＰアドレスを受信し得る。
【００１７】
ここで図２を参照すると、少なくとも１つの実施形態に従った分散メモリキャッシュシステム２００の実例が示されている。クライアントシステム２０３は、クライアントドライバ２０４を使用して、管理システム２１４によって管理されるキャッシュクラスタ２１３から情報を取得する。図示する実施形態では、クライアントシステム２０３は、キャッシュクラスタ２１３からデータを取得するアプリケーション２０２を含む。クライアントシステム２０３は、クライアントドライバ２０４を使用して、アプリケーション２０２とキャッシュクラスタ２１３との間のインタフェースを管理する。例えば、アプリケーション２０２は、ショッピングウェブサイトであり得、クライアントドライバ２０４は、関数呼び出しおよび／またはアプリケーションプログラミングインタフェース（ＡＰＩ）を通してキャッシュ機能を公開するライブラリであり得る。
【００１８】
クライアントドライバ２０４は、キャッシュクラスタ２１３との通信を管理し得る。一実施形態では、クライアントドライバ２０４は、自動構成をサポートする。クライアントドライバ２０４の初期構成は、構成２０８が取得され得るエイリアスを提供する構成エンドポイント２０６のホスト名など、小さい可能性がある。一実施形態では、エイリアスは、ドメインネームサーバーとして機能する構成エンドポイントの一部として提供される。構成２０８は、クライアントドライバ２０４がキャッシュクラスタ２１３に接続して、それを使用するために必要な情報を含み得る。例えば、アプリケーション２０２は、クライアントドライバ２０４の初期化の一部として、構成エンドポイント２０６のホスト名および／またはアドレスをクライアントドライバ２０４に提供し得る。与えられたホスト名お
よび／またはアドレスを使用して、クライアントドライバ２０４は、構成エンドポイント２０６と接触して、メモリキャッシュノード２１０に対するエイリアスを解決し、メモリキャッシュノード２１０に構成２０８を要求する。一実施形態では、この構成は、削除（eviction）などの、キャッシュノードによって実施されるプロトコル（ｍｅｍｃａｃｈｅｄプロトコルおよびその変形など）のあるキャッシュ規則の対象ではないメモリキャッシュノード２１０の予約されたメモリ空間内に格納される。予約されたメモリ空間内の情報は、ｍｅｍｃａｃｈｅｄなどの、標準的なキャッシュプロトコルに対する拡張に従ってアクセスされ得る。構成２０８を受信すると、クライアントドライバ２０４は、構成２０８をロードし得る。一旦ロードされると、クライアントドライバ２０４は、構成２０８を検証し得る。一実施形態では、クライアントドライバ２０４は、１つ以上のメモリキャッシュノード２１０に接触し、構成２０８のバージョンを、第２のメモリキャッシュノード２１０内に含まれる構成バージョンに対して検証する。クライアントドライバ２０４は、見つかった最新の構成２０８を使用し得る。クライアントドライバ２０４は次いで、データを、キャッシュ２１２内に格納する１つ以上のメモリキャッシュノード２１０に要求することにより、アプリケーション２０２からのデータに対する要求に対応し得る。クライアントドライバ２０４は、定期的に、ロードされた構成バージョンを、メモリキャッシュノード２１０によって格納された構成バージョンに対してチェックし得る。クライアントドライバ２０４は、見つかった最新の構成を使用することを選択し得、それは、クライアントドライバ２０４にロードされた現在のバージョンであり得る。構成２０８をロードすることにより、クライアントドライバは、キャッシュクラスタ２１３における動的変化に対処できる。例えば、構成２０８は、キャッシュクラスタ２１３に追加されるか、またはそれから取り除かれるメモリキャッシュノード２１０を識別し得る。構成をロードすることにより、クライアントドライバ２０４は、アプリケーション２０２からの指示なしで、キャッシュクラスタ２１３のインフラストラクチャにおけるいかなる変更にも対処し得る。
【００１９】
構成をロードすることは、他のコンピューティングシステムと、キャッシュクラスタに関するクライアントドライバの情報を同期化し得る。一実施形態では、いくつかのクライアントドライバ２０４が、各々がそれ自身のサーバー上にある、ウェブアプリケーションの複数のインスタンスにサービスするために、同時に存在する。キャッシュクラスタ２１３の構成を同期化すると、各クライアントドライバ２０４が、キャッシュクラスタ２１３を形成するメモリキャッシュノード２１０を適切に設定して、そこからの情報を要求するのを可能にする。例えば、メモリキャッシュノードの設定およびキャッシュ要求の例については、図１１〜図１２および関連した説明を参照されたい。
【００２０】
クライアントドライバ２０４およびキャッシュノード２１０は、ｍｅｍｃａｃｈｅｄプロトコルなどの、標準プロトコル、およびそのプロトコルに対する拡張を使用して、通信し得る。例えば、キャッシュ動作は、標準プロトコルを使用し得るが、構成動作は、プロトコルのコマンドセットに対する追加などの、プロトコルに対する拡張を使用し得る。いくつかの実施形態では、予約された構成ストレージについて動作可能な拡張動作は、作成、取得、更新および破壊動作を含み得る。他の拡張動作は、構成バージョンの取得動作、他のメタデータ操作動作および構成要求の伝搬を含み得る。
【００２１】
管理システム２１４は、他のシステムの管理に対して責任がある１つ以上のコンピューティング資源であり得る。図２では、管理システム２１４は、キャッシュクラスタ２１３内のメモリキャッシュノード２１０のプロビジョニングおよび監視を含む、分散メモリキャッシュシステム２００に対して責任を負う。管理システム２１４は、管理システム２１４の管理が顧客および／または管理者のニーズに合うように、顧客および／または管理者からの命令も受信し得る。例えば、管理システム２１４は、キャッシュクラスタ２１３を形成するメモリキャッシュノード２１０の組に対して責任を負い得る。管理システム２１４は、一例としてプロビジョニングシステムを通して、新しいメモリキャッシュノード２
１０がインスタンス生成されるか、または現在のメモリキャッシュノード２１０が停止されるようにし得る。管理システム２１４は、キャッシュクラスタ２１３の監視に対しても責任を負い得、それは、指標に関してメモリキャッシュノード２１０の組を監視することを含み得る。指標は、利用、障害または使用および／もしくは根底にあるシステムに関する他の情報を含み得る。構成エンドポイント２０６は、構成２０８を提供できるアクティブなメモリキャッシュノード２１０に対するエイリアスが常に利用可能であることを確実にするために、管理システム２１４によっても維持され得る。
【００２２】
一実施形態では、管理システム２１４は、監視システムを使用して、キャッシュサービス２００に関連して認識された問題に対処し得る。例えば、故障したメモリキャッシュノード２１０内で障害が発生すると、故障したメモリキャッシュノードはプロビジョニング解除されて、キャッシュクラスタ２１３から除去され得る。新しいメモリキャッシュノード２１０が、故障したメモリキャッシュノードを交換して、故障したメモリキャッシュノードの損失から回復するためにプロビジョニングされ得る。他の例では、故障したメモリキャッシュノードが、メモリキャッシュノードを交換し、再初期化して、回復することにより、修復され得る。キャッシュクラスタ２１３に対して行われた変更を使用して、管理システム２１４は、構成２０８を更新し、更新された構成２０８が各メモリキャッシュノード２１０内に格納されるようにし得る。必要に応じて、構成エンドポイント２０６によって提供されるエイリアスも更新され得る。別の例では、管理システム２１４は、キャッシュされたデータに対する需要の増加に起因して、新しいメモリキャッシュノード２１０をプロビジョニングする。管理システム２１４は、構成２０８を新しいメモリキャッシュノード２１０に対する接続情報で更新して、構成２０８をメモリキャッシュノード２１０内に格納させ得る。
【００２３】
構成は、キャッシュクラスタ２１３に接続するために必要な情報を含み得る。直接接続構成を使用するいくつかの実施形態では、これは、各メモリキャッシュノード２１０に直接接続するための情報を含み得る。要求転送構成を使用する他の実施形態では、構成２０８は、データをキャッシュ２１２内に保持するメモリキャッシュノード２１０に要求を転送する責任を負うメモリキャッシュノード２１０を識別し得る。一実施形態では、直接接続および要求転送の両方が利用可能なハイブリッド手法が取られ得る。
【００２４】
ここで図３を参照すると、少なくとも１つの実施形態に従った分散メモリキャッシュ環境３００の実例が示されている。クライアントアプリケーション３０９（図２の２０２）、管理システム３１２（図２の２１４）および構成エンドポイント３０８（図２の２０６）がデータセンターのコンテキストで存在し得る。コンピュータは、データセンター３０４内の信頼されるコンピューティング資源および、データセンター３０４外部の、アプリケーションクライアント３２２とも呼ばれる、信頼できない外部コンピューティングシステム３１６、３１８、３２０に分類され得る。データセンター３０４内部では、コンピューティング資源およびネットワーキング３０６は、既知の管理者のドメインおよび制御の下であり、従って、信頼される内部接続を有し得る。インターネット３０５など、データセンター３０４の外部は、管理者の制御を超えている可能性があり、従って、信頼できない。
【００２５】
データセンター３０４の内部は、メモリキャッシュノード３０２、内部ネットワーキング３０６、管理システム３１２、ゲートウェイ３１０、構成エンドポイント３０８およびクライアントアプリケーション３０９であり得る。メモリキャッシュノード３０２は、内部ネットワーキング３０６を通して、他のメモリキャッシュノード３０２に接続され得る。メモリキャッシュノード３０２は、管理システム３１２とも接続され得る。管理システム３１２は、資源のプロビジョニングおよびルーティングの変更を含め、コンピューティング資源を操作するための要求を受信し得る。メモリキャッシュノード３０２および管理
システム３１２は、ゲートウェイ３１０とも接続され得る。ゲートウェイ３１０は、ＷｅｂサーバーへのＨＴＴＰトラフィックなどの、クライアントアプリケーション３０９への外部トラフィックをフィルタ処理およびルーティングし得る。例えば、クライアントアプリケーション３０９は、外部システム３１６、３１８、３２０と通信し得るが、メモリキャッシュノード３０２は外部通信を許可されない。
【００２６】
データセンター３０４の外部は、いくつかの異なる構成要素または環境のいずれかであり得、インターネット３０５ならびに、デスクトップ３１６、ラップトップ３１８などの様々な外部コンピューティングシステム、および電子書籍端末、携帯電話、タブレットコンピューティング装置などの、モバイル機器３２０を含み得る。システム３１６、３１８、３２０は信頼される管理者によって管理されていない可能性があるので、システム３１６、３１８、３２０は信頼できないと見なされ得る。さらに、インターネットなどの、通信チャネルは、信頼される管理者によって制御されない。従って、外部コンピューティングシステム３１６、３１８、３２０からのメッセージは、インターセプトされ、偽造され、かつ／または悪用され得る。
【００２７】
いくつかの場合には、保護のために、安全な内部ネットワーク３０６上のクライアントアプリケーション３０９は、少しでもある場合には、動作するために必要なインターネット３０５アクセスのみが与えられ得る。例えば、ゲートウェイ３１０が、他の全てのインターネット３０５トラフィックがＷｅｂサーバーに直接到着するのを防ぐ安全な内部ネットワークに対するアクセス制御を提供するので、データセンター３０４内のＷｅｂサーバーは、ポート８０上の外部トラフィックのみを受信し得る。別の例では、安全な内部ネットワーク３０６上のメモリキャッシュノード３０２は、ローカルＷｅｂサーバーにより安全な内部ネットワークを経由して問い合わされるだけなので、インターネット３０５に接続されない可能性がある。他の実施形態では、クライアントアプリケーション３０９は、負荷分散装置の後ろであり得、それは、時々、インターネット３０５要求をクライアントアプリケーション３０９に向かわせ得る。
【００２８】
ここで図４を参照すると、少なくとも１つの実施形態に従った分散メモリキャッシュ管理環境４００の実例が示されている。管理システム４１６は、メモリキャッシュノード４０２を監視および／または管理し得る。メモリキャッシュノード４０２は、キャッシュされた鍵‐値ペア４１０を管理し、キャッシュされた値を（鍵‐値ペア４１０から）提供する要求に応答し、キャッシュクラスタ４１３および／または各メモリキャッシュノード４０２と通信する方法を識別する構成４１２を提供し得る。鍵‐値ペア４１０は、データストア４０８からの読取りおよび／または変更時に、メモリキャッシュノード４０２のキャッシュに挿入され得る。キャッシュクラスタ４１３は、頻繁にアクセスされ、かつ／または、データストア４０８から直接データを要求するよりもアクセスコストが高いデータに潜在的に迅速に応答するのを可能にする。
【００２９】
キャッシュ空間４０４および予約されたメモリ空間４０６を含む、メモリキャッシュノード４０２が提供され得る。メモリキャッシュノード４０２は、仮想マシンを含む、仮想ハードウェアおよび／または物理ハードウェアによって対応され得る。メモリキャッシュノードは、キャッシュ空間４０４内に格納するために鍵／値ペア４１０を受信し得る。鍵‐値４１０は、満了時間、ならびに、メモリキャッシュノード４０２がキャッシュ空間４０４を使い果たしているかどうかに応じた早期満了を有し得る。メモリキャッシュノード４０２は、どの鍵‐値ペア４１０が早期に満了し得るかを判断するためのアルゴリズムを使用し得る。いくつかの実施形態では、キャッシュが満杯の場合に、どの項目が早期に満了するかを判断するために、ＬＦＵ（使用頻度が最も低い）アルゴリズムが使用される。他の実施形態では、データストアに問い合わせるコストが考慮に入れられ得る。一実施形態では、満了は、どの鍵‐値ペア４１０が、将来、頻繁にアクセスされると予期されない
かに基づき得る。メモリキャッシュノード４０２は、キャッシュクラスタ４１３との通信パラメータを列挙する構成４１２用のストレージも提供し得る。いくつかの実施形態では、この構成４１２は、満了の対象ではない予約されたメモリ空間４０６内に格納され得る。一実施形態では、構成４１２は、キャッシュ空間４０４内に格納されるが、クライアントまたは管理システム４１６は、構成４１２が利用可能であることを確実にするために十分に頻繁な要求および／更新を確実にする。構成４１２は、キャッシュクラスタ４１３に対する変更に遅れないようにするために上書きされ、かつ／または更新され得る。
【００３０】
構成エンドポイント４１４は、構成４１２の取得を支援するためにも提供され得る。いくつかの実施形態では、構成エンドポイント４１４は、構成４１２の取得のために、メモリキャッシュノードに対するエイリアスとして直接参照され得る静的資源である。例えば、新しいクライアントは、構成エンドポイント４１４のホスト名で初期化され得る。新しいクライアントのインスタンス生成時に、クライアントは、構成エンドポイント４１４と接続して、メモリキャッシュノード４０２に対するエイリアスを解決し、構成４１２をメモリキャッシュノード４０２から取得し得る。構成エンドポイント４１４を提供することにより、クライアントは、古くなって保守を必要とし得るメモリキャッシュノード４０２のリストを用いて開始するのではなく、自己構成し得る。いくつかの実施形態では、クライアントは、構成エンドポイント４１４によって提供されたエイリアス内で参照されたメモリキャッシュノード４０２から、またはメモリキャッシュノード４０２から直接、構成４１２を要求することにより、さらに新しい構成４１２の取得を継続し得る。
【００３１】
一実施形態では、管理システム４１６は、構成４１２について責任を負う。別の実施形態では、新しいメモリキャッシュノード４０２が検出されると、それらが構成４１２に追加され得るように、メモリキャッシュノード４０２は、クラスタ認識（cluster aware）であり得る。別の実施形態では、管理システム４１６は、更新された構成４１２を、構成エンドポイント４１４によって維持されるエイリアスによって識別されるメモリキャッシュノード４０２などの、識別されたメモリキャッシュノード４０２内に格納し得る。各メモリキャッシュノード４０２は、次いで、変更に関して識別されたメモリキャッシュノード４０２を監視し、構成４１２が変更されていると判断される場合に、構成４１２をダウンロードし得る。いくつかの実施形態では、識別されたメモリキャッシュノード４０２は分散されて、かつ／またはキャッシュクラスタ４１３内の他のメモリキャッシュノード４０２に構成４１２に対する変更を通知し得る。更新された構成４１２を取得することにより、クライアントは、キャッシュクラスタ４１３内の動的に変化するメモリキャッシュノード４０２に適合し得る。
【００３２】
メモリキャッシュノード４１３は、キャッシュされたデータを管理する規則を含むプロトコルに従い得る。一実施形態では、規則は、キャッシュ空間４０４が満杯の場合に、ＬＲＵ（最も長い間使用されていない）ベースでキャッシュ削除を指定する。別の実施形態では、規則は、鍵‐値ペア４１０などの、キャッシュされたデータが、その後はデータがもはや利用できない、有効期間と関連付けられるのを可能にする。いくつかの実施形態では、予約された構成空間４０２内に格納された構成４１２がキャッシュ削除および／または有効期間を管理する規則の対象ではなくなるように、キャッシュされたデータを管理するプロトコルが拡張されている。
【００３３】
ここで図５を参照すると、少なくとも１つの実施形態に従った構成要素間の論理接続の実例５００が示されている。メモリキャッシュノード５１０を使用するキャッシュクラスタ５１３の目的は、ＡＰＩまたはリレーショナルデータベース、ＮｏＳＱＬデータベースおよび鍵‐値ストアなどの、データストア５１４上へのロードおよび／またはそこからの低速応答を防ぐためであり得る。図示した実施形態では、アプリケーション５０２は、クライアントドライバ５０４に、ライブラリＡＰＩ呼出しを通してなど、構成５０８を、所
定の構成エンドポイント５０６から取得されたエイリアスによって識別されたメモリキャッシュノード５１０から取得させ得る。構成５０８は、データストア５１４およびメモリキャッシュノード５１０との通信を可能にするための情報を含み得る。通信を構成すると、クライアントドライバ５０４は、データストア５１４内のデータに対するアプリケーション５０２からの要求を処理し得る。クライアントドライバ５０４は、データがメモリキャッシュノード５１０のキャッシュ５１２内にあるかどうかを確認するために接触するメモリキャッシュノード５１０を判断し得る。そうである場合、クライアントドライバ５０４は、データをアプリケーション５０２に返し得る。そうでない場合、クライアントドライバは、データストア５１４から直接情報を要求し得る。要求のために、データストア５１４および／またはクライアントドライバ５０４は、将来の取得のために、データをメモリキャッシュノード５１０のキャッシュ５１２内に格納させ得る。いくつかの実施形態では、メモリキャッシュノード５１０に対する要求の間に、クライアントドライバ５０４は、構成変更が生じているかをチェックし、かつ／またはそれを通知され得る。
【００３４】
いくつかの実施形態では、要求転送が起こり得る。例えば、クライアントドライバ５０４は、要求を第２のメモリキャッシュノード５１０に転送し得る第１のメモリキャッシュノード５１０に対してデータを要求し得る。第２のメモリキャッシュノード５１０が要求されたデータをキャッシュ５１２内に有していない場合、第２のメモリキャッシュノード５１０は、要求をデータストア５１４に転送し得る。データストアは、要求されたデータを、同じ経路を通じて、またはクライアントドライバ５０４に直接のいずれかで、返し得る。要求転送の利点は、クライアントドライバ５０４が現在の構成５０８を有する必要がないことである。しかし、遅延が、メモリキャッシュノード５１０と直接通信するよりも著しい可能性がある。
【００３５】
ここで図６を参照すると、少なくとも１つの実施形態に従った分散メモリキャッシュ構成プロセスの例示的なチャートが示されている。このプロセスは、一実施形態では、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびメモリキャッシュノード２１０を含む図２で見られるような、コンピューティング資源によって達成され得る。構成プロセスは３つの段階、すなわち初期化６００、使用６１４および再構成６２２を含み得る。初期化中、クライアントドライバ６０４は、構成６１２を獲得することにより、アプリケーション６０２のために、キャッシュからデータを受信する準備をする。図６では、アプリケーション６０２は、クライアントドライバ６０４に、ホスト名、アドレスまたは他の識別情報などにより、構成エンドポイント６１０を識別する構成エンドポイント識別子６０６を与える。クライアントドライバ６０４は、この構成エンドポイント識別子６０６を使用して、構成６１２を含むメモリキャッシュノード６２０を識別するエイリアスを解決する。クライアントドライバは、構成６１２をメモリキャッシュノード６２０に要求する（６０８）。メモリキャッシュノード６２０は、構成６１２をクライアントドライバ６０４に送信し得る。クライアントドライバ６０４は、次いで、メモリキャッシュノード６２０を有するキャッシュクラスタ６１３との通信を可能にするために構成６１２をロードし得る。
【００３６】
いくつかの実施形態では、構成エンドポイント６１０は、新しいアプリケーション６０２が構成エンドポイントエイリアスの可用性に依存するので、高可用性が確保される。構成エンドポイント６１０は、要求しているＩＰアドレス、宛先ＩＰアドレスおよび／もしくは認証情報などの、要求または要求と関連付けられた識別子に基づいて、アクセス制限され得る。
【００３７】
使用段階６１４では、クライアントドライバ６０４は、アプリケーション６０２とキャッシュクラスタ６１３との間でインタフェースとして機能し得る。いくつかの実施形態では、このインタフェースは、ＡＰＩおよび／またはコードライブラリを用いて行われ得る
。アプリケーション６０２は、どのメモリキャッシュノード６２０が要求されたデータをそのキャッシュ内に有し得るかを判断するために、クライアントドライバ６０４によって分析されるデータに対する要求６１６を送信し得る。クライアントドライバ６０４は、次いで、データに対する要求６１６を、メモリキャッシュノード６２０によって認識される形式で送信し得る。データがメモリキャッシュノード６２０内で見つかる場合、メモリキャッシュノード６２０はデータ６１８をクライアントドライバ６０４に返す。クライアントドライバ６０４は、次いで、データ６１８をアプリケーション６０２に返す。しかし、データがメモリキャッシュノード６２０内で見つからない場合、クライアントドライバの要求は失敗し得、かつ／またはデータストアに向け直され得る。
【００３８】
いくつかの実施形態では、要求６１６内のデータが、キャッシュクラスタ６１３内の２つ以上のメモリキャッシュノード６２０によってサービスされ得る。一実施形態では、この冗長性は、再作成のコストが高いキャッシュされたデータに起因し得る。他の実施形態では、この冗長性は、頻繁にアクセスされるデータの集合に起因したサーバー負荷の低減に起因し得る。クライアントドライバ６０４は、構成情報６１２、キャッシュクラスタ６１３に関する管理システムからの情報、メモリキャッシュノード６２０から要求待ち時間および／または他の情報もしくは指標を使用して、冗長情報のためにどのメモリキャッシュノード６２０が接触されるべきかを判断し得る。別の実施形態では、データが２つ以上のメモリキャッシュノード６２０から利用可能な場合、メモリキャッシュノード６２０は、ランダムに選択される。
【００３９】
再構成段階６２２では、クライアントドライバ６０４は、その構成６１２が、そのバージョンを、メモリキャッシュノード６２０の１つ以上に知られているバージョンと比較することにより、最新であることを確実にする。一実施形態では、クライアントドライバ６０４は、構成６０８に対する要求を１つ以上のメモリキャッシュノード６２０に定期的に送信し得る。接触されたメモリキャッシュノード６２０は、クライアントドライバ６０４によって使用された構成と比較され得る、格納された構成６１２を返し得る。別の実施形態では、クライアントドライバは、構成６１２のバージョン情報をメモリキャッシュノード６２０から要求し得る。クライアントドライバ６０４は、取得されたバージョン情報を、ローカル構成のバージョン情報と比較し得る。取得された情報がより新しいバージョンである場合、クライアントドライバ６０４は、構成６１２の新しいバージョンを要求し得る。例えば、バージョン情報は、連続して増加される番号とタイムスタンプの組合せであり得る。いくつかの実施形態では、クライアントドライバは、二次戻り値などの、構成が使用段階６１４中に変更されていることを示す指標をメモリキャッシュノード６２０から受信し得る。
【００４０】
図７は、少なくとも１つの実施形態に従って構成を更新するために使用され得るプロセス７００の実例を示す。このプロセスは、一実施形態では、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびメモリキャッシュノード２１０を含む図２で見られるような、コンピューティング資源によって達成され得る。キャッシュクラスタが、構成エンドポイントを提供して、構成分散のためにメモリキャッシュノードに対するエイリアスを提供し得る（７０２）。メモリキャッシュノードのプロビジョニング、メモリキャッシュノードのプロビジョニング解除、鍵の移動、鍵配置に対する変更またはクライアント構成に影響を及ぼす他の変更などの、１つ以上の分散メモリキャッシュノードを変更すると（７０４）、新しい構成が、実行された変更に基づき判断され得る（７０６）。メモリキャッシュノード内に格納された構成が更新され得（７１０）、必要に応じて、構成エンドポイントエイリアスも更新され得る（７０８）。構成に対する更新は、メモリキャッシュノード内に格納された構成データに対する交換、連結、上書き、または他の変更であり得る。
【００４１】
プロセス７００の一部または全部（または本明細書で説明する任意の他のプロセス、またはその変形および／もしくは組合せ）は、実行可能な命令で構成された１つ以上のコンピュータシステムの制御下で実行され得、ハードウェアまたはその組合せにより、１つ以上のプロセッサ上でまとめて実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラムまたは１つ以上のアプリケーション）として実装され得る。コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形で、コンピュータ可読記憶媒体上に格納され得る。コンピュータ可読記憶媒体は持続性であり得る。
【００４２】
図８は、少なくとも１つの実施形態に従ってクライアントを構成するために使用され得るプロセス８００の実例を示す。このプロセスは、一実施形態では、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびキャッシュクラスタ２１３を含む図２で見られるような、コンピューティング資源によって達成され得る。クライアントドライバが、構成エンドポイントに関する初期化情報を受信し得る（８０２）。構成エンドポイント情報を使用して、クライアントドライバは、メモリキャッシュノード情報を受信する（８０４）ために、構成エンドポイントによって提供されたエイリアスの使用を要求し得る（８０４）。クライアントドライバは、次いで、現在の構成をメモリキャッシュノードに要求し得る（８０５）。要求は、構成を要求しているアプリケーション、クライアントおよび／またはカスタマの明示的または暗黙的な識別を含み得る。明示的な識別は、認証情報またはアカウント情報を含み得る。暗黙的な識別は、起源、宛先、要求しているＩＰアドレス、宛先ＩＰアドレスまたは要求元もしくは要求の他の固有特性を含み得る。識別は、構成エンドポイントが異なる分散キャッシュクラスタに対する複数のエイリアスにサービスする場合に有用である。クライアントドライバは、構成をロードして（８０６）、構成変更が必要になるまで（８１０）、アプリケーション要求に対応し得る（８０８）。構成更新に対する必要性が定期的にチェックされて、メモリキャッシュノードからの戻り値に記録され、ドライバに伝達されるか、または別の方法でドライバ、アプリケーションもしくはクライアントによって気付かれるか、もしくは通知され得る。必要に応じて、構成が、メモリキャッシュノードから要求され得る。
【００４３】
図９は、少なくとも１つの実施形態に従ってキャッシングを管理するために使用され得るプロセス９００の実例を示す。このプロセスは、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびメモリキャッシュノード２１０を含む図２で見られるような、コンピューティング資源によって達成され得る。管理システムが、問題の指標に関してメモリキャッシュノードを監視し得る（９０２）。問題が発見された場合（９０４）、新しいメモリキャッシュノード（９０６）がプロビジョニングされ得（９０８）、かつ／または取り除かれる既存のメモリキャッシュノード（９１０）がプロビジョニングを解除され得る（９１２）。例えば、キャッシュクラスタに対して新しいメモリキャッシュノードを必要とする問題は、キャッシュ帯域幅および／またはキャッシュストレージに対する必要性の増大を含み得る。キャッシュクラスタからのメモリキャッシュノードの除去を必要とする問題は、キャッシュ帯域幅の必要性の減少、故障ハードウェアおよび／またはキャッシュストレージであり得る。例えば、キャッシングは、１２月のショッピングウェブサイトなど、利用頻度の高い時期に増加し得る。キャッシングは、夏のスキー小売業者の商取引アプリケーションなど、利用頻度の低い時期に減少もし得る。いくつかの問題は、新しいメモリキャッシュノードのプロビジョニングおよび他のメモリキャッシュノードの除去も必要とし得る。これは、メモリキャッシュノードの故障および／またはあるサイズのメモリキャッシュノードから別のサイズのメモリキャッシュノードへの移行を含み得る。メモリキャッシュノードのプロビジョニングおよび／またはプロビジョニング解除後に、新しい構成が、問題に応答した変更に少なくとも一部基づき、判定され得る（９１４）。新しい構成は、格納のためにメモリキャッシュノードを更新する（９２０）ため、および／または構成エンドポイントによって使用されるエイリアスを更
新する（９１８）ために、プッシュ型配信され得る。
【００４４】
ここで図１０を参照すると、少なくとも１つの実施形態に従って、メモリキャッシュノード挙動を管理するために使用され得るプロセス１０００の実例が示される。このプロセスは、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびメモリキャッシュノード２１０を含む図２で見られるような、コンピューティング資源によって達成され得る。メモリキャッシュノードの監視中（１００２）、１つ以上の鍵／値ペアが冗長にするために識別される（１００３）。この冗長性は、高負荷をメモリキャッシュノード間で分散し、かつ／またはキャッシュされた鍵‐値ペアの耐久性を向上させるために使用され得る。第２のメモリキャッシュノードが選択され得（１００４）、識別された鍵‐値ペアにサービスさせ得る（１００６）。第２のメモリキャッシュノードは、負荷、使用パターン、耐久性またはメモリキャッシュノードを望ましくする他の属性によって識別され得る。いくつかの実施形態では、重要な鍵‐値ペアが３つ以上のメモリキャッシュノード上に格納される。その変更を使用して、新しい構成が判断され得る（１００８）。新しい構成を使用して、メモリキャッシュノードが、構成を受信して格納することにより更新され得る（１０１０）。構成エンドポイントも、そのエイリアスを更新することにより更新され得る（１０１２）。
【００４５】
例えば、再計算するのにコストがかかる鍵‐値ペアの耐久性が、鍵‐値ペアを冗長にするための判断において考慮に入れられ得る。管理システム内の監視システム上で実行しているアルゴリズムは、どの鍵‐値ペアが冗長にされるかを判断するために、アクセス頻度を測定する。アルゴリズムの結果を使用して、管理システムはプロビジョニングシステムに鍵‐値ペアを２つ以上のメモリキャッシュノードに渡って分散させ得る。鍵‐値ペアの分散後、管理システムは次いで、構成を更新して、その構成を、キャッシュクラスタの部分を形成するメモリキャッシュノードによって格納させ得る。いくつかの実施形態では、このアルゴリズムは、コストがかかり頻繁にアクセスされる鍵‐値ペアが冗長にされ得るように、鍵‐値ペアのコストを評価するように変更され得る。さらなる冗長性を必要とするいくつかの実施形態では、耐久性を向上するために、複数の構成エンドポイントが使用され得る。
【００４６】
いくつかの実施形態では、鍵‐値ペアは、冗長にされるのではなく、転送され得る。例えば、負荷下のメモリキャッシュノードは、負荷を第２のメモリキャッシュノードに移すために鍵の範囲を選択し得る。いくつかの場合には、負荷下のメモリキャッシュノードは、全部またはほとんどのクライアントがそれらの構成を更新するまで、鍵の範囲のサービスを継続する必要があり得る。
【００４７】
いくつかの実施形態では、構成がメモリキャッシュノード間で伝搬され得る。例えば、一旦、メモリキャッシュノードが構成を受信すると、メモリキャッシュノードは、その構成を、構成内の他のメモリキャッシュノードに配信しようとし得る。このようにして、メモリキャッシュノードは、構成を各メモリキャッシュノードに伝搬するために、ピアツーピア通信を使用して動作する。一実施形態では、キャッシュクラスタ内のメモリキャッシュノードは、キャッシュクラスタに対する変更がメモリキャッシュノード自体によって監視されるように、キャッシュクラスタ内のノードを追跡し得る。メモリキャッシュノードの追加もしくは除去に気が付くか、または追加もしくは除去の対象である、メモリキャッシュノードは、他のメモリキャッシュノードに配信するために新しい構成を作成し得る。
【００４８】
クライアントドライバという用語の使用は、必ずしも、ハードウェアを直接サポートするソフトウェアを指さないことが認識されるべきである。クライアントドライバは、アプリケーションと分散キャッシュクラスタとの間の通信を少なくとも管理するコンピューティング資源によって実行されるコードである。いくつかの実施形態では、これはライブラ
リによって達成される。例えば、開発者は、図６に関して参照して説明した段階を実行するためにライブラリ内の関数を呼出し得る。
【００４９】
メモリキャッシュノードという用語の使用は、前述の特定の例のみでなくそれ以上を包含する幅広い用語として使用されることが認識されるべきである。他のキャッシュタイプがこの用途に含まれる。メモリキャッシュノードの他の例は、永続的なキャッシュシステムおよびディスクキャッシュシステムを含む。一実施形態では、永続的なキャッシュシステムは、キャッシュ状態がそのキャッシュを失うのを回避するために保存されるように、使用される。別の実施形態では、ディスクキャッシュシステムが使用され得る。
【００５０】
図１１は、少なくとも１つの実施形態に従い、管理されたキャッシュ取得においてノード位置を表すために使用され得るマッピング１１００の実例を示す。このプロセスは、アプリケーション２０２、クライアントドライバ２０４、構成エンドポイント２０６およびメモリキャッシュノード２１０を含む、図２で見られるような、コンピューティング資源によって達成され得る。可能なハッシュの範囲が、円１１０２によって表され得る。角度の違いがノード間の同様の空間をグラフで示し得るが、任意の数のハッシュが角度の範囲内に含まれ得る。例えば、一実施形態では、何千ものハッシュが円のごく一部内に含まれ得るが、別の実施形態では、円の第２の部分内にはいかなるハッシュも含まれていない可能性がある。
【００５１】
鍵Ｚ（１１１０）、Ｙ（１１１２）、Ｘ（１１１４）およびＷ（１１１６）は、例えば、円１１０２上に示される、角度１１２６、１１３０、１１３２および１１３４などの、基準角度１１０１から測定されたキャッシュ角度に対応する。鍵は、対応するキャッシュ角度を返すハッシュ関数に入力され得る。メモリキャッシュノードは、円１１０２に沿った少なくとも１つのキャッシュ角度を割り当てられ得る。より大きなメモリキャッシュノードにはより大きなキャッシュ角度が割り当てられ、それは、円１１０２に対するより大きな範囲を供与し得る。ハッシュの数は角度ごとに異なり得ることを理解されたい。例えば、メモリキャッシュノードＡに対するメモリキャッシュノード割当ては、キャッシュ角度１１０４およびキャッシュ角度１１０６を含む。鍵に対応するキャッシュ角度から円の回りを時計回りに移動して、最初に遭遇したメモリキャッシュノードに鍵が割り当てられる。例えば、鍵Ｚ（１１１０）のハッシュから決定されたキャッシュ角度１１３０は、時計回りに（１１３８）メモリキャッシュノードＡのキャッシュ角度割当て１（１１０４）に進められる。
【００５２】
図１１では、キャッシュ角度が基準角度１１０１から時計回りに測定されるように示されている。例えば、キャッシュ角度１１３０は、基準角度から測定されるとき、キャッシュ角度１１２６より小さい角度を有し得る。どのメモリキャッシュノードが鍵に対して責任を負うかを判定するために、鍵はまず、キャッシュ角度を判断するためにハッシュ関数を通じて処理される。キャッシュ角度は次いで、第１のメモリキャッシュノード割当てが生じるまで時計回りに進められ得る。例えば、鍵Ｘ  １１１４は、図示されたキャッシュ角度１１２６に解決される。キャッシュ角度は次いで、第１のメモリキャッシュノード割当てが、メモリキャッシュノードＡに対する割当て番号１であるキャッシュ角度１１０４で生じるまで、線１１２４に沿って時計回りに掃引される。従って、鍵Ｘは、メモリキャッシュノードＡに割り当てられる。同様に、鍵Ｚ（１１１０）のキャッシュ角度が、メモリキャッシュノードＡの割当て１であるキャッシュ角度１１０４に掃引される（１１３８）。同じ理由から、鍵Ｙ  １１１２が、キャッシュ角度１１０６の割当てへの掃引（sweep）１１３６のために、メモリキャッシュノードＡ、割当て２（１１０６）に割り当てられる。鍵Ｗ  １１１６は、掃引１１４０が時計回りに、割当て１、メモリキャッシュノードＢに割り当てられたキャッシュ角度１１０８の割当てに到着するので、メモリキャッシュノードＢに割り当てられる。
【００５３】
メモリキャッシュノード割当ては、いくつかの異なる方法で達成され得る。一実施形態では、クライアントドライバは、メモリキャッシュノードをマッピング内に割り当てるように構成されたコードを含む。かかる実施形態では、クライアントは、「ホット」であり、そのため１つ以上の要求の負荷を移すために追加のノードを必要とするマッピング上の角度を知っている可能性がある。別の実施形態では、管理システムが、クライアントドライバがキャッシュ角度を割り当てるのを支援し得る。例えば、管理システムは、鍵のアクセスを監視して、メモリキャッシュノード上のサーバー負荷を削減するために、割当ての最適な配置を判断する。管理システムは、「ヒント」としてクライアントドライバに提供し得る追加されたノードに加えて、キャッシュクラスタ一般の１つ以上の側面を知っている可能性がある。
【００５４】
別の実施形態では、１つ以上のクライアントは、メモリキャッシュノードの利用を監視する。必要であれば、クライアントは、キャッシュクラスタに追加するために新しいメモリキャッシュノードのプロビジョニングを要求し得る。例えば、クライアントは、メモリキャッシュノードからの応答の待ち時間が増加して許容可能な閾値を上回っていると判断し得る。別の例として、クライアントは、プロトコル拡張を使用するか、またはアクセスログをレビューして、メモリキャッシュノードに問い合わせ得、クライアントは、１つ以上の鍵が閾値を上回る頻度でアクセスされていると判断する。クライアントは次いで、プロビジョニングシステムが新しいメモリキャッシュノードをプロビジョニングすることを要求し得る。クライアントは次いで、メモリキャッシュノードに１つ以上のキャッシュ角度を割り当て得る。
【００５５】
図１２に示すように、一例では、メモリキャッシュコードＣが図１１に示すキャッシュクラスタに追加される。メモリキャッシュノードＣは、３つのキャッシュ角度、すなわちキャッシュ角度割当て１（１１１８）、キャッシュ角度割当て２（１１２０）およびキャッシュ角度割当て３（１１２２）をサポートすることが可能である。３つのキャッシュ角度をサポートするこの能力は、メモリキャッシュノードＣのサイズ、処理能力および／または配置に起因し得る。さらに、図示するように、クラスタ内のノードは、それらの間の角距離の観点から、必ずしも互いに等距離ではない可能性がある。いくつかのノードは、ノードによってサービスされる鍵空間に関連した様々な要因に起因して、（図１１〜図１２の表現における角距離の観点から）他よりも互いに近接している可能性がある。図示した例では、鍵Ｘ  １１１４および鍵Ｚ  １１１０は、頻繁にアクセスされる「ホット」な（すなわち、「ホット」として指定された範囲内の頻度でアクセスされる）鍵であり得、従って、キャッシュ角度１１０４の利用にメモリキャッシュノードＡの高い利用頻度に対して責任を持たせる。管理システムは、新しいメモリキャッシュノードＣにキャッシュ角度割当て２（１１２０）を受けさせ得る。キャッシュ角度１１２０の新しい割当てに起因して、鍵Ｘ  １１１４はここで、ライン１１２８に沿ったキャッシュ角度の掃引が、メモリキャッシュノードＣ、割当て２に割り当てられるキャッシュ角度１１２０となるので、メモリキャッシュノードＣによって対応され得る。鍵Ｚ  １１１０は、キャッシュ角度１１０４の割当てに起因してメモリキャッシュノードＡに留まり得る。
【００５６】
別の例では、鍵Ｗ  １１１６のアクセス履歴は、鍵Ｗ  １１１６が２つ以上のメモリキャッシュノードによって対応されるべきものであり得る。鍵空間のこの複製は、負荷、基本的なキャッシュされた値の計算の困難さ、または他の複製の必要性に起因し得る。図１２に示すように、メモリキャッシュノードＣ、割当て１（１１１８）は、メモリキャッシュノードＢ、割当て１（１１０８）のキャッシュ角度割当て１１０８と同じキャッシュ角度割当て１１１８に割り当てられている。従って、メモリキャッシュノードＢおよびメモリキャッシュノードＣは、同じ鍵空間に対する責任を共有する。いくつかの実施形態では、鍵空間の一部のみが複製されるとして知られている。
【００５７】
さらに別の例では、管理システムは、メモリキャッシュノードＢ、割当て２に割り当てられたキャッシュ角度１１０５によって包含される鍵空間がさらに小さくなるようにも決定し得る。メモリキャッシュノードＣに対するキャッシュ角度１１２２割当て３が、割り当てられたキャッシュ角度１１０５と１１０６との間に追加される。図１２で認められ得るように、キャッシュ角度１１０５と１１２２との間の範囲の責任は、対称的である必要はない。いくつかの場合には、メモリキャッシュノードＣの範囲は、メモリキャッシュノードＡの範囲より狭い可能性があるが、より頻繁にアクセスされ得る。アクセスの範囲および頻度などの、考慮事項が、キャッシュ角度割当ての割当てを判断するために使用され得る。前述の実施形態の各々では、クライアントドライバは、ノードの位置の判断を管理し得、そのため、管理システムは、判定の際にクライアントドライバによって使用され得る情報を提供し得ることが認識されるべきである。
【００５８】
メモリキャッシュ角度割当ては、３つ以下の割当ての観点から説明されてきたが、実際の使用は、数百、数千、数百万以上のキャッシュ割り当てを含め、もっと多い可能性があることが認識されるべきである。少ない割当てが示されているのは、説明を簡略化するためである。
【００５９】
メモリキャッシュノードが本開示の様々な態様の説明のために使用されているが、説明する構造およびプロセスは、コンピューティング資源の記憶ノードおよびクラスタ一般にも、より幅広く適用され得ることが認識されるべきである。例えば、記憶ノードは、メモリキャッシュノード、データベースおよびリードレプリカ（read-replica）を含み得る。一実施形態では、ノードのクラスタのメンバーシップ情報が、ノードのクライアントと共有される。例えば、プロセスおよび構造がデータベーススケーリングで使用され得る。リードレプリカの構成が、データベースサーバー上の構成空間内に格納され得る。データベースサーバーのクライアントは、前述したクライアント構成更新技術を使用して、リードレプリカからの構成を要求することにより、追加または除去などの、リードレプリカに対する変更を検出し得る。別の例では、プロセスおよび構造が、データベースクラスタリングで使用され得る。クラスタ構成は、クラスタの分散データストアを構成するデータと一緒にデータベース自体に格納され得、それはデータベースのクライアントによって取得され得る。これは、クライアント初期化がサーバー資源から切り離されるのを可能にする。
【００６０】
図１３は、様々な実施形態に従った態様を実現するための環境例１３００の態様を示す。理解され得るように、Ｗｅｂベースの環境が説明のために使用されるが、必要に応じて、様々な実施形態を実現するために異なる環境が使用され得る。環境は、電子クライアント装置１３０２を含み、それは、適切なネットワーク１３０４を経由した、要求、メッセージまたは情報の送受信、および装置のユーザーへの情報の返送を行うために動作可能な任意の適切な装置を含み得る。かかるクライアント装置の例は、パーソナルコンピュータ、携帯電話、携帯用メッセージ装置、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子書籍端末等を含む。ネットワークは、イントラネット、インターネット、移動体通信ネットワーク、ローカルエリアネットワークもしくは任意の他のかかるネットワークまたはその組合せを含む、任意の適切なネットワークを含むことができる。
かかるシステムに対して使用される構成要素は、選択されたネットワークおよび／または環境のタイプに少なくとも一部依存し得る。かかるネットワークを経由した通信のためのプロトコルおよび構成要素は周知であり、本明細書では詳細に説明されない。ネットワークを経由した通信は、有線または無線接続およびその組合せによって可能にできる。この例では、要求を受信し、それに応答してコンテンツをサービスするためのＷｅｂサーバー１３０６を含むので、ネットワークは、インターネットを含むが、同業者に明らかであり得るように、他のネットワークに対して、同様の目的をサービスする代替装置が使用されるであろう。
【００６１】
例示的な環境は、少なくとも１つのアプリケーションサーバー１３０８およびデータストア１３１０を含む。いくつかのアプリケーションサーバー、層、または他の要素、プロセッサもしくは構成要素があり得、それらは連鎖されるか、もしくは別の方法で構成され得、それらは適切なデータストアからのデータの取得などのタスクを実行するために対話できることが理解されるべきである。本明細書では、「データストア」という用語は、データの格納、アクセスおよび取得が可能な任意の装置または装置の組合せを指し、それは、任意の標準、分散またはクラスタ環境におけるデータサーバー、データベース、データ記憶装置およびデータ記憶媒体の任意の組合せおよび数を含み得る。アプリケーションサーバーは、必要に応じて、クライアント装置のために１つ以上のアプリケーションの態様を実行するために、データストアと統合するための任意の適切なハードウェアおよびソフトウェアを含み得、アプリケーションのためのデータアクセスおよびビジネス論理の大部分を処理する。アプリケーションサーバーは、データストアと連携してアクセス制御サービスを提供し、ユーザーに転送されるテキスト、グラフィックス、オーディオおよび／またはビデオなどのコンテンツを生成することが可能であり、それらは、ＨＴＭＬ、ＸＭＬまたはこの例において適切な別の構造化言語の形でＷｅｂサーバーによりユーザーにサービスされ得る。全ての要求および応答の処理、ならびにクライアント装置１３０２とアプリケーションサーバー１３０８との間でのコンテンツの配信が、Ｗｅｂサーバーによって処理できる。本明細書で説明する構造化コードは、本明細書の他の場所で説明するように、任意の適切な装置またはホストマシン上で実行できるので、Ｗｅｂおよびアプリケーションサーバーは必須ではなく、構成要素例に過ぎないことが理解されるべきである。
【００６２】
データストア１３１０は、特定の態様に関連したデータを格納するための、いくつかの別個のデータテーブル、データベースまたは他のデータ記憶機構および媒体を含むことができる。例えば、図示するデータストアは、生産データ１３１２およびユーザー情報１３１６を格納するための機構を含み、それは、生産側のためにコンテンツをサービスするために使用できる。ログデータ１３１４を格納するための機構を含むためのデータストアも示され、それは、報告、分析または他のかかる目的のために使用できる。ページ画像情報のためおよび正しい情報にアクセスするためなど、データストアに格納される必要があり得る多数の他の態様があり得、それは、データストア１３１０内の適切であるとして前述した機構のいずれか、または追加の機構に格納できることが理解されるべきである。データストア１３１０は、それに関連付けられた論理を通して、アプリケーションサーバー１３０８から命令を受信し、それに応答して、データを取得、更新または別の方法で処理するために動作可能である。一例では、ユーザーは、ある特定のタイプの項目に対する検索要求を投入し得る。この場合、データストアは、ユーザーの識別を検証するためにユーザー情報にアクセスし得、そのタイプの項目に関する情報を取得するためにカタログ詳細情報にアクセスできる。情報は次いで、ユーザーがユーザー装置１３０２上のブラウザで表示可能なＷｅｂページ上にリストする結果内などで、ユーザーに返され得る。興味がある特定の項目に対する情報が、ブラウザの専用ページまたはウィンドウ内に表示できる。
【００６３】
各サーバーは、通常、そのサーバーの一般的な管理および動作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、通常、サーバーのプロセッサによって実行される場合に、サーバーがその意図した機能を実行するのを可能にする命令を格納するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読取り専用メモリなど）を含む。サーバーのオペレーティングシステムおよび一般的な機能のための適切な実装形態は既知であるか、または市販されており、当業者によって、特に、本明細書の開示を考慮すると、容易に実装される。
【００６４】
一実施形態では、環境は、１つ以上のコンピュータネットワークまたは直接接続を使用する、通信リンクを経由して相互接続される、いくつかのコンピュータシステムおよび構
成要素を利用する分散コンピューティング環境である。しかし、かかるシステムは、図１３に示されるよりも少ないか、または多い構成要素を有するシステム内でも同様にうまく動作できることが当業者には理解されるであろう。従って、図１３に示すシステム１３００の表現は、本質的に例示として考えられるべきであり、本開示の範囲を制限するものではない。
【００６５】
様々な実施形態はさらに、幅広い種類のオペレーティング環境内で実現でき、それは、いくつかの場合には、任意の数のアプリケーションを動作するために使用できる１つ以上のユーザーコンピュータ、コンピューティング装置または処理装置を含むことができる。ユーザーまたはクライアント装置は、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどの、任意の数の汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行して、いくつかのネットワーキングおよびメッセージングプロトコルをサポートできる、移動体通信、無線および携帯用機器を含むことができる。かかるシステムは、様々な市販のオペレーティングシステムならびに開発およびデータベース管理などのための他の既知のアプリケーションのいずれかを実行するいくつかのワークステーションも含むことができる。これらの装置は、ネットワークを経由して通信可能な、ダミー端末、シンクライアント、ゲーム機および他の装置などの、他の電子装置も含むことができる。
【００６６】
ほとんどの実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳおよびＡｐｐｌｅＴａｌｋ（登録商標）などの様々な商用プロトコルのいずれかを使用して通信をサポートするための、当業者に良く知られているような少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、赤外線ネットワーク、無線ネットワークおよびその任意の組合せであり得る。
【００６７】
Ｗｅｂサーバーを利用する実施形態では、Ｗｅｂサーバーは、ＨＴＴＰサーバー、ＦＴＰサーバー、ＣＧＩサーバー、データサーバー、Ｊａｖａ（登録商標）サーバーおよびビジネスアプリケーションサーバーを含む、様々なサーバーまたは中間層アプリケーションのいずれかを実行できる。サーバー（複数可）は、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃またはＣ＋＋などの任意のプログラミング言語、Ｐｅｒｌ、ＰｙｔｈｏｎまたはＴＣＬなどの任意のスクリプト言語、ならびにその組合せで書かれた１つ以上のスクリプトまたはプログラムとして実装され得る、１つ以上のＷｅｂアプリケーションの実行などにより、ユーザー装置からの要求に応答してプログラムまたはスクリプトを実行することも可能であり得る。サーバー（複数可）は、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）およびＩＢＭ（登録商標）から市販されているものを含むがそれらに限定されず、データベースサーバーも含み得る。
【００６８】
環境は、前述のように、様々なデータストアならびに他のメモリおよび記憶媒体を含むことができる。これらは、コンピュータの１つ以上にローカルである（および／またはその中に常駐する）か、またはコンピュータの一部もしくは全部からネットワークを経由してリモートである、記憶媒体上など、様々な位置に存在できる。実施形態の特定の組では、情報は、当業者に良く知られている、ストレージエリアネットワーク（「ＳＡＮ」）内に常駐し得る。同様に、コンピュータ、サーバーまたは他のネットワーク装置に起因する機能を実行するための任意の必要なファイルが、必要に応じて、ローカルおよび／またはリモートに格納され得る。システムがコンピュータ化装置を含む場合、各かかる装置は、バスを介して電子的に結合され得るハードウェア要素を含むことができ、その要素は、例えば、少なくとも１つの中央処理装置（ＣＰＵ）、少なくとも１つの入力装置（例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド）、および少な
くとも１つの出力装置（例えば、ディスプレイ装置、プリンタまたはスピーカー）を含む。かかるシステムは、例えば、ディスクドライブ、光記憶装置、およびランダムアクセスメモリ（「ＲＡＭ」）または読取り専用メモリ（「ＲＯＭ」）などのソリッドステート記憶装置、ならびに取外し可能媒体装置、メモリカード、フラッシュカード、などの１つ以上の記憶装置も含み得る。
【００６９】
かかる装置は、前述のように、コンピュータ可読記憶媒体読取り装置、通信装置（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信装置など）、および作業メモリも含むことができる。コンピュータ可読記憶媒体読取り装置は、リモート、ローカル、固定および／もしくは取り外し可能記憶装置ならびに、一時的および／もしくはさらに永続的にコンピュータ可読情報を包含、格納、伝送および取得するための記憶媒体を表す、コンピュータ可読記憶媒体と接続できるか、またはそれを受け取るように構成できる。システムおよび様々な装置は、通常、オペレーティングシステムおよび、クライアントアプリケーションまたはＷｅｂブラウザなどの、アプリケーションプログラムを含む、少なくとも１つの作業メモリ装置内に配置された、いくつかのソフトウェアアプリケーション、モジュール、サービスまたは他の要素も含む。代替実施形態は、前述したものからの多数の変形形態を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアも使用され得、かつ／または特定の要素がハードウェア、ソフトウェア（アプレットなどの、移植可能なソフトウェアを含む）もしくは両方で実装され得る。さらに、ネットワーク入力／出力装置などの他のコンピューティング装置に対する接続が採用され得る。
【００７０】
コードまたはコードの部分を含むための記憶媒体およびコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールもしくは他のデータなどの情報の格納および／または伝送のための任意の方法もしくは技術で実現される、揮発性および不揮発性、取り外し可能および固定型の媒体などであるがそれらに制限されない、記憶媒体および通信媒体を含む、当技術分野で既知であるか、使用される任意の適切な媒体を含むことができ、これには、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ‐ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置または、所望の情報を格納するために使用でき、かつシステム装置によってアクセスできる任意の他の媒体を含む。本明細書で提供する開示および教示に基づき、当業者は、様々な実施形態を実現するための他の手段および／または方法を理解するであろう。
【００７１】
前述は、以下の付記項の観点から、より良く理解され得る。
【００７２】
１．分散メモリキャッシュシステムを管理するためのコンピュータ実装方法であり：実行可能命令で構成された１つ以上のコンピュータシステムの制御下で、キャッシュクラスタを形成する１つ以上のメモリキャッシュノードの組を監視することであって、１つ以上のメモリキャッシュノードの組の各メモリキャッシュノードがキャッシュクラスタ内に含まれるデータの一部に対するストレージを提供し、キャッシュクラスタの少なくとも１つのメモリキャッシュノードが１つ以上のメモリキャッシュノードの組からのデータにアクセスするための構成を含む、キャッシュクラスタを形成する１つ以上のメモリキャッシュノードの組を監視すること；新しいメモリキャッシュノードがキャッシュクラスタに追加されると判定すること；新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすること；および少なくとも１つのメモリキャッシュノード内の構成を、新しいメモリキャッシュノードに少なくとも一部基づき、更新することを含む。
【００７３】
２．１つ以上のメモリキャッシュノードの組を監視することが、キャッシュクラスタから故障したメモリキャッシュノードの障害を検出することをさらに含み；新しいメモリキ
ャッシュをプロビジョニングすることが、交換メモリキャッシュノードを故障したメモリキャッシュノードの代わりにプロビジョニングさせることをさらに含み；かつ、少なくとも１つのメモリキャッシュノード内の構成を更新することが、故障したメモリキャッシュノードの交換メモリキャッシュノードとの交換に少なくとも一部基づき、少なくとも１つのメモリキャッシュノード内の構成を更新することをさらに含む、付記項１に記載のコンピュータ実装方法。
【００７４】
３．１つ以上のメモリキャッシュノードの組を監視することが、追加のキャッシング能力の必要性を示している指標をキャッシュクラスタから検出することをさらに含み；新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすることが、新しいメモリキャッシュノードを、新しいメモリキャッシュノードよりも少ない資源を有する交換されるメモリキャッシュノードの代わりにプロビジョニングすることをさらに含み；かつ、少なくとも１つのメモリキャッシュノード内の構成を更新することが、交換されるメモリキャッシュノードの新しいメモリキャッシュノードとの交換に少なくとも一部基づき、少なくとも１つのメモリキャッシュノード内の構成を更新することをさらに含む、付記項１に記載のコンピュータ実装方法。
【００７５】
４．構成エンドポイントのエイリアスを、新しいメモリキャッシュノードに少なくとも一部基づき、更新することをさらに含む、付記項１に記載のコンピュータ実装方法。
【００７６】
５．新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすることが：新しいメモリキャッシュノードのプロビジョニング；メモリキャッシュノードの１つ以上のメモリキャッシュノードの組への追加；新しい構成の判定；および１つ以上のメモリキャッシュノードの組の各々内の構成の更新、の動作を含むワークフローを構築することをさらに含む、付記項１に記載のコンピュータ実装方法。
【００７７】
６．サービスを管理するためのコンピュータ実装方法であり：実行可能命令で構成された１つ以上のコンピュータシステムの制御下で、１つ以上の記憶ノードを含むクラスタを監視することであって、１つ以上の記憶ノードの各記憶ノードが分散データストア内に含まれるデータの一部に対するストレージを提供する、１つ以上の記憶ノードを含むクラスタを監視すること；少なくとも１つの記憶ノードがクラスタ内のデータにアクセスするために構成を格納すること；および構成が更新されているという判定の結果として、少なくとも１つの記憶ノードの構成を更新することを含む。
【００７８】
７．構成を更新することが、クラスタに対する変更に少なくとも一部基づき、構成を更新することをさらに含む、付記項６に記載のコンピュータ実装方法。
【００７９】
８．記憶ノードを、記憶ノードのプロビジョニング解除；および分散データストア内に含まれるデータの少なくとも一部の、クラスタ内の残りの記憶ノードの少なくとも複数間での再割り当て、の動作を通してクラスタから除去することにより、クラスタを修正することをさらに含む、付記項７に記載のコンピュータ実装方法。
【００８０】
９．新しい記憶ノードを、新しい記憶ノードのプロビジョニング；および分散データストア内に含まれるデータの少なくとも一部の、クラスタ内の記憶ノードの少なくとも複数間での再割り当て、の動作を通してクラスタに追加することにより、クラスタを修正することをさらに含む、付記項７に記載のコンピュータ実装方法。
【００８１】
１０．クラスタ内の第１の記憶ノードを、新しい記憶ノードのプロビジョニング；第１の記憶ノードのプロビジョニング解除；および第１の記憶ノードからのデータの少なくとも一部の新しい記憶ノードへの割当て、の動作を通して交換することにより、クラスタを
修正することをさらに含む、付記項７に記載のコンピュータ実装方法。
【００８２】
１１．クラスタから記憶ノードの特性を変更することにより、クラスタを修正することをさらに含む、付記項７に記載のコンピュータ実装方法。
【００８３】
１２．記憶ノードの特性を変更することが、記憶ノードの記憶サイズを修正することをさらに含む、付記項１１に記載のコンピュータ実装方法。
【００８４】
１３．キャッシュサービスを管理するためのコンピュータシステムであり、当該コンピュータシステムは１つ以上のプロセッサおよび、１つ以上のプロセッサによって実行される場合に、１つ以上のプロセッサに少なくとも：キャッシュクラスタにわたって割り当てられた分散データキャッシュに対するストレージを提供し、かつキャッシュクラスタ内のデータにアクセスするための構成のためのストレージを提供するキャッシュクラスタを形成する１つ以上のメモリキャッシュノード；ならびにメモリキャッシュノードを監視およびプロビジョニングする管理システムであって、管理システムによって生じたキャッシュクラスタに対する変更に少なくとも一部基づきキャッシュクラスタ内の構成を更新する、管理システム、を実現させる、実行可能命令を含むメモリを有する、１つ以上のコンピューティング資源を含む。
【００８５】
１４．キャッシュクラスタにわたって割り当てられる分散データキャッシュに対してデータを提供するデータストアをさらに含む、付記項１３に記載のコンピュータシステム。
【００８６】
１５．データストアがリレーショナルデータベースであり、分散データキャッシュがリレーショナルデータベースからのクエリーに対する応答を含む、付記項１４に記載のコンピュータシステム。
【００８７】
１６．キャッシュクラスタからのメモリキャッシュノードに対するエイリアスを提供し、エイリアス更新を管理システムから受信する構成エンドポイントをさらに含む、付記項１３に記載のコンピュータシステム。
【００８８】
１７．構成エンドポイントが、メモリキャッシュノードに対するエイリアスを解決するために使用できる静的アドレスを有する、付記項１６に記載のコンピュータシステム。
【００８９】
１８．キャッシュクラスタおよび管理システムが、その上で実行するために割り当てられたコンピューティング資源である、プログラム実行環境をさらに含む、付記項１３に記載のコンピュータシステム。
【００９０】
１９．実行可能命令がその上にまとめて格納されている１つ以上のコンピュータ可読記憶媒体であって、実行可能命令は、コンピュータシステムの１つ以上のプロセッサによって実行される場合に、コンピュータシステムに少なくとも：１つ以上のメモリキャッシュノードの障害の指標に関してキャッシュクラスタを監視することであって、メモリキャッシュノードの少なくとも複数が分散データキャッシュ内に含まれるデータの一部のためのストレージを提供する、キャッシュクラスタを監視すること；キャッシュクラスタからのメモリキャッシュノードの指標が障害閾値を越えていると判定すること；メモリキャッシュノードをキャッシュクラスタから除去させること；およびキャッシュクラスタからの少なくとも１つのメモリキャッシュノードによって格納された構成を、除去されたメモリキャッシュノードに少なくとも一部基づき更新することを行わせる。
【００９１】
２０．命令が、実行時に、コンピュータシステムに少なくとも：新しいメモリキャッシュノードをプロビジョニングさせること；およびキャッシュクラスタからの少なくとも１
つのメモリキャッシュノード内の構成を、プロビジョニングされた新しいメモリキャッシュノードに少なくとも一部基づき、更新することを行わせる命令をさらに含む、付記項１９に記載のコンピュータ可読記憶媒体。
【００９２】
２１．キャッシュクラスタからの少なくとも１つのメモリキャッシュノード内の構成を更新することが、新しいノードが除去されたメモリキャッシュノードを置き換えるように、構成を更新することを含む、付記項２０に記載のコンピュータ可読記憶媒体。
【００９３】
２２．構成が、キャッシュクラスタへの接続情報を含む、付記項１９に記載のコンピュータ可読記憶媒体。
【００９４】
２３．キャッシュクラスタからの少なくとも１つのメモリキャッシュノード内の構成を更新することが、メモリキャッシュノードにピアツーピア更新を使用して構成を伝搬させるように、メモリキャッシュノードを構成で更新することをさらに含む、付記項１９に記載のコンピュータ可読記憶媒体。
【００９５】
２４．メモリキャッシュノードに構成を伝搬させることが、構成エンドポイントを、１つ以上のメモリキャッシュエンドポイントの組内のメモリキャッシュエンドポイントに対する新しいエイリアスで更新することをさらに含む、付記項２３に記載のコンピュータ可読記憶媒体。
【００９６】
２５．少なくとも１つのメモリキャッシュノードによって格納された構成を更新することが、一貫性のあるハッシュ方法で使用するために、メモリキャッシュノードの１つ以上の割当ての指標を管理システムから受信することをさらに含む、付記項１９に記載のコンピュータ可読記憶媒体。
【００９７】
明細書および図は、従って、制限的な意味ではなく例示的な意味で考えられるべきである。しかし、請求項に規定されるように、本発明のより幅広い精神および範囲から逸脱することなく、様々な修正および変更がそれに対して行われ得ることが明白であろう。
【００９８】
他の変形形態は本開示の精神の範囲内である。従って、開示する技術は、様々な実施形態および代替構造を受け入れる余地があるが、そのある例示的な実施形態が図に示されて、上で詳細に説明されている。しかし、本発明を開示する特定の形式または複数の形式に制限する意図はなく、それとは逆に、意図は、添付の請求項で定義されるように、本発明の精神および範囲内に含まれる、全ての修正、代替構造および均等物を包含することである、ことが理解されるべきである。
【００９９】
開示する実施形態を説明するコンテキストにおける（特に、以下の請求項のコンテキストにおける）「１つの（a）」、「１つの（an）」および「その（the）」という用語および同様の指示対象は、本明細書で別段の指示がないか、コンテキストによって明瞭に否定されない限り、単数および複数の両方を包含すると解釈される。「含む（comprising）」、「有する（having）」、「含む（including）」、および「含む（containing）」という用語は、特に断りのない限り、制約のない用語（すなわち、「含むが、それらに制限されない」ことを意味する）として解釈される。「接続された（connected）」という用語は、たとえ介在する何かがあっても、部分的もしくは全体的に含まれるか、取り付けられているか、または結合されていると解釈される。本明細書では値の範囲の列挙は、本明細書で別段の指示がない限り、範囲に含まれる各別個の値を個々に参照する簡単な方法として役立つことを単に意図し、各別個の値は、あたかも本明細書で個々に列挙されたかのように、本明細書に組み込まれる。本明細書で説明する全ての方法は、本明細書で別段の指示がないか、またはコンテキストによって明瞭に否定されない限り、任意の適切な順序で
実行できる。本明細書で提供する一部もしくは全部の例、または例示を示す表現（例えば、「など（such as）」）は、単に本発明の実施形態の理解をさらに容易にすることを意図し、別に主張されていない限り、本発明の範囲に制限を課さない。本明細書におけるどの表現も、どの主張されていない要素を本発明の実施に本質的であるとして示すと解釈されるべきでない。
【０１００】
本開示を実施するために本発明人に知られている最良の形態を含め、本開示の好ましい実施形態が本明細書で説明される。それらの好ましい実施形態の変形形態が、前述の説明を読むと、当業者に明らかになり得る。本発明人は、当業者がかかる変形形態を必要に応じて採用することを期待し、本発明人は、本発明が本明細書で具体的に説明されるのとは別の方法で実施されることを意図する。それに応じて、本発明は、適用法で容認されるとおり、本明細書に添付の請求項で列挙された主題の全ての修正および均等物を含む。その上、前述した要素の、その全ての考えられる変形形態での任意の組合せが、本明細書で別段の指示がないか、またはコンテキストによって明瞭に否定されない限り、本発明によって包含される。
【０１０１】
本明細書で列挙された、出版物、特許出願および特許を含む全ての参照は、あたかも各参照が、参照により組み込まれることを個々に具体的に示し、本明細書に全体として明記されているかのように同じ程度まで、参照により本明細書に組み込まれる。
【図１】
2019212336.tif 000003
【図２】
2019212336.tif 000004
【図３】
2019212336.tif 000005
【図４】
2019212336.tif 000006
【図５】
2019212336.tif 000007
【図６】
2019212336.tif 000008
【図７】
2019212336.tif 000009
【図８】
2019212336.tif 000010
【図９】
2019212336.tif 000011
【図１０】
2019212336.tif 000012
【図１１】
2019212336.tif 000013
【図１２】
2019212336.tif 000014
【図１３】
2019212336.tif 000015