JP2019212336A - 分散キャッシュクラスタ管理 - Google Patents
分散キャッシュクラスタ管理 Download PDFInfo
- Publication number
- JP2019212336A JP2019212336A JP2019163484A JP2019163484A JP2019212336A JP 2019212336 A JP2019212336 A JP 2019212336A JP 2019163484 A JP2019163484 A JP 2019163484A JP 2019163484 A JP2019163484 A JP 2019163484A JP 2019212336 A JP2019212336 A JP 2019212336A
- Authority
- JP
- Japan
- Prior art keywords
- memory cache
- configuration
- node
- cache
- cache node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】管理システムが、キャッシュまたは他のクラスタを有効化および監視して、クラスタが構成を認識するようにし、クラスタの基礎的な構造に対する初期化および変更が動的に更新されるようにする。【解決手段】分散メモリキャッシュシステム100は、クライアントに対して初期構成を、構成エンドポイントによって提供されるエイリアスによって参照されるメモリキャッシュノードから提供する。構成の更新がメモリキャッシュノードから取得され、メモリキャッシュノードの各々はキャッシュクラスタの現在の構成を格納する。管理システムは、新しいキャッシュノードのプロビジョニングなどの、キャッシュクラスタに対する変更を監視して、クライアントによる取得のために、キャッシュノード内に格納された構成を更新する。【選択図】図1
Description
データセンターは、1つ以上のクライアントによる使用のためのコンピューティング資源(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))の完全な開示に関連し、それらを全ての目的のために参照により組み込む。
本出願は、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))の完全な開示に関連し、それらを全ての目的のために参照により組み込む。
オンデマンドシステムが、データおよびオブジェクトをデータベースからキャッシングすることによりデータベースが読み取られる必要がある回数を低減するために使用され得る。例えば、一実現形態は、クライアントはサーバーを知っているが、サーバーは互いに知らない、クライアント中心型アーキテクチャを使用する。鍵を読み取るかまたは設定するために、クライアントは、ハッシュを使用してどのサーバーに接触するかを判断し、そのサーバーに接触する。サーバーは次いで、第2のハッシュを計算して、対応する値をどこで格納または読み取るかを判断する。サーバーグループに対する追加または除去は、クライアントによって管理される。
本開示に従った様々な実施形態が、図を参照して説明される。
少なくとも1つの実施形態に従ったクラスタキャッシュ管理の実例を示す。
少なくとも1つの実施形態に従ったクラスタキャッシュ管理の実例を示す。
少なくとも1つの実施形態に従った環境の実例を示す。
クラスタキャッシュ管理の実施形態の実例を示す。
少なくとも1つの実施形態に従った構成要素間の論理接続の実例を示す。
少なくとも1つの実施形態に従ったプロセスの例示的なチャートを示す。
少なくとも1つの実施形態に従ったプロセスの実例を示す。
少なくとも1つの実施形態に従ったプロセスの実例を示す。
少なくとも1つの実施形態に従ったプロセスの実例を示す。
少なくとも1つの実施形態に従ったプロセスの実例を示す。
少なくとも1つの実施形態に従ったハッシュの実例を示す。
少なくとも1つの実施形態に従ったハッシュの実例を示す。
様々な実施形態が実現できる環境を示す。
以下の記述で、様々な実施形態が説明される。説明のため、特定の構成および詳細が、実施形態の完全な理解を提供するために明記される。しかし、当業者には、実施形態はその具体的詳細がなくても実施され得ることも明らかであろう。さらに、説明している実施形態を不明瞭にしないように、周知の特徴は、省略されるか、または簡略化され得る。
本明細書で説明および提案する技術は、キャッシュクラスタを有効化および監視して、そのキャッシュクラスタが構成を認識するようにして、キャッシュクラスタの基礎的な構造に対する初期化および変更が動的に更新できるようにすることを含む。例えば、キャッシュクラスタは、1つ以上のメモリキャッシュノードの組を含み得る。構成は、とりわけ、キャッシュクラスタ内のメモリキャッシュノードの数およびメモリキャッシュノードの位置の指標であり得る。構成は、一実施形態では、1つ以上のメモリキャッシュノードの組の各々で保持され得る。そのため、各メモリキャッシュノードは、キャッシュクラスタ内のあらゆるメモリキャッシュノードの構成を知ることができる。構成を格納するメモリキャッシュノードは、構成エンドポイント内でエイリアスによって参照され得る。クライアントが最初にキャッシュクラスタに接続しようとする場合、クライアントは、静的構成エンドポイントからキャッシュクラスタ内のメモリキャッシュノードへエイリアスを解決し得る。クライアントは、初期構成をメモリキャッシュノードに要求し得る。キャッシュクラスタに対して追加の要求が行われると、第1のメモリキャッシュノードが1つ以上の方法(キャッシュクラスタに追加されるか、またはキャッシュクラスタから除去されるなど)で変更され得る。そのため、構成が更新されて、キャッシュクラスタ内の1つ以上のメモリキャッシュノードの組の各々に送信され得る。管理システムは、キャッシュクラスタに対するこれらの変更を監視し、変更には、例えば、新しいメモリキャッシュノードのプロビジョニングまたは故障したメモリキャッシュノードの交換を含む。管理システムは、メモリキャッシュノード内に格納された構成も更新し得る。クライアントは、次いで、更新された構成を、キャッシュクラスタの現在の構成を有するメモリキャッシュノードから直接、取得し得る。そのため、更新された構成は、ノードが解決された後、構成エンドポイントを介してメモリキャッシュノードを解決する必要なく、クライアントによって容易に取得される。管理システムは、キャッシュクラスタを管理する1つ以上のコンピューティング資源を含み得る。複数のメモリキャッシュノードが、キャッシュクラスタを作成するために1つ以上の方法で一緒にグループ化され得ることに留意されるべきである。
キャッシュクラスタは、データソースへのアクセスを削減するために、データおよびオブジェクトをキャッシュし得る。キャッシュクラスタは、1つ以上のメモリキャッシュノードを含み得る。各ノードは、キャッシュされたデータの組の一部を格納し得る。キャッシュされたデータは、データの要素をキャッシュクラスタから取得するために使用される鍵に基づき、メモリキャッシュノード間で分割され得る。データソースは、データベース、アプリケーションプログラミングインタフェース(API)または他のデータストアもしくはデータソースを含み得る。メモリキャッシュノードは、要求に対する応答を迅速化するために、キャッシュ用ストレージとして、RAMなどの、コンピュータメモリを使用し得る。
一実例では、キャッシュクラスタは、管理システムによって管理される。管理システムは、1つ以上のキャッシュクラスタの構成を判断、格納、および/または維持し得る。加えて、管理システムは、ネットワークを経由して、分散コンピューティング資源に論理的
に接続され得る。管理システムは、コンピューティング資源をメモリキャッシュノードとしてプロビジョニングするように構成され得る。管理システムは、プロビジョニングされたメモリキャッシュノードを1つ以上のキャッシュクラスタのいずれかと関連付けるようにも構成され得る。一実施形態では、管理システムは、メモリキャッシュノードを徐々に停止(wind down)して、コンピューティング資源をキャッシュクラスタから分散コンピューティング資源の汎用プールに移動させるようにも構成され得る。キャッシュクラスタが更新されると、キャッシュクラスタの構成が管理システム内で更新されて、メモリキャッシュノードの1つ以上に送信され得る。そのため、各メモリキャッシュノードは、キャッシュクラスタの構成の現在のバージョンを含み得る。
に接続され得る。管理システムは、コンピューティング資源をメモリキャッシュノードとしてプロビジョニングするように構成され得る。管理システムは、プロビジョニングされたメモリキャッシュノードを1つ以上のキャッシュクラスタのいずれかと関連付けるようにも構成され得る。一実施形態では、管理システムは、メモリキャッシュノードを徐々に停止(wind down)して、コンピューティング資源をキャッシュクラスタから分散コンピューティング資源の汎用プールに移動させるようにも構成され得る。キャッシュクラスタが更新されると、キャッシュクラスタの構成が管理システム内で更新されて、メモリキャッシュノードの1つ以上に送信され得る。そのため、各メモリキャッシュノードは、キャッシュクラスタの構成の現在のバージョンを含み得る。
一例として、キャッシュクラスタは、データベースに対して要求を行うウェブアプリケーションに対応する4つのメモリキャッシュノードを有し得る。トラフィック混雑のため、第5のメモリキャッシュノードがオンラインにされて、ウェブアプリケーションとデータベースとの間での要求の対応を支援し得る。メモリキャッシュノードは、一例として、第5のノードに対してコンピューティング資源をプロビジョニングし、第5のノードをキャッシュクラスタの一部としてスピンアップさせ得る、管理システムによってオンラインにされ得る。第5のメモリキャッシュノードをオンラインにした後、管理システムは、第5のメモリキャッシュノードを組み込むために、キャッシュクラスタのための構成を更新し得る。更新された構成は、格納および読み出しのために、メモリキャッシュノードの1つ以上にプッシュ型配信され得る。一実施形態では、クライアントは、構成エンドポイントに接触することなく、更新された構成をメモリキャッシュノードから受信し得る。別の実施形態では、静的構成エンドポイントは、更新された構成を含むメモリキャッシュノードを参照するエイリアスに対する更新を受信し得る。キャッシュクラスタのクライアントは、キャッシュ妨害を最小限にするために、構成エンドポイントからエイリアスを受信して、更新された構成を受信し得る。
構成は、複数の方法でクライアントに配信され得る。一実施形態では、事前定義された構成エンドポイントが、そこから現在の構成を要求するためのメモリキャッシュノードに対するアドレスを解決するために、クライアントドライバによって問い合わされ得る。構成エンドポイントは、クライアントシステムに対するクライアントドライバを含むサポートソフトウェアが、構成エンドポイントによって提供されるエイリアスを、構成が取得され得るメモリキャッシュノードに解決することが可能であり得るように、静的に宣言され得る。構成は、メモリキャッシュノードを含む、キャッシュクラスタのメモリキャッシュ資源にアクセスする方法を記述できる。エイリアスのこの静的宣言は、新しいクライアントを開始する前に新しいクライアントを手動で構成するのではなく、新しいクライアントが、開始して、メモリキャッシュノードを解決し、構成を取得して、現在のキャッシュクラスタ状態に自己構成するのを可能にする。別の実施形態では、メモリキャッシュノードは、キャッシュクラスタの構造を記述する構成を格納するための予約された空間も含むことができる。データの通常のキャッシングは、データを満了にし得るが、メモリキャッシュノードの制御範囲内のストレージのセクションは、削除を心配することなく、構成がかかる予約された構成空間内に格納され得るように、分割され得る。
メモリキャッシュノードと既に通信しているクライアントは、メモリキャッシュノードからの現在の構成よりも新しい場合、現在の構成を要求することもできる。一実施形態では、メモリキャッシュノード内に格納された構成が、クライアントが有する現在の構成から更新されている場合、要求が行われる。別の実施形態では、クライアントは、定期的に、または不定期に、1つ以上のメモリキャッシュノードから構成を要求し得る。別の実施形態では、クライアントからの要求に応答する代わりに、キャッシュクラスタに対する構成変更または任意の他の変更の際に、新しい構成が、メモリキャッシュノードによってクライアントにプッシュ型配信され得る。なおさらに、キャッシュクラスタの構成が、定期
的、ハートビート、満了、または不定期的などの、時間間隔に基づき、メモリキャッシュノードによってクライアントに発信され得る。追加の実施形態では、構成は、クライアントがキャッシュクラスタへのアクセスを要求すると、クライアントにプッシュ型配信され得る。現在の構成を提供することにより、メモリキャッシュノードは、クライアントがメモリキャッシュノードをアクセスすると更新するであろうという期待で、変更され得る。
的、ハートビート、満了、または不定期的などの、時間間隔に基づき、メモリキャッシュノードによってクライアントに発信され得る。追加の実施形態では、構成は、クライアントがキャッシュクラスタへのアクセスを要求すると、クライアントにプッシュ型配信され得る。現在の構成を提供することにより、メモリキャッシュノードは、クライアントがメモリキャッシュノードをアクセスすると更新するであろうという期待で、変更され得る。
プロビジョニングという用語は、コンピューティング資源の使用に対する割当てを含むように幅広く読まれることを意図する。いくつかの実施形態では、これは、コンピューティング資源を使用のために準備することを含む。一実施形態では、メモリキャッシュノードのプロビジョニングは、サーバーの割当て、オペレーティングシステムのインストール、メモリキャッシュノードのインストールおよび構成、並びにメモリキャッシュノードの使用のための有効化を含むであろう。例えば、プロビジョニングシステムは、メモリキャッシュノードとして使用するためにサーバーを選択し得る。プロビジョニングシステムは次いで、サーバーをメモリキャッシュノードとして使用するために準備するワークフローを作成し得る。ワークフローの一部として、マシンイメージがサーバー上にロードされ得る。マシンイメージは、オペレーションシステム、メモリキャッシュソフトウェアおよび/または設定を含み得る。マシンイメージのロード後、サーバーは、オペレーティングシステムにブートされて、任意のさらなるソフトウェアおよび/または設定を受信され得る。かかる設定は、キャッシュクラスタ構成を含み得る。プロビジョニングの完了後、サーバーは、メモリキャッシュノードとしての使用のために管理システムに引き渡され得る。
ここで図1を参照すると、少なくとも1つの実施形態に従った分散メモリキャッシュシステム100の実例が示されている。管理システム114は、キャッシュされた情報をキャッシュ112からクライアントに提供するキャッシュクラスタ113を管理する1つ以上のコンピューティング資源を含み得る。管理システム114は、キャッシュクラスタ113を監視して、サービスの必要性および/または障害に少なくとも部分的に基づき調整し得る。キャッシュサービス100は、キャッシュクラスタ113を形成する1つ以上のメモリキャッシュノード110に対するエイリアスを含む構成エンドポイント106を含み得、各メモリキャッシュノード110は、キャッシュ112からのキャッシュされたデータおよび構成108をサービスし得る。キャッシュクラスタ113は、複数のキャッシュノード110を含み得る。一実施形態では、キャッシュクラスタ113は、複数のメモリキャッシュノード110を含み得る。メモリキャッシュノード110は各々、サーバーなどのコンピューティング装置上で実行する仮想マシンを含み得る。別の実施形態では、キャッシュクラスタ113は、直接ハードウェア上で実行する複数のメモリキャッシュノード110を含み得る。そのため、本明細書で参照されるプログラムおよびプロセスは、実際のハードウェアまたは仮想マシン上で実行され得ることが認識されるべきである。
一実施形態では、管理システム114は、キャッシュクラスタ113を監視する監視システムおよびキャッシュクラスタ113を調整するプロビジョニングシステムを含み得る。監視は、キャッシュクラスタ113の構成要素ならびに/またはキャッシュサービス100全体の入力、出力および状態に関する測定値を記録すること、ならびに/または、それらの指標を判定することを含み得る。プロビジョニングシステムは、新しいメモリキャッシュノードのプロビジョニング、現在のメモリキャッシュノードのプロビジョニング解除およびキャッシュクラスタ113上で実行された変更に基づく新しい構成108の判定などのサービスを提供し得る。例えば、監視システムは、メモリキャッシュノード110が故障していることを検出して、問題をプロビジョニングシステムに伝達し得る。プロビジョニングシステムは、新しいメモリキャッシュノード110のプロビジョニング、故障しているメモリキャッシュノード110の除去、および構成108の更新を行うワークフローが作成されるようにし得る。プロビジョニングシステムは次いで、新しいメモリキャッシュノードが、故障しているメモリキャッシュノードに取って代わり、構成エンドポイ
ントが有効なエイリアスで更新され、メモリキャッシュノード110の1つ以上が新しい構成108を受信するように、ワークフローを実行させ得る。一実施形態では、メモリキャッシュノード110が次いで、ピアツーピア方式などで、それらの間で情報を伝搬するので、プロビジョニングシステムは、構成をメモリキャッシュノード110の1つに伝達する必要があるだけである。
ントが有効なエイリアスで更新され、メモリキャッシュノード110の1つ以上が新しい構成108を受信するように、ワークフローを実行させ得る。一実施形態では、メモリキャッシュノード110が次いで、ピアツーピア方式などで、それらの間で情報を伝搬するので、プロビジョニングシステムは、構成をメモリキャッシュノード110の1つに伝達する必要があるだけである。
メモリキャッシュノード110は、構成108のためのストレージも提供し得、構成108は、キャッシュクラスタ113との通信パラメータを列挙し得る。いくつかの実施形態では、この構成108は、キャッシュ満了規則の対象ではない予約された構成空間内に格納され得る。一実施形態では、構成は、キャッシュ112内に格納されて、クライアントまたは管理システム114は、構成108が利用可能であることを確実にするために十分に頻繁な要求および/更新を確実にする。構成108は、キャッシュクラスタ113に対する変更に遅れないようにするために上書きされ、かつ/または更新され得る。
構成エンドポイント106は、構成108の取得を支援するためにも提供され得る。いくつかの実施形態では、構成エンドポイント106は、構成108の取得のために、メモリキャッシュノードに対するエイリアスとして直接参照され得る静的資源である。例えば、新しいクライアントは、構成エンドポイント106のホスト名で初期化され得る。新しいクライアントのインスタンス生成時に、クライアントは、構成エンドポイント106と接続して、メモリキャッシュノードに対するエイリアスを解決し、構成108をメモリキャッシュノードから取得し得る。構成エンドポイント106を提供することにより、クライアントは、古くなって保守を必要とし得るメモリキャッシュノードのリストを用いて開始するのではなく、自己構成し得る。いくつかの実施形態では、クライアントは、構成エンドポイント108によって提供されたエイリアス内で参照されたメモリキャッシュノードまたはメモリキャッシュノード110に構成108を要求することにより、さらに新しい構成108の取得を継続し得る。一実施形態では、構成エンドポイントは、ドメインネームシステム(DNS)サービスによって実装され得る。クライアントは、静的なホスト名をドメインネームサーバーに要求し、メモリキャッシュノードへ解決するIPアドレスを受信し得る。
ここで図2を参照すると、少なくとも1つの実施形態に従った分散メモリキャッシュシステム200の実例が示されている。クライアントシステム203は、クライアントドライバ204を使用して、管理システム214によって管理されるキャッシュクラスタ213から情報を取得する。図示する実施形態では、クライアントシステム203は、キャッシュクラスタ213からデータを取得するアプリケーション202を含む。クライアントシステム203は、クライアントドライバ204を使用して、アプリケーション202とキャッシュクラスタ213との間のインタフェースを管理する。例えば、アプリケーション202は、ショッピングウェブサイトであり得、クライアントドライバ204は、関数呼び出しおよび/またはアプリケーションプログラミングインタフェース(API)を通してキャッシュ機能を公開するライブラリであり得る。
クライアントドライバ204は、キャッシュクラスタ213との通信を管理し得る。一実施形態では、クライアントドライバ204は、自動構成をサポートする。クライアントドライバ204の初期構成は、構成208が取得され得るエイリアスを提供する構成エンドポイント206のホスト名など、小さい可能性がある。一実施形態では、エイリアスは、ドメインネームサーバーとして機能する構成エンドポイントの一部として提供される。構成208は、クライアントドライバ204がキャッシュクラスタ213に接続して、それを使用するために必要な情報を含み得る。例えば、アプリケーション202は、クライアントドライバ204の初期化の一部として、構成エンドポイント206のホスト名および/またはアドレスをクライアントドライバ204に提供し得る。与えられたホスト名お
よび/またはアドレスを使用して、クライアントドライバ204は、構成エンドポイント206と接触して、メモリキャッシュノード210に対するエイリアスを解決し、メモリキャッシュノード210に構成208を要求する。一実施形態では、この構成は、削除(eviction)などの、キャッシュノードによって実施されるプロトコル(memcachedプロトコルおよびその変形など)のあるキャッシュ規則の対象ではないメモリキャッシュノード210の予約されたメモリ空間内に格納される。予約されたメモリ空間内の情報は、memcachedなどの、標準的なキャッシュプロトコルに対する拡張に従ってアクセスされ得る。構成208を受信すると、クライアントドライバ204は、構成208をロードし得る。一旦ロードされると、クライアントドライバ204は、構成208を検証し得る。一実施形態では、クライアントドライバ204は、1つ以上のメモリキャッシュノード210に接触し、構成208のバージョンを、第2のメモリキャッシュノード210内に含まれる構成バージョンに対して検証する。クライアントドライバ204は、見つかった最新の構成208を使用し得る。クライアントドライバ204は次いで、データを、キャッシュ212内に格納する1つ以上のメモリキャッシュノード210に要求することにより、アプリケーション202からのデータに対する要求に対応し得る。クライアントドライバ204は、定期的に、ロードされた構成バージョンを、メモリキャッシュノード210によって格納された構成バージョンに対してチェックし得る。クライアントドライバ204は、見つかった最新の構成を使用することを選択し得、それは、クライアントドライバ204にロードされた現在のバージョンであり得る。構成208をロードすることにより、クライアントドライバは、キャッシュクラスタ213における動的変化に対処できる。例えば、構成208は、キャッシュクラスタ213に追加されるか、またはそれから取り除かれるメモリキャッシュノード210を識別し得る。構成をロードすることにより、クライアントドライバ204は、アプリケーション202からの指示なしで、キャッシュクラスタ213のインフラストラクチャにおけるいかなる変更にも対処し得る。
よび/またはアドレスを使用して、クライアントドライバ204は、構成エンドポイント206と接触して、メモリキャッシュノード210に対するエイリアスを解決し、メモリキャッシュノード210に構成208を要求する。一実施形態では、この構成は、削除(eviction)などの、キャッシュノードによって実施されるプロトコル(memcachedプロトコルおよびその変形など)のあるキャッシュ規則の対象ではないメモリキャッシュノード210の予約されたメモリ空間内に格納される。予約されたメモリ空間内の情報は、memcachedなどの、標準的なキャッシュプロトコルに対する拡張に従ってアクセスされ得る。構成208を受信すると、クライアントドライバ204は、構成208をロードし得る。一旦ロードされると、クライアントドライバ204は、構成208を検証し得る。一実施形態では、クライアントドライバ204は、1つ以上のメモリキャッシュノード210に接触し、構成208のバージョンを、第2のメモリキャッシュノード210内に含まれる構成バージョンに対して検証する。クライアントドライバ204は、見つかった最新の構成208を使用し得る。クライアントドライバ204は次いで、データを、キャッシュ212内に格納する1つ以上のメモリキャッシュノード210に要求することにより、アプリケーション202からのデータに対する要求に対応し得る。クライアントドライバ204は、定期的に、ロードされた構成バージョンを、メモリキャッシュノード210によって格納された構成バージョンに対してチェックし得る。クライアントドライバ204は、見つかった最新の構成を使用することを選択し得、それは、クライアントドライバ204にロードされた現在のバージョンであり得る。構成208をロードすることにより、クライアントドライバは、キャッシュクラスタ213における動的変化に対処できる。例えば、構成208は、キャッシュクラスタ213に追加されるか、またはそれから取り除かれるメモリキャッシュノード210を識別し得る。構成をロードすることにより、クライアントドライバ204は、アプリケーション202からの指示なしで、キャッシュクラスタ213のインフラストラクチャにおけるいかなる変更にも対処し得る。
構成をロードすることは、他のコンピューティングシステムと、キャッシュクラスタに関するクライアントドライバの情報を同期化し得る。一実施形態では、いくつかのクライアントドライバ204が、各々がそれ自身のサーバー上にある、ウェブアプリケーションの複数のインスタンスにサービスするために、同時に存在する。キャッシュクラスタ213の構成を同期化すると、各クライアントドライバ204が、キャッシュクラスタ213を形成するメモリキャッシュノード210を適切に設定して、そこからの情報を要求するのを可能にする。例えば、メモリキャッシュノードの設定およびキャッシュ要求の例については、図11〜図12および関連した説明を参照されたい。
クライアントドライバ204およびキャッシュノード210は、memcachedプロトコルなどの、標準プロトコル、およびそのプロトコルに対する拡張を使用して、通信し得る。例えば、キャッシュ動作は、標準プロトコルを使用し得るが、構成動作は、プロトコルのコマンドセットに対する追加などの、プロトコルに対する拡張を使用し得る。いくつかの実施形態では、予約された構成ストレージについて動作可能な拡張動作は、作成、取得、更新および破壊動作を含み得る。他の拡張動作は、構成バージョンの取得動作、他のメタデータ操作動作および構成要求の伝搬を含み得る。
管理システム214は、他のシステムの管理に対して責任がある1つ以上のコンピューティング資源であり得る。図2では、管理システム214は、キャッシュクラスタ213内のメモリキャッシュノード210のプロビジョニングおよび監視を含む、分散メモリキャッシュシステム200に対して責任を負う。管理システム214は、管理システム214の管理が顧客および/または管理者のニーズに合うように、顧客および/または管理者からの命令も受信し得る。例えば、管理システム214は、キャッシュクラスタ213を形成するメモリキャッシュノード210の組に対して責任を負い得る。管理システム214は、一例としてプロビジョニングシステムを通して、新しいメモリキャッシュノード2
10がインスタンス生成されるか、または現在のメモリキャッシュノード210が停止されるようにし得る。管理システム214は、キャッシュクラスタ213の監視に対しても責任を負い得、それは、指標に関してメモリキャッシュノード210の組を監視することを含み得る。指標は、利用、障害または使用および/もしくは根底にあるシステムに関する他の情報を含み得る。構成エンドポイント206は、構成208を提供できるアクティブなメモリキャッシュノード210に対するエイリアスが常に利用可能であることを確実にするために、管理システム214によっても維持され得る。
10がインスタンス生成されるか、または現在のメモリキャッシュノード210が停止されるようにし得る。管理システム214は、キャッシュクラスタ213の監視に対しても責任を負い得、それは、指標に関してメモリキャッシュノード210の組を監視することを含み得る。指標は、利用、障害または使用および/もしくは根底にあるシステムに関する他の情報を含み得る。構成エンドポイント206は、構成208を提供できるアクティブなメモリキャッシュノード210に対するエイリアスが常に利用可能であることを確実にするために、管理システム214によっても維持され得る。
一実施形態では、管理システム214は、監視システムを使用して、キャッシュサービス200に関連して認識された問題に対処し得る。例えば、故障したメモリキャッシュノード210内で障害が発生すると、故障したメモリキャッシュノードはプロビジョニング解除されて、キャッシュクラスタ213から除去され得る。新しいメモリキャッシュノード210が、故障したメモリキャッシュノードを交換して、故障したメモリキャッシュノードの損失から回復するためにプロビジョニングされ得る。他の例では、故障したメモリキャッシュノードが、メモリキャッシュノードを交換し、再初期化して、回復することにより、修復され得る。キャッシュクラスタ213に対して行われた変更を使用して、管理システム214は、構成208を更新し、更新された構成208が各メモリキャッシュノード210内に格納されるようにし得る。必要に応じて、構成エンドポイント206によって提供されるエイリアスも更新され得る。別の例では、管理システム214は、キャッシュされたデータに対する需要の増加に起因して、新しいメモリキャッシュノード210をプロビジョニングする。管理システム214は、構成208を新しいメモリキャッシュノード210に対する接続情報で更新して、構成208をメモリキャッシュノード210内に格納させ得る。
構成は、キャッシュクラスタ213に接続するために必要な情報を含み得る。直接接続構成を使用するいくつかの実施形態では、これは、各メモリキャッシュノード210に直接接続するための情報を含み得る。要求転送構成を使用する他の実施形態では、構成208は、データをキャッシュ212内に保持するメモリキャッシュノード210に要求を転送する責任を負うメモリキャッシュノード210を識別し得る。一実施形態では、直接接続および要求転送の両方が利用可能なハイブリッド手法が取られ得る。
ここで図3を参照すると、少なくとも1つの実施形態に従った分散メモリキャッシュ環境300の実例が示されている。クライアントアプリケーション309(図2の202)、管理システム312(図2の214)および構成エンドポイント308(図2の206)がデータセンターのコンテキストで存在し得る。コンピュータは、データセンター304内の信頼されるコンピューティング資源および、データセンター304外部の、アプリケーションクライアント322とも呼ばれる、信頼できない外部コンピューティングシステム316、318、320に分類され得る。データセンター304内部では、コンピューティング資源およびネットワーキング306は、既知の管理者のドメインおよび制御の下であり、従って、信頼される内部接続を有し得る。インターネット305など、データセンター304の外部は、管理者の制御を超えている可能性があり、従って、信頼できない。
データセンター304の内部は、メモリキャッシュノード302、内部ネットワーキング306、管理システム312、ゲートウェイ310、構成エンドポイント308およびクライアントアプリケーション309であり得る。メモリキャッシュノード302は、内部ネットワーキング306を通して、他のメモリキャッシュノード302に接続され得る。メモリキャッシュノード302は、管理システム312とも接続され得る。管理システム312は、資源のプロビジョニングおよびルーティングの変更を含め、コンピューティング資源を操作するための要求を受信し得る。メモリキャッシュノード302および管理
システム312は、ゲートウェイ310とも接続され得る。ゲートウェイ310は、WebサーバーへのHTTPトラフィックなどの、クライアントアプリケーション309への外部トラフィックをフィルタ処理およびルーティングし得る。例えば、クライアントアプリケーション309は、外部システム316、318、320と通信し得るが、メモリキャッシュノード302は外部通信を許可されない。
システム312は、ゲートウェイ310とも接続され得る。ゲートウェイ310は、WebサーバーへのHTTPトラフィックなどの、クライアントアプリケーション309への外部トラフィックをフィルタ処理およびルーティングし得る。例えば、クライアントアプリケーション309は、外部システム316、318、320と通信し得るが、メモリキャッシュノード302は外部通信を許可されない。
データセンター304の外部は、いくつかの異なる構成要素または環境のいずれかであり得、インターネット305ならびに、デスクトップ316、ラップトップ318などの様々な外部コンピューティングシステム、および電子書籍端末、携帯電話、タブレットコンピューティング装置などの、モバイル機器320を含み得る。システム316、318、320は信頼される管理者によって管理されていない可能性があるので、システム316、318、320は信頼できないと見なされ得る。さらに、インターネットなどの、通信チャネルは、信頼される管理者によって制御されない。従って、外部コンピューティングシステム316、318、320からのメッセージは、インターセプトされ、偽造され、かつ/または悪用され得る。
いくつかの場合には、保護のために、安全な内部ネットワーク306上のクライアントアプリケーション309は、少しでもある場合には、動作するために必要なインターネット305アクセスのみが与えられ得る。例えば、ゲートウェイ310が、他の全てのインターネット305トラフィックがWebサーバーに直接到着するのを防ぐ安全な内部ネットワークに対するアクセス制御を提供するので、データセンター304内のWebサーバーは、ポート80上の外部トラフィックのみを受信し得る。別の例では、安全な内部ネットワーク306上のメモリキャッシュノード302は、ローカルWebサーバーにより安全な内部ネットワークを経由して問い合わされるだけなので、インターネット305に接続されない可能性がある。他の実施形態では、クライアントアプリケーション309は、負荷分散装置の後ろであり得、それは、時々、インターネット305要求をクライアントアプリケーション309に向かわせ得る。
ここで図4を参照すると、少なくとも1つの実施形態に従った分散メモリキャッシュ管理環境400の実例が示されている。管理システム416は、メモリキャッシュノード402を監視および/または管理し得る。メモリキャッシュノード402は、キャッシュされた鍵‐値ペア410を管理し、キャッシュされた値を(鍵‐値ペア410から)提供する要求に応答し、キャッシュクラスタ413および/または各メモリキャッシュノード402と通信する方法を識別する構成412を提供し得る。鍵‐値ペア410は、データストア408からの読取りおよび/または変更時に、メモリキャッシュノード402のキャッシュに挿入され得る。キャッシュクラスタ413は、頻繁にアクセスされ、かつ/または、データストア408から直接データを要求するよりもアクセスコストが高いデータに潜在的に迅速に応答するのを可能にする。
キャッシュ空間404および予約されたメモリ空間406を含む、メモリキャッシュノード402が提供され得る。メモリキャッシュノード402は、仮想マシンを含む、仮想ハードウェアおよび/または物理ハードウェアによって対応され得る。メモリキャッシュノードは、キャッシュ空間404内に格納するために鍵/値ペア410を受信し得る。鍵‐値410は、満了時間、ならびに、メモリキャッシュノード402がキャッシュ空間404を使い果たしているかどうかに応じた早期満了を有し得る。メモリキャッシュノード402は、どの鍵‐値ペア410が早期に満了し得るかを判断するためのアルゴリズムを使用し得る。いくつかの実施形態では、キャッシュが満杯の場合に、どの項目が早期に満了するかを判断するために、LFU(使用頻度が最も低い)アルゴリズムが使用される。他の実施形態では、データストアに問い合わせるコストが考慮に入れられ得る。一実施形態では、満了は、どの鍵‐値ペア410が、将来、頻繁にアクセスされると予期されない
かに基づき得る。メモリキャッシュノード402は、キャッシュクラスタ413との通信パラメータを列挙する構成412用のストレージも提供し得る。いくつかの実施形態では、この構成412は、満了の対象ではない予約されたメモリ空間406内に格納され得る。一実施形態では、構成412は、キャッシュ空間404内に格納されるが、クライアントまたは管理システム416は、構成412が利用可能であることを確実にするために十分に頻繁な要求および/更新を確実にする。構成412は、キャッシュクラスタ413に対する変更に遅れないようにするために上書きされ、かつ/または更新され得る。
かに基づき得る。メモリキャッシュノード402は、キャッシュクラスタ413との通信パラメータを列挙する構成412用のストレージも提供し得る。いくつかの実施形態では、この構成412は、満了の対象ではない予約されたメモリ空間406内に格納され得る。一実施形態では、構成412は、キャッシュ空間404内に格納されるが、クライアントまたは管理システム416は、構成412が利用可能であることを確実にするために十分に頻繁な要求および/更新を確実にする。構成412は、キャッシュクラスタ413に対する変更に遅れないようにするために上書きされ、かつ/または更新され得る。
構成エンドポイント414は、構成412の取得を支援するためにも提供され得る。いくつかの実施形態では、構成エンドポイント414は、構成412の取得のために、メモリキャッシュノードに対するエイリアスとして直接参照され得る静的資源である。例えば、新しいクライアントは、構成エンドポイント414のホスト名で初期化され得る。新しいクライアントのインスタンス生成時に、クライアントは、構成エンドポイント414と接続して、メモリキャッシュノード402に対するエイリアスを解決し、構成412をメモリキャッシュノード402から取得し得る。構成エンドポイント414を提供することにより、クライアントは、古くなって保守を必要とし得るメモリキャッシュノード402のリストを用いて開始するのではなく、自己構成し得る。いくつかの実施形態では、クライアントは、構成エンドポイント414によって提供されたエイリアス内で参照されたメモリキャッシュノード402から、またはメモリキャッシュノード402から直接、構成412を要求することにより、さらに新しい構成412の取得を継続し得る。
一実施形態では、管理システム416は、構成412について責任を負う。別の実施形態では、新しいメモリキャッシュノード402が検出されると、それらが構成412に追加され得るように、メモリキャッシュノード402は、クラスタ認識(cluster aware)であり得る。別の実施形態では、管理システム416は、更新された構成412を、構成エンドポイント414によって維持されるエイリアスによって識別されるメモリキャッシュノード402などの、識別されたメモリキャッシュノード402内に格納し得る。各メモリキャッシュノード402は、次いで、変更に関して識別されたメモリキャッシュノード402を監視し、構成412が変更されていると判断される場合に、構成412をダウンロードし得る。いくつかの実施形態では、識別されたメモリキャッシュノード402は分散されて、かつ/またはキャッシュクラスタ413内の他のメモリキャッシュノード402に構成412に対する変更を通知し得る。更新された構成412を取得することにより、クライアントは、キャッシュクラスタ413内の動的に変化するメモリキャッシュノード402に適合し得る。
メモリキャッシュノード413は、キャッシュされたデータを管理する規則を含むプロトコルに従い得る。一実施形態では、規則は、キャッシュ空間404が満杯の場合に、LRU(最も長い間使用されていない)ベースでキャッシュ削除を指定する。別の実施形態では、規則は、鍵‐値ペア410などの、キャッシュされたデータが、その後はデータがもはや利用できない、有効期間と関連付けられるのを可能にする。いくつかの実施形態では、予約された構成空間402内に格納された構成412がキャッシュ削除および/または有効期間を管理する規則の対象ではなくなるように、キャッシュされたデータを管理するプロトコルが拡張されている。
ここで図5を参照すると、少なくとも1つの実施形態に従った構成要素間の論理接続の実例500が示されている。メモリキャッシュノード510を使用するキャッシュクラスタ513の目的は、APIまたはリレーショナルデータベース、NoSQLデータベースおよび鍵‐値ストアなどの、データストア514上へのロードおよび/またはそこからの低速応答を防ぐためであり得る。図示した実施形態では、アプリケーション502は、クライアントドライバ504に、ライブラリAPI呼出しを通してなど、構成508を、所
定の構成エンドポイント506から取得されたエイリアスによって識別されたメモリキャッシュノード510から取得させ得る。構成508は、データストア514およびメモリキャッシュノード510との通信を可能にするための情報を含み得る。通信を構成すると、クライアントドライバ504は、データストア514内のデータに対するアプリケーション502からの要求を処理し得る。クライアントドライバ504は、データがメモリキャッシュノード510のキャッシュ512内にあるかどうかを確認するために接触するメモリキャッシュノード510を判断し得る。そうである場合、クライアントドライバ504は、データをアプリケーション502に返し得る。そうでない場合、クライアントドライバは、データストア514から直接情報を要求し得る。要求のために、データストア514および/またはクライアントドライバ504は、将来の取得のために、データをメモリキャッシュノード510のキャッシュ512内に格納させ得る。いくつかの実施形態では、メモリキャッシュノード510に対する要求の間に、クライアントドライバ504は、構成変更が生じているかをチェックし、かつ/またはそれを通知され得る。
定の構成エンドポイント506から取得されたエイリアスによって識別されたメモリキャッシュノード510から取得させ得る。構成508は、データストア514およびメモリキャッシュノード510との通信を可能にするための情報を含み得る。通信を構成すると、クライアントドライバ504は、データストア514内のデータに対するアプリケーション502からの要求を処理し得る。クライアントドライバ504は、データがメモリキャッシュノード510のキャッシュ512内にあるかどうかを確認するために接触するメモリキャッシュノード510を判断し得る。そうである場合、クライアントドライバ504は、データをアプリケーション502に返し得る。そうでない場合、クライアントドライバは、データストア514から直接情報を要求し得る。要求のために、データストア514および/またはクライアントドライバ504は、将来の取得のために、データをメモリキャッシュノード510のキャッシュ512内に格納させ得る。いくつかの実施形態では、メモリキャッシュノード510に対する要求の間に、クライアントドライバ504は、構成変更が生じているかをチェックし、かつ/またはそれを通知され得る。
いくつかの実施形態では、要求転送が起こり得る。例えば、クライアントドライバ504は、要求を第2のメモリキャッシュノード510に転送し得る第1のメモリキャッシュノード510に対してデータを要求し得る。第2のメモリキャッシュノード510が要求されたデータをキャッシュ512内に有していない場合、第2のメモリキャッシュノード510は、要求をデータストア514に転送し得る。データストアは、要求されたデータを、同じ経路を通じて、またはクライアントドライバ504に直接のいずれかで、返し得る。要求転送の利点は、クライアントドライバ504が現在の構成508を有する必要がないことである。しかし、遅延が、メモリキャッシュノード510と直接通信するよりも著しい可能性がある。
ここで図6を参照すると、少なくとも1つの実施形態に従った分散メモリキャッシュ構成プロセスの例示的なチャートが示されている。このプロセスは、一実施形態では、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびメモリキャッシュノード210を含む図2で見られるような、コンピューティング資源によって達成され得る。構成プロセスは3つの段階、すなわち初期化600、使用614および再構成622を含み得る。初期化中、クライアントドライバ604は、構成612を獲得することにより、アプリケーション602のために、キャッシュからデータを受信する準備をする。図6では、アプリケーション602は、クライアントドライバ604に、ホスト名、アドレスまたは他の識別情報などにより、構成エンドポイント610を識別する構成エンドポイント識別子606を与える。クライアントドライバ604は、この構成エンドポイント識別子606を使用して、構成612を含むメモリキャッシュノード620を識別するエイリアスを解決する。クライアントドライバは、構成612をメモリキャッシュノード620に要求する(608)。メモリキャッシュノード620は、構成612をクライアントドライバ604に送信し得る。クライアントドライバ604は、次いで、メモリキャッシュノード620を有するキャッシュクラスタ613との通信を可能にするために構成612をロードし得る。
いくつかの実施形態では、構成エンドポイント610は、新しいアプリケーション602が構成エンドポイントエイリアスの可用性に依存するので、高可用性が確保される。構成エンドポイント610は、要求しているIPアドレス、宛先IPアドレスおよび/もしくは認証情報などの、要求または要求と関連付けられた識別子に基づいて、アクセス制限され得る。
使用段階614では、クライアントドライバ604は、アプリケーション602とキャッシュクラスタ613との間でインタフェースとして機能し得る。いくつかの実施形態では、このインタフェースは、APIおよび/またはコードライブラリを用いて行われ得る
。アプリケーション602は、どのメモリキャッシュノード620が要求されたデータをそのキャッシュ内に有し得るかを判断するために、クライアントドライバ604によって分析されるデータに対する要求616を送信し得る。クライアントドライバ604は、次いで、データに対する要求616を、メモリキャッシュノード620によって認識される形式で送信し得る。データがメモリキャッシュノード620内で見つかる場合、メモリキャッシュノード620はデータ618をクライアントドライバ604に返す。クライアントドライバ604は、次いで、データ618をアプリケーション602に返す。しかし、データがメモリキャッシュノード620内で見つからない場合、クライアントドライバの要求は失敗し得、かつ/またはデータストアに向け直され得る。
。アプリケーション602は、どのメモリキャッシュノード620が要求されたデータをそのキャッシュ内に有し得るかを判断するために、クライアントドライバ604によって分析されるデータに対する要求616を送信し得る。クライアントドライバ604は、次いで、データに対する要求616を、メモリキャッシュノード620によって認識される形式で送信し得る。データがメモリキャッシュノード620内で見つかる場合、メモリキャッシュノード620はデータ618をクライアントドライバ604に返す。クライアントドライバ604は、次いで、データ618をアプリケーション602に返す。しかし、データがメモリキャッシュノード620内で見つからない場合、クライアントドライバの要求は失敗し得、かつ/またはデータストアに向け直され得る。
いくつかの実施形態では、要求616内のデータが、キャッシュクラスタ613内の2つ以上のメモリキャッシュノード620によってサービスされ得る。一実施形態では、この冗長性は、再作成のコストが高いキャッシュされたデータに起因し得る。他の実施形態では、この冗長性は、頻繁にアクセスされるデータの集合に起因したサーバー負荷の低減に起因し得る。クライアントドライバ604は、構成情報612、キャッシュクラスタ613に関する管理システムからの情報、メモリキャッシュノード620から要求待ち時間および/または他の情報もしくは指標を使用して、冗長情報のためにどのメモリキャッシュノード620が接触されるべきかを判断し得る。別の実施形態では、データが2つ以上のメモリキャッシュノード620から利用可能な場合、メモリキャッシュノード620は、ランダムに選択される。
再構成段階622では、クライアントドライバ604は、その構成612が、そのバージョンを、メモリキャッシュノード620の1つ以上に知られているバージョンと比較することにより、最新であることを確実にする。一実施形態では、クライアントドライバ604は、構成608に対する要求を1つ以上のメモリキャッシュノード620に定期的に送信し得る。接触されたメモリキャッシュノード620は、クライアントドライバ604によって使用された構成と比較され得る、格納された構成612を返し得る。別の実施形態では、クライアントドライバは、構成612のバージョン情報をメモリキャッシュノード620から要求し得る。クライアントドライバ604は、取得されたバージョン情報を、ローカル構成のバージョン情報と比較し得る。取得された情報がより新しいバージョンである場合、クライアントドライバ604は、構成612の新しいバージョンを要求し得る。例えば、バージョン情報は、連続して増加される番号とタイムスタンプの組合せであり得る。いくつかの実施形態では、クライアントドライバは、二次戻り値などの、構成が使用段階614中に変更されていることを示す指標をメモリキャッシュノード620から受信し得る。
図7は、少なくとも1つの実施形態に従って構成を更新するために使用され得るプロセス700の実例を示す。このプロセスは、一実施形態では、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびメモリキャッシュノード210を含む図2で見られるような、コンピューティング資源によって達成され得る。キャッシュクラスタが、構成エンドポイントを提供して、構成分散のためにメモリキャッシュノードに対するエイリアスを提供し得る(702)。メモリキャッシュノードのプロビジョニング、メモリキャッシュノードのプロビジョニング解除、鍵の移動、鍵配置に対する変更またはクライアント構成に影響を及ぼす他の変更などの、1つ以上の分散メモリキャッシュノードを変更すると(704)、新しい構成が、実行された変更に基づき判断され得る(706)。メモリキャッシュノード内に格納された構成が更新され得(710)、必要に応じて、構成エンドポイントエイリアスも更新され得る(708)。構成に対する更新は、メモリキャッシュノード内に格納された構成データに対する交換、連結、上書き、または他の変更であり得る。
プロセス700の一部または全部(または本明細書で説明する任意の他のプロセス、またはその変形および/もしくは組合せ)は、実行可能な命令で構成された1つ以上のコンピュータシステムの制御下で実行され得、ハードウェアまたはその組合せにより、1つ以上のプロセッサ上でまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラムまたは1つ以上のアプリケーション)として実装され得る。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形で、コンピュータ可読記憶媒体上に格納され得る。コンピュータ可読記憶媒体は持続性であり得る。
図8は、少なくとも1つの実施形態に従ってクライアントを構成するために使用され得るプロセス800の実例を示す。このプロセスは、一実施形態では、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびキャッシュクラスタ213を含む図2で見られるような、コンピューティング資源によって達成され得る。クライアントドライバが、構成エンドポイントに関する初期化情報を受信し得る(802)。構成エンドポイント情報を使用して、クライアントドライバは、メモリキャッシュノード情報を受信する(804)ために、構成エンドポイントによって提供されたエイリアスの使用を要求し得る(804)。クライアントドライバは、次いで、現在の構成をメモリキャッシュノードに要求し得る(805)。要求は、構成を要求しているアプリケーション、クライアントおよび/またはカスタマの明示的または暗黙的な識別を含み得る。明示的な識別は、認証情報またはアカウント情報を含み得る。暗黙的な識別は、起源、宛先、要求しているIPアドレス、宛先IPアドレスまたは要求元もしくは要求の他の固有特性を含み得る。識別は、構成エンドポイントが異なる分散キャッシュクラスタに対する複数のエイリアスにサービスする場合に有用である。クライアントドライバは、構成をロードして(806)、構成変更が必要になるまで(810)、アプリケーション要求に対応し得る(808)。構成更新に対する必要性が定期的にチェックされて、メモリキャッシュノードからの戻り値に記録され、ドライバに伝達されるか、または別の方法でドライバ、アプリケーションもしくはクライアントによって気付かれるか、もしくは通知され得る。必要に応じて、構成が、メモリキャッシュノードから要求され得る。
図9は、少なくとも1つの実施形態に従ってキャッシングを管理するために使用され得るプロセス900の実例を示す。このプロセスは、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびメモリキャッシュノード210を含む図2で見られるような、コンピューティング資源によって達成され得る。管理システムが、問題の指標に関してメモリキャッシュノードを監視し得る(902)。問題が発見された場合(904)、新しいメモリキャッシュノード(906)がプロビジョニングされ得(908)、かつ/または取り除かれる既存のメモリキャッシュノード(910)がプロビジョニングを解除され得る(912)。例えば、キャッシュクラスタに対して新しいメモリキャッシュノードを必要とする問題は、キャッシュ帯域幅および/またはキャッシュストレージに対する必要性の増大を含み得る。キャッシュクラスタからのメモリキャッシュノードの除去を必要とする問題は、キャッシュ帯域幅の必要性の減少、故障ハードウェアおよび/またはキャッシュストレージであり得る。例えば、キャッシングは、12月のショッピングウェブサイトなど、利用頻度の高い時期に増加し得る。キャッシングは、夏のスキー小売業者の商取引アプリケーションなど、利用頻度の低い時期に減少もし得る。いくつかの問題は、新しいメモリキャッシュノードのプロビジョニングおよび他のメモリキャッシュノードの除去も必要とし得る。これは、メモリキャッシュノードの故障および/またはあるサイズのメモリキャッシュノードから別のサイズのメモリキャッシュノードへの移行を含み得る。メモリキャッシュノードのプロビジョニングおよび/またはプロビジョニング解除後に、新しい構成が、問題に応答した変更に少なくとも一部基づき、判定され得る(914)。新しい構成は、格納のためにメモリキャッシュノードを更新する(920)ため、および/または構成エンドポイントによって使用されるエイリアスを更
新する(918)ために、プッシュ型配信され得る。
新する(918)ために、プッシュ型配信され得る。
ここで図10を参照すると、少なくとも1つの実施形態に従って、メモリキャッシュノード挙動を管理するために使用され得るプロセス1000の実例が示される。このプロセスは、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびメモリキャッシュノード210を含む図2で見られるような、コンピューティング資源によって達成され得る。メモリキャッシュノードの監視中(1002)、1つ以上の鍵/値ペアが冗長にするために識別される(1003)。この冗長性は、高負荷をメモリキャッシュノード間で分散し、かつ/またはキャッシュされた鍵‐値ペアの耐久性を向上させるために使用され得る。第2のメモリキャッシュノードが選択され得(1004)、識別された鍵‐値ペアにサービスさせ得る(1006)。第2のメモリキャッシュノードは、負荷、使用パターン、耐久性またはメモリキャッシュノードを望ましくする他の属性によって識別され得る。いくつかの実施形態では、重要な鍵‐値ペアが3つ以上のメモリキャッシュノード上に格納される。その変更を使用して、新しい構成が判断され得る(1008)。新しい構成を使用して、メモリキャッシュノードが、構成を受信して格納することにより更新され得る(1010)。構成エンドポイントも、そのエイリアスを更新することにより更新され得る(1012)。
例えば、再計算するのにコストがかかる鍵‐値ペアの耐久性が、鍵‐値ペアを冗長にするための判断において考慮に入れられ得る。管理システム内の監視システム上で実行しているアルゴリズムは、どの鍵‐値ペアが冗長にされるかを判断するために、アクセス頻度を測定する。アルゴリズムの結果を使用して、管理システムはプロビジョニングシステムに鍵‐値ペアを2つ以上のメモリキャッシュノードに渡って分散させ得る。鍵‐値ペアの分散後、管理システムは次いで、構成を更新して、その構成を、キャッシュクラスタの部分を形成するメモリキャッシュノードによって格納させ得る。いくつかの実施形態では、このアルゴリズムは、コストがかかり頻繁にアクセスされる鍵‐値ペアが冗長にされ得るように、鍵‐値ペアのコストを評価するように変更され得る。さらなる冗長性を必要とするいくつかの実施形態では、耐久性を向上するために、複数の構成エンドポイントが使用され得る。
いくつかの実施形態では、鍵‐値ペアは、冗長にされるのではなく、転送され得る。例えば、負荷下のメモリキャッシュノードは、負荷を第2のメモリキャッシュノードに移すために鍵の範囲を選択し得る。いくつかの場合には、負荷下のメモリキャッシュノードは、全部またはほとんどのクライアントがそれらの構成を更新するまで、鍵の範囲のサービスを継続する必要があり得る。
いくつかの実施形態では、構成がメモリキャッシュノード間で伝搬され得る。例えば、一旦、メモリキャッシュノードが構成を受信すると、メモリキャッシュノードは、その構成を、構成内の他のメモリキャッシュノードに配信しようとし得る。このようにして、メモリキャッシュノードは、構成を各メモリキャッシュノードに伝搬するために、ピアツーピア通信を使用して動作する。一実施形態では、キャッシュクラスタ内のメモリキャッシュノードは、キャッシュクラスタに対する変更がメモリキャッシュノード自体によって監視されるように、キャッシュクラスタ内のノードを追跡し得る。メモリキャッシュノードの追加もしくは除去に気が付くか、または追加もしくは除去の対象である、メモリキャッシュノードは、他のメモリキャッシュノードに配信するために新しい構成を作成し得る。
クライアントドライバという用語の使用は、必ずしも、ハードウェアを直接サポートするソフトウェアを指さないことが認識されるべきである。クライアントドライバは、アプリケーションと分散キャッシュクラスタとの間の通信を少なくとも管理するコンピューティング資源によって実行されるコードである。いくつかの実施形態では、これはライブラ
リによって達成される。例えば、開発者は、図6に関して参照して説明した段階を実行するためにライブラリ内の関数を呼出し得る。
リによって達成される。例えば、開発者は、図6に関して参照して説明した段階を実行するためにライブラリ内の関数を呼出し得る。
メモリキャッシュノードという用語の使用は、前述の特定の例のみでなくそれ以上を包含する幅広い用語として使用されることが認識されるべきである。他のキャッシュタイプがこの用途に含まれる。メモリキャッシュノードの他の例は、永続的なキャッシュシステムおよびディスクキャッシュシステムを含む。一実施形態では、永続的なキャッシュシステムは、キャッシュ状態がそのキャッシュを失うのを回避するために保存されるように、使用される。別の実施形態では、ディスクキャッシュシステムが使用され得る。
図11は、少なくとも1つの実施形態に従い、管理されたキャッシュ取得においてノード位置を表すために使用され得るマッピング1100の実例を示す。このプロセスは、アプリケーション202、クライアントドライバ204、構成エンドポイント206およびメモリキャッシュノード210を含む、図2で見られるような、コンピューティング資源によって達成され得る。可能なハッシュの範囲が、円1102によって表され得る。角度の違いがノード間の同様の空間をグラフで示し得るが、任意の数のハッシュが角度の範囲内に含まれ得る。例えば、一実施形態では、何千ものハッシュが円のごく一部内に含まれ得るが、別の実施形態では、円の第2の部分内にはいかなるハッシュも含まれていない可能性がある。
鍵Z(1110)、Y(1112)、X(1114)およびW(1116)は、例えば、円1102上に示される、角度1126、1130、1132および1134などの、基準角度1101から測定されたキャッシュ角度に対応する。鍵は、対応するキャッシュ角度を返すハッシュ関数に入力され得る。メモリキャッシュノードは、円1102に沿った少なくとも1つのキャッシュ角度を割り当てられ得る。より大きなメモリキャッシュノードにはより大きなキャッシュ角度が割り当てられ、それは、円1102に対するより大きな範囲を供与し得る。ハッシュの数は角度ごとに異なり得ることを理解されたい。例えば、メモリキャッシュノードAに対するメモリキャッシュノード割当ては、キャッシュ角度1104およびキャッシュ角度1106を含む。鍵に対応するキャッシュ角度から円の回りを時計回りに移動して、最初に遭遇したメモリキャッシュノードに鍵が割り当てられる。例えば、鍵Z(1110)のハッシュから決定されたキャッシュ角度1130は、時計回りに(1138)メモリキャッシュノードAのキャッシュ角度割当て1(1104)に進められる。
図11では、キャッシュ角度が基準角度1101から時計回りに測定されるように示されている。例えば、キャッシュ角度1130は、基準角度から測定されるとき、キャッシュ角度1126より小さい角度を有し得る。どのメモリキャッシュノードが鍵に対して責任を負うかを判定するために、鍵はまず、キャッシュ角度を判断するためにハッシュ関数を通じて処理される。キャッシュ角度は次いで、第1のメモリキャッシュノード割当てが生じるまで時計回りに進められ得る。例えば、鍵X 1114は、図示されたキャッシュ角度1126に解決される。キャッシュ角度は次いで、第1のメモリキャッシュノード割当てが、メモリキャッシュノードAに対する割当て番号1であるキャッシュ角度1104で生じるまで、線1124に沿って時計回りに掃引される。従って、鍵Xは、メモリキャッシュノードAに割り当てられる。同様に、鍵Z(1110)のキャッシュ角度が、メモリキャッシュノードAの割当て1であるキャッシュ角度1104に掃引される(1138)。同じ理由から、鍵Y 1112が、キャッシュ角度1106の割当てへの掃引(sweep)1136のために、メモリキャッシュノードA、割当て2(1106)に割り当てられる。鍵W 1116は、掃引1140が時計回りに、割当て1、メモリキャッシュノードBに割り当てられたキャッシュ角度1108の割当てに到着するので、メモリキャッシュノードBに割り当てられる。
メモリキャッシュノード割当ては、いくつかの異なる方法で達成され得る。一実施形態では、クライアントドライバは、メモリキャッシュノードをマッピング内に割り当てるように構成されたコードを含む。かかる実施形態では、クライアントは、「ホット」であり、そのため1つ以上の要求の負荷を移すために追加のノードを必要とするマッピング上の角度を知っている可能性がある。別の実施形態では、管理システムが、クライアントドライバがキャッシュ角度を割り当てるのを支援し得る。例えば、管理システムは、鍵のアクセスを監視して、メモリキャッシュノード上のサーバー負荷を削減するために、割当ての最適な配置を判断する。管理システムは、「ヒント」としてクライアントドライバに提供し得る追加されたノードに加えて、キャッシュクラスタ一般の1つ以上の側面を知っている可能性がある。
別の実施形態では、1つ以上のクライアントは、メモリキャッシュノードの利用を監視する。必要であれば、クライアントは、キャッシュクラスタに追加するために新しいメモリキャッシュノードのプロビジョニングを要求し得る。例えば、クライアントは、メモリキャッシュノードからの応答の待ち時間が増加して許容可能な閾値を上回っていると判断し得る。別の例として、クライアントは、プロトコル拡張を使用するか、またはアクセスログをレビューして、メモリキャッシュノードに問い合わせ得、クライアントは、1つ以上の鍵が閾値を上回る頻度でアクセスされていると判断する。クライアントは次いで、プロビジョニングシステムが新しいメモリキャッシュノードをプロビジョニングすることを要求し得る。クライアントは次いで、メモリキャッシュノードに1つ以上のキャッシュ角度を割り当て得る。
図12に示すように、一例では、メモリキャッシュコードCが図11に示すキャッシュクラスタに追加される。メモリキャッシュノードCは、3つのキャッシュ角度、すなわちキャッシュ角度割当て1(1118)、キャッシュ角度割当て2(1120)およびキャッシュ角度割当て3(1122)をサポートすることが可能である。3つのキャッシュ角度をサポートするこの能力は、メモリキャッシュノードCのサイズ、処理能力および/または配置に起因し得る。さらに、図示するように、クラスタ内のノードは、それらの間の角距離の観点から、必ずしも互いに等距離ではない可能性がある。いくつかのノードは、ノードによってサービスされる鍵空間に関連した様々な要因に起因して、(図11〜図12の表現における角距離の観点から)他よりも互いに近接している可能性がある。図示した例では、鍵X 1114および鍵Z 1110は、頻繁にアクセスされる「ホット」な(すなわち、「ホット」として指定された範囲内の頻度でアクセスされる)鍵であり得、従って、キャッシュ角度1104の利用にメモリキャッシュノードAの高い利用頻度に対して責任を持たせる。管理システムは、新しいメモリキャッシュノードCにキャッシュ角度割当て2(1120)を受けさせ得る。キャッシュ角度1120の新しい割当てに起因して、鍵X 1114はここで、ライン1128に沿ったキャッシュ角度の掃引が、メモリキャッシュノードC、割当て2に割り当てられるキャッシュ角度1120となるので、メモリキャッシュノードCによって対応され得る。鍵Z 1110は、キャッシュ角度1104の割当てに起因してメモリキャッシュノードAに留まり得る。
別の例では、鍵W 1116のアクセス履歴は、鍵W 1116が2つ以上のメモリキャッシュノードによって対応されるべきものであり得る。鍵空間のこの複製は、負荷、基本的なキャッシュされた値の計算の困難さ、または他の複製の必要性に起因し得る。図12に示すように、メモリキャッシュノードC、割当て1(1118)は、メモリキャッシュノードB、割当て1(1108)のキャッシュ角度割当て1108と同じキャッシュ角度割当て1118に割り当てられている。従って、メモリキャッシュノードBおよびメモリキャッシュノードCは、同じ鍵空間に対する責任を共有する。いくつかの実施形態では、鍵空間の一部のみが複製されるとして知られている。
さらに別の例では、管理システムは、メモリキャッシュノードB、割当て2に割り当てられたキャッシュ角度1105によって包含される鍵空間がさらに小さくなるようにも決定し得る。メモリキャッシュノードCに対するキャッシュ角度1122割当て3が、割り当てられたキャッシュ角度1105と1106との間に追加される。図12で認められ得るように、キャッシュ角度1105と1122との間の範囲の責任は、対称的である必要はない。いくつかの場合には、メモリキャッシュノードCの範囲は、メモリキャッシュノードAの範囲より狭い可能性があるが、より頻繁にアクセスされ得る。アクセスの範囲および頻度などの、考慮事項が、キャッシュ角度割当ての割当てを判断するために使用され得る。前述の実施形態の各々では、クライアントドライバは、ノードの位置の判断を管理し得、そのため、管理システムは、判定の際にクライアントドライバによって使用され得る情報を提供し得ることが認識されるべきである。
メモリキャッシュ角度割当ては、3つ以下の割当ての観点から説明されてきたが、実際の使用は、数百、数千、数百万以上のキャッシュ割り当てを含め、もっと多い可能性があることが認識されるべきである。少ない割当てが示されているのは、説明を簡略化するためである。
メモリキャッシュノードが本開示の様々な態様の説明のために使用されているが、説明する構造およびプロセスは、コンピューティング資源の記憶ノードおよびクラスタ一般にも、より幅広く適用され得ることが認識されるべきである。例えば、記憶ノードは、メモリキャッシュノード、データベースおよびリードレプリカ(read-replica)を含み得る。一実施形態では、ノードのクラスタのメンバーシップ情報が、ノードのクライアントと共有される。例えば、プロセスおよび構造がデータベーススケーリングで使用され得る。リードレプリカの構成が、データベースサーバー上の構成空間内に格納され得る。データベースサーバーのクライアントは、前述したクライアント構成更新技術を使用して、リードレプリカからの構成を要求することにより、追加または除去などの、リードレプリカに対する変更を検出し得る。別の例では、プロセスおよび構造が、データベースクラスタリングで使用され得る。クラスタ構成は、クラスタの分散データストアを構成するデータと一緒にデータベース自体に格納され得、それはデータベースのクライアントによって取得され得る。これは、クライアント初期化がサーバー資源から切り離されるのを可能にする。
図13は、様々な実施形態に従った態様を実現するための環境例1300の態様を示す。理解され得るように、Webベースの環境が説明のために使用されるが、必要に応じて、様々な実施形態を実現するために異なる環境が使用され得る。環境は、電子クライアント装置1302を含み、それは、適切なネットワーク1304を経由した、要求、メッセージまたは情報の送受信、および装置のユーザーへの情報の返送を行うために動作可能な任意の適切な装置を含み得る。かかるクライアント装置の例は、パーソナルコンピュータ、携帯電話、携帯用メッセージ装置、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子書籍端末等を含む。ネットワークは、イントラネット、インターネット、移動体通信ネットワーク、ローカルエリアネットワークもしくは任意の他のかかるネットワークまたはその組合せを含む、任意の適切なネットワークを含むことができる。
かかるシステムに対して使用される構成要素は、選択されたネットワークおよび/または環境のタイプに少なくとも一部依存し得る。かかるネットワークを経由した通信のためのプロトコルおよび構成要素は周知であり、本明細書では詳細に説明されない。ネットワークを経由した通信は、有線または無線接続およびその組合せによって可能にできる。この例では、要求を受信し、それに応答してコンテンツをサービスするためのWebサーバー1306を含むので、ネットワークは、インターネットを含むが、同業者に明らかであり得るように、他のネットワークに対して、同様の目的をサービスする代替装置が使用されるであろう。
かかるシステムに対して使用される構成要素は、選択されたネットワークおよび/または環境のタイプに少なくとも一部依存し得る。かかるネットワークを経由した通信のためのプロトコルおよび構成要素は周知であり、本明細書では詳細に説明されない。ネットワークを経由した通信は、有線または無線接続およびその組合せによって可能にできる。この例では、要求を受信し、それに応答してコンテンツをサービスするためのWebサーバー1306を含むので、ネットワークは、インターネットを含むが、同業者に明らかであり得るように、他のネットワークに対して、同様の目的をサービスする代替装置が使用されるであろう。
例示的な環境は、少なくとも1つのアプリケーションサーバー1308およびデータストア1310を含む。いくつかのアプリケーションサーバー、層、または他の要素、プロセッサもしくは構成要素があり得、それらは連鎖されるか、もしくは別の方法で構成され得、それらは適切なデータストアからのデータの取得などのタスクを実行するために対話できることが理解されるべきである。本明細書では、「データストア」という用語は、データの格納、アクセスおよび取得が可能な任意の装置または装置の組合せを指し、それは、任意の標準、分散またはクラスタ環境におけるデータサーバー、データベース、データ記憶装置およびデータ記憶媒体の任意の組合せおよび数を含み得る。アプリケーションサーバーは、必要に応じて、クライアント装置のために1つ以上のアプリケーションの態様を実行するために、データストアと統合するための任意の適切なハードウェアおよびソフトウェアを含み得、アプリケーションのためのデータアクセスおよびビジネス論理の大部分を処理する。アプリケーションサーバーは、データストアと連携してアクセス制御サービスを提供し、ユーザーに転送されるテキスト、グラフィックス、オーディオおよび/またはビデオなどのコンテンツを生成することが可能であり、それらは、HTML、XMLまたはこの例において適切な別の構造化言語の形でWebサーバーによりユーザーにサービスされ得る。全ての要求および応答の処理、ならびにクライアント装置1302とアプリケーションサーバー1308との間でのコンテンツの配信が、Webサーバーによって処理できる。本明細書で説明する構造化コードは、本明細書の他の場所で説明するように、任意の適切な装置またはホストマシン上で実行できるので、Webおよびアプリケーションサーバーは必須ではなく、構成要素例に過ぎないことが理解されるべきである。
データストア1310は、特定の態様に関連したデータを格納するための、いくつかの別個のデータテーブル、データベースまたは他のデータ記憶機構および媒体を含むことができる。例えば、図示するデータストアは、生産データ1312およびユーザー情報1316を格納するための機構を含み、それは、生産側のためにコンテンツをサービスするために使用できる。ログデータ1314を格納するための機構を含むためのデータストアも示され、それは、報告、分析または他のかかる目的のために使用できる。ページ画像情報のためおよび正しい情報にアクセスするためなど、データストアに格納される必要があり得る多数の他の態様があり得、それは、データストア1310内の適切であるとして前述した機構のいずれか、または追加の機構に格納できることが理解されるべきである。データストア1310は、それに関連付けられた論理を通して、アプリケーションサーバー1308から命令を受信し、それに応答して、データを取得、更新または別の方法で処理するために動作可能である。一例では、ユーザーは、ある特定のタイプの項目に対する検索要求を投入し得る。この場合、データストアは、ユーザーの識別を検証するためにユーザー情報にアクセスし得、そのタイプの項目に関する情報を取得するためにカタログ詳細情報にアクセスできる。情報は次いで、ユーザーがユーザー装置1302上のブラウザで表示可能なWebページ上にリストする結果内などで、ユーザーに返され得る。興味がある特定の項目に対する情報が、ブラウザの専用ページまたはウィンドウ内に表示できる。
各サーバーは、通常、そのサーバーの一般的な管理および動作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、通常、サーバーのプロセッサによって実行される場合に、サーバーがその意図した機能を実行するのを可能にする命令を格納するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読取り専用メモリなど)を含む。サーバーのオペレーティングシステムおよび一般的な機能のための適切な実装形態は既知であるか、または市販されており、当業者によって、特に、本明細書の開示を考慮すると、容易に実装される。
一実施形態では、環境は、1つ以上のコンピュータネットワークまたは直接接続を使用する、通信リンクを経由して相互接続される、いくつかのコンピュータシステムおよび構
成要素を利用する分散コンピューティング環境である。しかし、かかるシステムは、図13に示されるよりも少ないか、または多い構成要素を有するシステム内でも同様にうまく動作できることが当業者には理解されるであろう。従って、図13に示すシステム1300の表現は、本質的に例示として考えられるべきであり、本開示の範囲を制限するものではない。
成要素を利用する分散コンピューティング環境である。しかし、かかるシステムは、図13に示されるよりも少ないか、または多い構成要素を有するシステム内でも同様にうまく動作できることが当業者には理解されるであろう。従って、図13に示すシステム1300の表現は、本質的に例示として考えられるべきであり、本開示の範囲を制限するものではない。
様々な実施形態はさらに、幅広い種類のオペレーティング環境内で実現でき、それは、いくつかの場合には、任意の数のアプリケーションを動作するために使用できる1つ以上のユーザーコンピュータ、コンピューティング装置または処理装置を含むことができる。ユーザーまたはクライアント装置は、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどの、任意の数の汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行して、いくつかのネットワーキングおよびメッセージングプロトコルをサポートできる、移動体通信、無線および携帯用機器を含むことができる。かかるシステムは、様々な市販のオペレーティングシステムならびに開発およびデータベース管理などのための他の既知のアプリケーションのいずれかを実行するいくつかのワークステーションも含むことができる。これらの装置は、ネットワークを経由して通信可能な、ダミー端末、シンクライアント、ゲーム機および他の装置などの、他の電子装置も含むことができる。
ほとんどの実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFSおよびAppleTalk(登録商標)などの様々な商用プロトコルのいずれかを使用して通信をサポートするための、当業者に良く知られているような少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、赤外線ネットワーク、無線ネットワークおよびその任意の組合せであり得る。
Webサーバーを利用する実施形態では、Webサーバーは、HTTPサーバー、FTPサーバー、CGIサーバー、データサーバー、Java(登録商標)サーバーおよびビジネスアプリケーションサーバーを含む、様々なサーバーまたは中間層アプリケーションのいずれかを実行できる。サーバー(複数可)は、Java(登録商標)、C、C#またはC++などの任意のプログラミング言語、Perl、PythonまたはTCLなどの任意のスクリプト言語、ならびにその組合せで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る、1つ以上のWebアプリケーションの実行などにより、ユーザー装置からの要求に応答してプログラムまたはスクリプトを実行することも可能であり得る。サーバー(複数可)は、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)およびIBM(登録商標)から市販されているものを含むがそれらに限定されず、データベースサーバーも含み得る。
環境は、前述のように、様々なデータストアならびに他のメモリおよび記憶媒体を含むことができる。これらは、コンピュータの1つ以上にローカルである(および/またはその中に常駐する)か、またはコンピュータの一部もしくは全部からネットワークを経由してリモートである、記憶媒体上など、様々な位置に存在できる。実施形態の特定の組では、情報は、当業者に良く知られている、ストレージエリアネットワーク(「SAN」)内に常駐し得る。同様に、コンピュータ、サーバーまたは他のネットワーク装置に起因する機能を実行するための任意の必要なファイルが、必要に応じて、ローカルおよび/またはリモートに格納され得る。システムがコンピュータ化装置を含む場合、各かかる装置は、バスを介して電子的に結合され得るハードウェア要素を含むことができ、その要素は、例えば、少なくとも1つの中央処理装置(CPU)、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド)、および少な
くとも1つの出力装置(例えば、ディスプレイ装置、プリンタまたはスピーカー)を含む。かかるシステムは、例えば、ディスクドライブ、光記憶装置、およびランダムアクセスメモリ(「RAM」)または読取り専用メモリ(「ROM」)などのソリッドステート記憶装置、ならびに取外し可能媒体装置、メモリカード、フラッシュカード、などの1つ以上の記憶装置も含み得る。
くとも1つの出力装置(例えば、ディスプレイ装置、プリンタまたはスピーカー)を含む。かかるシステムは、例えば、ディスクドライブ、光記憶装置、およびランダムアクセスメモリ(「RAM」)または読取り専用メモリ(「ROM」)などのソリッドステート記憶装置、ならびに取外し可能媒体装置、メモリカード、フラッシュカード、などの1つ以上の記憶装置も含み得る。
かかる装置は、前述のように、コンピュータ可読記憶媒体読取り装置、通信装置(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信装置など)、および作業メモリも含むことができる。コンピュータ可読記憶媒体読取り装置は、リモート、ローカル、固定および/もしくは取り外し可能記憶装置ならびに、一時的および/もしくはさらに永続的にコンピュータ可読情報を包含、格納、伝送および取得するための記憶媒体を表す、コンピュータ可読記憶媒体と接続できるか、またはそれを受け取るように構成できる。システムおよび様々な装置は、通常、オペレーティングシステムおよび、クライアントアプリケーションまたはWebブラウザなどの、アプリケーションプログラムを含む、少なくとも1つの作業メモリ装置内に配置された、いくつかのソフトウェアアプリケーション、モジュール、サービスまたは他の要素も含む。代替実施形態は、前述したものからの多数の変形形態を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアも使用され得、かつ/または特定の要素がハードウェア、ソフトウェア(アプレットなどの、移植可能なソフトウェアを含む)もしくは両方で実装され得る。さらに、ネットワーク入力/出力装置などの他のコンピューティング装置に対する接続が採用され得る。
コードまたはコードの部分を含むための記憶媒体およびコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールもしくは他のデータなどの情報の格納および/または伝送のための任意の方法もしくは技術で実現される、揮発性および不揮発性、取り外し可能および固定型の媒体などであるがそれらに制限されない、記憶媒体および通信媒体を含む、当技術分野で既知であるか、使用される任意の適切な媒体を含むことができ、これには、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD‐ROM、デジタル多用途ディスク(DVD)もしくは他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置または、所望の情報を格納するために使用でき、かつシステム装置によってアクセスできる任意の他の媒体を含む。本明細書で提供する開示および教示に基づき、当業者は、様々な実施形態を実現するための他の手段および/または方法を理解するであろう。
前述は、以下の付記項の観点から、より良く理解され得る。
1.分散メモリキャッシュシステムを管理するためのコンピュータ実装方法であり:実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、キャッシュクラスタを形成する1つ以上のメモリキャッシュノードの組を監視することであって、1つ以上のメモリキャッシュノードの組の各メモリキャッシュノードがキャッシュクラスタ内に含まれるデータの一部に対するストレージを提供し、キャッシュクラスタの少なくとも1つのメモリキャッシュノードが1つ以上のメモリキャッシュノードの組からのデータにアクセスするための構成を含む、キャッシュクラスタを形成する1つ以上のメモリキャッシュノードの組を監視すること;新しいメモリキャッシュノードがキャッシュクラスタに追加されると判定すること;新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすること;および少なくとも1つのメモリキャッシュノード内の構成を、新しいメモリキャッシュノードに少なくとも一部基づき、更新することを含む。
2.1つ以上のメモリキャッシュノードの組を監視することが、キャッシュクラスタから故障したメモリキャッシュノードの障害を検出することをさらに含み;新しいメモリキ
ャッシュをプロビジョニングすることが、交換メモリキャッシュノードを故障したメモリキャッシュノードの代わりにプロビジョニングさせることをさらに含み;かつ、少なくとも1つのメモリキャッシュノード内の構成を更新することが、故障したメモリキャッシュノードの交換メモリキャッシュノードとの交換に少なくとも一部基づき、少なくとも1つのメモリキャッシュノード内の構成を更新することをさらに含む、付記項1に記載のコンピュータ実装方法。
ャッシュをプロビジョニングすることが、交換メモリキャッシュノードを故障したメモリキャッシュノードの代わりにプロビジョニングさせることをさらに含み;かつ、少なくとも1つのメモリキャッシュノード内の構成を更新することが、故障したメモリキャッシュノードの交換メモリキャッシュノードとの交換に少なくとも一部基づき、少なくとも1つのメモリキャッシュノード内の構成を更新することをさらに含む、付記項1に記載のコンピュータ実装方法。
3.1つ以上のメモリキャッシュノードの組を監視することが、追加のキャッシング能力の必要性を示している指標をキャッシュクラスタから検出することをさらに含み;新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすることが、新しいメモリキャッシュノードを、新しいメモリキャッシュノードよりも少ない資源を有する交換されるメモリキャッシュノードの代わりにプロビジョニングすることをさらに含み;かつ、少なくとも1つのメモリキャッシュノード内の構成を更新することが、交換されるメモリキャッシュノードの新しいメモリキャッシュノードとの交換に少なくとも一部基づき、少なくとも1つのメモリキャッシュノード内の構成を更新することをさらに含む、付記項1に記載のコンピュータ実装方法。
4.構成エンドポイントのエイリアスを、新しいメモリキャッシュノードに少なくとも一部基づき、更新することをさらに含む、付記項1に記載のコンピュータ実装方法。
5.新しいメモリキャッシュノードをキャッシュクラスタにプロビジョニングすることが:新しいメモリキャッシュノードのプロビジョニング;メモリキャッシュノードの1つ以上のメモリキャッシュノードの組への追加;新しい構成の判定;および1つ以上のメモリキャッシュノードの組の各々内の構成の更新、の動作を含むワークフローを構築することをさらに含む、付記項1に記載のコンピュータ実装方法。
6.サービスを管理するためのコンピュータ実装方法であり:実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、1つ以上の記憶ノードを含むクラスタを監視することであって、1つ以上の記憶ノードの各記憶ノードが分散データストア内に含まれるデータの一部に対するストレージを提供する、1つ以上の記憶ノードを含むクラスタを監視すること;少なくとも1つの記憶ノードがクラスタ内のデータにアクセスするために構成を格納すること;および構成が更新されているという判定の結果として、少なくとも1つの記憶ノードの構成を更新することを含む。
7.構成を更新することが、クラスタに対する変更に少なくとも一部基づき、構成を更新することをさらに含む、付記項6に記載のコンピュータ実装方法。
8.記憶ノードを、記憶ノードのプロビジョニング解除;および分散データストア内に含まれるデータの少なくとも一部の、クラスタ内の残りの記憶ノードの少なくとも複数間での再割り当て、の動作を通してクラスタから除去することにより、クラスタを修正することをさらに含む、付記項7に記載のコンピュータ実装方法。
9.新しい記憶ノードを、新しい記憶ノードのプロビジョニング;および分散データストア内に含まれるデータの少なくとも一部の、クラスタ内の記憶ノードの少なくとも複数間での再割り当て、の動作を通してクラスタに追加することにより、クラスタを修正することをさらに含む、付記項7に記載のコンピュータ実装方法。
10.クラスタ内の第1の記憶ノードを、新しい記憶ノードのプロビジョニング;第1の記憶ノードのプロビジョニング解除;および第1の記憶ノードからのデータの少なくとも一部の新しい記憶ノードへの割当て、の動作を通して交換することにより、クラスタを
修正することをさらに含む、付記項7に記載のコンピュータ実装方法。
修正することをさらに含む、付記項7に記載のコンピュータ実装方法。
11.クラスタから記憶ノードの特性を変更することにより、クラスタを修正することをさらに含む、付記項7に記載のコンピュータ実装方法。
12.記憶ノードの特性を変更することが、記憶ノードの記憶サイズを修正することをさらに含む、付記項11に記載のコンピュータ実装方法。
13.キャッシュサービスを管理するためのコンピュータシステムであり、当該コンピュータシステムは1つ以上のプロセッサおよび、1つ以上のプロセッサによって実行される場合に、1つ以上のプロセッサに少なくとも:キャッシュクラスタにわたって割り当てられた分散データキャッシュに対するストレージを提供し、かつキャッシュクラスタ内のデータにアクセスするための構成のためのストレージを提供するキャッシュクラスタを形成する1つ以上のメモリキャッシュノード;ならびにメモリキャッシュノードを監視およびプロビジョニングする管理システムであって、管理システムによって生じたキャッシュクラスタに対する変更に少なくとも一部基づきキャッシュクラスタ内の構成を更新する、管理システム、を実現させる、実行可能命令を含むメモリを有する、1つ以上のコンピューティング資源を含む。
14.キャッシュクラスタにわたって割り当てられる分散データキャッシュに対してデータを提供するデータストアをさらに含む、付記項13に記載のコンピュータシステム。
15.データストアがリレーショナルデータベースであり、分散データキャッシュがリレーショナルデータベースからのクエリーに対する応答を含む、付記項14に記載のコンピュータシステム。
16.キャッシュクラスタからのメモリキャッシュノードに対するエイリアスを提供し、エイリアス更新を管理システムから受信する構成エンドポイントをさらに含む、付記項13に記載のコンピュータシステム。
17.構成エンドポイントが、メモリキャッシュノードに対するエイリアスを解決するために使用できる静的アドレスを有する、付記項16に記載のコンピュータシステム。
18.キャッシュクラスタおよび管理システムが、その上で実行するために割り当てられたコンピューティング資源である、プログラム実行環境をさらに含む、付記項13に記載のコンピュータシステム。
19.実行可能命令がその上にまとめて格納されている1つ以上のコンピュータ可読記憶媒体であって、実行可能命令は、コンピュータシステムの1つ以上のプロセッサによって実行される場合に、コンピュータシステムに少なくとも:1つ以上のメモリキャッシュノードの障害の指標に関してキャッシュクラスタを監視することであって、メモリキャッシュノードの少なくとも複数が分散データキャッシュ内に含まれるデータの一部のためのストレージを提供する、キャッシュクラスタを監視すること;キャッシュクラスタからのメモリキャッシュノードの指標が障害閾値を越えていると判定すること;メモリキャッシュノードをキャッシュクラスタから除去させること;およびキャッシュクラスタからの少なくとも1つのメモリキャッシュノードによって格納された構成を、除去されたメモリキャッシュノードに少なくとも一部基づき更新することを行わせる。
20.命令が、実行時に、コンピュータシステムに少なくとも:新しいメモリキャッシュノードをプロビジョニングさせること;およびキャッシュクラスタからの少なくとも1
つのメモリキャッシュノード内の構成を、プロビジョニングされた新しいメモリキャッシュノードに少なくとも一部基づき、更新することを行わせる命令をさらに含む、付記項19に記載のコンピュータ可読記憶媒体。
つのメモリキャッシュノード内の構成を、プロビジョニングされた新しいメモリキャッシュノードに少なくとも一部基づき、更新することを行わせる命令をさらに含む、付記項19に記載のコンピュータ可読記憶媒体。
21.キャッシュクラスタからの少なくとも1つのメモリキャッシュノード内の構成を更新することが、新しいノードが除去されたメモリキャッシュノードを置き換えるように、構成を更新することを含む、付記項20に記載のコンピュータ可読記憶媒体。
22.構成が、キャッシュクラスタへの接続情報を含む、付記項19に記載のコンピュータ可読記憶媒体。
23.キャッシュクラスタからの少なくとも1つのメモリキャッシュノード内の構成を更新することが、メモリキャッシュノードにピアツーピア更新を使用して構成を伝搬させるように、メモリキャッシュノードを構成で更新することをさらに含む、付記項19に記載のコンピュータ可読記憶媒体。
24.メモリキャッシュノードに構成を伝搬させることが、構成エンドポイントを、1つ以上のメモリキャッシュエンドポイントの組内のメモリキャッシュエンドポイントに対する新しいエイリアスで更新することをさらに含む、付記項23に記載のコンピュータ可読記憶媒体。
25.少なくとも1つのメモリキャッシュノードによって格納された構成を更新することが、一貫性のあるハッシュ方法で使用するために、メモリキャッシュノードの1つ以上の割当ての指標を管理システムから受信することをさらに含む、付記項19に記載のコンピュータ可読記憶媒体。
明細書および図は、従って、制限的な意味ではなく例示的な意味で考えられるべきである。しかし、請求項に規定されるように、本発明のより幅広い精神および範囲から逸脱することなく、様々な修正および変更がそれに対して行われ得ることが明白であろう。
他の変形形態は本開示の精神の範囲内である。従って、開示する技術は、様々な実施形態および代替構造を受け入れる余地があるが、そのある例示的な実施形態が図に示されて、上で詳細に説明されている。しかし、本発明を開示する特定の形式または複数の形式に制限する意図はなく、それとは逆に、意図は、添付の請求項で定義されるように、本発明の精神および範囲内に含まれる、全ての修正、代替構造および均等物を包含することである、ことが理解されるべきである。
開示する実施形態を説明するコンテキストにおける(特に、以下の請求項のコンテキストにおける)「1つの(a)」、「1つの(an)」および「その(the)」という用語および同様の指示対象は、本明細書で別段の指示がないか、コンテキストによって明瞭に否定されない限り、単数および複数の両方を包含すると解釈される。「含む(comprising)」、「有する(having)」、「含む(including)」、および「含む(containing)」という用語は、特に断りのない限り、制約のない用語(すなわち、「含むが、それらに制限されない」ことを意味する)として解釈される。「接続された(connected)」という用語は、たとえ介在する何かがあっても、部分的もしくは全体的に含まれるか、取り付けられているか、または結合されていると解釈される。本明細書では値の範囲の列挙は、本明細書で別段の指示がない限り、範囲に含まれる各別個の値を個々に参照する簡単な方法として役立つことを単に意図し、各別個の値は、あたかも本明細書で個々に列挙されたかのように、本明細書に組み込まれる。本明細書で説明する全ての方法は、本明細書で別段の指示がないか、またはコンテキストによって明瞭に否定されない限り、任意の適切な順序で
実行できる。本明細書で提供する一部もしくは全部の例、または例示を示す表現(例えば、「など(such as)」)は、単に本発明の実施形態の理解をさらに容易にすることを意図し、別に主張されていない限り、本発明の範囲に制限を課さない。本明細書におけるどの表現も、どの主張されていない要素を本発明の実施に本質的であるとして示すと解釈されるべきでない。
実行できる。本明細書で提供する一部もしくは全部の例、または例示を示す表現(例えば、「など(such as)」)は、単に本発明の実施形態の理解をさらに容易にすることを意図し、別に主張されていない限り、本発明の範囲に制限を課さない。本明細書におけるどの表現も、どの主張されていない要素を本発明の実施に本質的であるとして示すと解釈されるべきでない。
本開示を実施するために本発明人に知られている最良の形態を含め、本開示の好ましい実施形態が本明細書で説明される。それらの好ましい実施形態の変形形態が、前述の説明を読むと、当業者に明らかになり得る。本発明人は、当業者がかかる変形形態を必要に応じて採用することを期待し、本発明人は、本発明が本明細書で具体的に説明されるのとは別の方法で実施されることを意図する。それに応じて、本発明は、適用法で容認されるとおり、本明細書に添付の請求項で列挙された主題の全ての修正および均等物を含む。その上、前述した要素の、その全ての考えられる変形形態での任意の組合せが、本明細書で別段の指示がないか、またはコンテキストによって明瞭に否定されない限り、本発明によって包含される。
本明細書で列挙された、出版物、特許出願および特許を含む全ての参照は、あたかも各参照が、参照により組み込まれることを個々に具体的に示し、本明細書に全体として明記されているかのように同じ程度まで、参照により本明細書に組み込まれる。
Claims (7)
- 分散メモリキャッシュシステムを管理するための管理システムにより実行される方法であって、前記方法は、
複数のメモリキャッシュノードの分割されたメモリ空間に格納された構成に関連する前記メモリキャッシュノードに対するエイリアスを提供することと、
前記複数のメモリキャッシュノードに対するプロビジョニングもしくはプロビジョニングの解除、又は前記複数のメモリキャッシュノードとは別の新たなメモリキャッシュノードの追加もしくは前記複数のメモリキャッシュノードの少なくとも1つのメモリキャッシュノードの取り除きにより前記構成の変更について監視することと、
前記構成の変更を監視したことに基づいて、前記メモリキャッシュノードに対するエイリアスを更新すること、
を含む管理システムにより実行される方法。 - 前記構成の変更について監視することが、前記メモリキャッシュノードの障害を検出することを含み、
前記メモリキャッシュノードの障害の検出に基づいて、前記エイリアスを更新する
請求項1のコンピュータに実行される方法。 - 前記構成の変更について監視することが、追加のキャッシング能力の必要性を示す指標を検出することを含み、
前記キャッシング能力の必要性を示す指標に基づいて、前記エイリアスを更新する
請求項1のコンピュータに実行される方法。 - コンピューティング資源のサービスを管理するための管理システムにより実行される方法であって、
複数の記憶ノードの分割されたメモリ空間に格納された構成に関連するエイリアスを提供することと、
前記複数の記憶ノードに対するプロビジョニングもしくはプロビジョニングの解除、又は前記複数の記憶ノードとは別の新たな記憶ノードの追加もしくは前記複数の記憶ノードの少なくとも1つの記憶ノードの取り除きにより前記構成の変更について監視することと、
前記構成の変更を監視したことに基づいて、前記記憶ノードに対するエイリアスを更新することと、
を含むコンピュータに実行される方法。 - 前記複数の記憶ノードの少なくとも1つの記憶ノードの取り除きの際には、
前記取り除きの記憶ノードのプロビジョニング解除と、前記少なくとも1つの記憶ノードを取り除いた残りの前記記憶ノード間での再割り当てとの動作を行う、請求項4のコンピュータに実行される方法。 - 前記複数の記憶ノードとは別の新たな記憶ノードの追加の際には、
前記新たな記憶ノードのプロビジョニングと、前記新たな記憶ノードを含む複数の記憶ノードの間での再割り当てとの動作を行う、請求項4のコンピュータに実行される方法。 - 前記複数の記憶ノードとは別の新たな記憶ノードの追加及び前記複数の記憶ノードの少なくとも1つの記憶ノードの取り除きの際には、
前記新たな記憶ノードのプロビジョニングと、前記前記取り除きの記憶ノードのプロビジョニング解除と、前記新たな記憶ノードを含む複数の記憶ノードの間での再割り当て
とを行う、請求項4のコンピュータに実行される方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/685,615 US9847907B2 (en) | 2012-11-26 | 2012-11-26 | Distributed caching cluster management |
US13/685,615 | 2012-11-26 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017147460A Division JP2017208128A (ja) | 2012-11-26 | 2017-07-31 | 分散キャッシュクラスタ管理 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019212336A true JP2019212336A (ja) | 2019-12-12 |
Family
ID=50774264
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015544115A Active JP6607783B2 (ja) | 2012-11-26 | 2013-11-20 | 分散キャッシュクラスタ管理 |
JP2017147460A Pending JP2017208128A (ja) | 2012-11-26 | 2017-07-31 | 分散キャッシュクラスタ管理 |
JP2019163484A Pending JP2019212336A (ja) | 2012-11-26 | 2019-09-09 | 分散キャッシュクラスタ管理 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015544115A Active JP6607783B2 (ja) | 2012-11-26 | 2013-11-20 | 分散キャッシュクラスタ管理 |
JP2017147460A Pending JP2017208128A (ja) | 2012-11-26 | 2017-07-31 | 分散キャッシュクラスタ管理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9847907B2 (ja) |
EP (1) | EP2923272B1 (ja) |
JP (3) | JP6607783B2 (ja) |
CN (1) | CN104823170B (ja) |
AU (1) | AU2013347972B2 (ja) |
CA (1) | CA2891339C (ja) |
SG (1) | SG11201503721VA (ja) |
WO (1) | WO2014081869A2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9602614B1 (en) | 2012-11-26 | 2017-03-21 | Amazon Technologies, Inc. | Distributed caching cluster client configuration |
GB2525773A (en) * | 2013-01-24 | 2015-11-04 | Hitachi Ltd | Environmental setting server, computer system, and environmental setting method |
KR102044023B1 (ko) * | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
US10419572B2 (en) * | 2013-08-06 | 2019-09-17 | Walmart Apollo, Llc | Caching system and method |
US10803015B2 (en) * | 2013-08-06 | 2020-10-13 | Walmart Apollo, Llc | Caching system and method |
US9576039B2 (en) | 2014-02-19 | 2017-02-21 | Snowflake Computing Inc. | Resource provisioning systems and methods |
CN105867837A (zh) * | 2015-12-02 | 2016-08-17 | 乐视体育文化产业发展(北京)有限公司 | 一种分布式高速缓存系统中的客户端配置更新方法、设备及系统 |
CN105871584A (zh) * | 2015-12-02 | 2016-08-17 | 乐视体育文化产业发展(北京)有限公司 | 一种键值对数据库中的客户端配置更新方法、设备及系统 |
JP6129290B1 (ja) | 2015-12-24 | 2017-05-17 | 財團法人工業技術研究院Industrial Technology Research Institute | 分散計算におけるアプリケーションパラメータ設定およびシステム仕様設定を推奨する方法およびシステム |
CN106936623A (zh) * | 2015-12-31 | 2017-07-07 | 五八同城信息技术有限公司 | 分布式缓存系统及缓存集群的管理方法 |
US10230809B2 (en) * | 2016-02-29 | 2019-03-12 | Intel Corporation | Managing replica caching in a distributed storage system |
JP6674099B2 (ja) * | 2016-06-10 | 2020-04-01 | 富士通株式会社 | 情報管理プログラム、情報管理方法、及び情報管理装置 |
US10503654B2 (en) | 2016-09-01 | 2019-12-10 | Intel Corporation | Selective caching of erasure coded fragments in a distributed storage system |
GB2555087A (en) * | 2016-10-11 | 2018-04-25 | Sage South Africa Pty Ltd | System and method for retrieving data from server computers |
US10873501B2 (en) * | 2016-12-09 | 2020-12-22 | Vmware, Inc. | Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment |
CN106844158A (zh) * | 2017-01-25 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种服务器节点状态的监测方法及装置 |
CN107943421B (zh) * | 2017-11-30 | 2021-04-20 | 成都华为技术有限公司 | 一种基于分布式存储系统的分区划分方法及装置 |
CN109413147B (zh) * | 2018-09-13 | 2021-09-21 | 深圳壹账通智能科技有限公司 | 服务节点的管理方法、装置、设备及计算机可读存储介质 |
US11321344B2 (en) * | 2019-09-20 | 2022-05-03 | Sap Se | Virtual database tables with updatable logical table pointers |
CN114691547B (zh) * | 2019-12-31 | 2023-05-12 | 华为云计算技术有限公司 | 部署实例的方法、实例管理节点、计算节点和计算设备 |
KR102202792B1 (ko) * | 2020-08-06 | 2021-01-15 | (주)시큐레이어 | 클러스터 기반 처리 시스템을 이용해 동종 및 이기종 데이터 소스에 대해 멀티 캐싱을 수행하는 방법 및 장치 |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996075A (en) * | 1995-11-02 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US6542991B1 (en) | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6606643B1 (en) * | 2000-01-04 | 2003-08-12 | International Business Machines Corporation | Method of automatically selecting a mirror server for web-based client-host interaction |
US7039694B2 (en) * | 2000-05-02 | 2006-05-02 | Sun Microsystems, Inc. | Cluster membership monitor |
JP2002132568A (ja) | 2000-10-30 | 2002-05-10 | Nec Corp | 顧客管理システム及び顧客管理方法 |
US7617292B2 (en) * | 2001-06-05 | 2009-11-10 | Silicon Graphics International | Multi-class heterogeneous clients in a clustered filesystem |
FI115358B (fi) * | 2001-11-05 | 2005-04-15 | Nokia Corp | Tilaton kuormanjako |
US7406473B1 (en) | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
US20030236800A1 (en) * | 2002-06-19 | 2003-12-25 | Goeltzenleuchter Courtney D. | Dynamic recovery system and method |
US7197632B2 (en) * | 2003-04-29 | 2007-03-27 | International Business Machines Corporation | Storage system and cluster maintenance |
US7376724B2 (en) * | 2003-05-30 | 2008-05-20 | Oracle International Corporation | Dynamic reconfiguration of nodes in a cluster file system |
US20050015471A1 (en) | 2003-07-18 | 2005-01-20 | Zhang Pu Paul | Secure cluster configuration data set transfer protocol |
US8601101B1 (en) * | 2004-06-28 | 2013-12-03 | Oracle America, Inc. | Cluster communications framework using peer-to-peer connections |
US7937455B2 (en) | 2004-07-28 | 2011-05-03 | Oracle International Corporation | Methods and systems for modifying nodes in a cluster environment |
US7409576B2 (en) | 2004-09-08 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | High-availability cluster with proactive maintenance |
US7673069B2 (en) | 2006-02-24 | 2010-03-02 | Microsoft Corporation | Strong routing consistency protocol in structured peer-to-peer overlays |
US8539056B2 (en) * | 2006-08-02 | 2013-09-17 | Emc Corporation | Systems and methods for configuring multiple network interfaces |
US8806045B2 (en) | 2006-09-01 | 2014-08-12 | Microsoft Corporation | Predictive popular content replication |
US20090006531A1 (en) | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Client request based load balancing |
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US8825834B2 (en) * | 2007-12-03 | 2014-09-02 | International Business Machines Corporation | Automated cluster member management based on node capabilities |
US8805949B2 (en) | 2008-01-16 | 2014-08-12 | Netapp, Inc. | System and method for populating a cache using behavioral adaptive policies |
US8548956B2 (en) | 2008-02-28 | 2013-10-01 | Mcafee, Inc. | Automated computing appliance cloning or migration |
KR101472936B1 (ko) * | 2008-04-30 | 2014-12-17 | 삼성전자주식회사 | 피투피 네트워크 시스템 및 그의 지역 기반 운용 방법 |
US8176256B2 (en) | 2008-06-12 | 2012-05-08 | Microsoft Corporation | Cache regions |
JP2010009448A (ja) | 2008-06-30 | 2010-01-14 | Nec Corp | 分散情報配置システム |
US8271652B2 (en) | 2008-07-24 | 2012-09-18 | Netapp, Inc. | Load-derived probability-based domain name service in a network storage cluster |
US8019946B2 (en) * | 2008-07-31 | 2011-09-13 | Samsung Electronics Co., Ltd. | Method and system for securing instruction caches using cache line locking |
WO2010014856A2 (en) | 2008-07-31 | 2010-02-04 | Tekelec | Methods, systems, and computer readable media for throttling traffic to an internet protocol (ip) network server using alias hostname identifiers assigned to the ip network server with a domain name system (dns) |
US8112585B2 (en) | 2009-04-30 | 2012-02-07 | Netapp, Inc. | Method and apparatus for dynamically switching cache policies |
CN101562543B (zh) * | 2009-05-25 | 2013-07-31 | 阿里巴巴集团控股有限公司 | 一种缓存数据的处理方法、处理系统和装置 |
US8914457B2 (en) | 2009-10-06 | 2014-12-16 | Red Hat, Inc. | Caching of nodes in cache cluster |
US8751533B1 (en) * | 2009-11-25 | 2014-06-10 | Netapp, Inc. | Method and system for transparently migrating storage objects between nodes in a clustered storage system |
US8612464B2 (en) | 2010-09-02 | 2013-12-17 | Red Hat, Inc. | Portable hash-based key location mechanism |
KR101211207B1 (ko) | 2010-09-07 | 2012-12-11 | 엔에이치엔(주) | 캐시 클라우드 구조를 이용한 캐시 시스템 및 캐싱 서비스 제공 방법 |
US8694821B2 (en) * | 2010-12-03 | 2014-04-08 | International Business Machines Corporation | Generation of standby images of applications |
US8904006B2 (en) | 2010-12-08 | 2014-12-02 | International Business Machines Corporation | In-flight block map for a clustered redirect-on-write filesystem |
KR101585146B1 (ko) | 2010-12-24 | 2016-01-14 | 주식회사 케이티 | 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체 |
US8745329B2 (en) | 2011-01-20 | 2014-06-03 | Google Inc. | Storing data across a plurality of storage nodes |
US20120191773A1 (en) * | 2011-01-26 | 2012-07-26 | Google Inc. | Caching resources |
US8856335B1 (en) * | 2011-01-28 | 2014-10-07 | Netapp, Inc. | Managing service level objectives for storage workloads |
US9141527B2 (en) * | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
JP5843459B2 (ja) | 2011-03-30 | 2016-01-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理システム、情報処理装置、スケーリング方法、プログラムおよび記録媒体 |
US8887006B2 (en) * | 2011-04-04 | 2014-11-11 | Microsoft Corporation | Proactive failure handling in database services |
US10324946B2 (en) * | 2011-06-23 | 2019-06-18 | Salesforce.Com Inc. | Methods and systems for caching data shared between organizations in a multi-tenant database system |
US9813491B2 (en) * | 2011-10-20 | 2017-11-07 | Oracle International Corporation | Highly available network filer with automatic load balancing and performance adjustment |
JP5900088B2 (ja) | 2012-03-27 | 2016-04-06 | 富士通株式会社 | 並列計算機、並列計算機の制御方法及び制御プログラム |
US9495324B2 (en) | 2012-03-30 | 2016-11-15 | Intel Corporation | Efficient distribution of subnet administration data over an RDMA network |
US8965921B2 (en) | 2012-06-06 | 2015-02-24 | Rackspace Us, Inc. | Data management and indexing across a distributed database |
US8977646B2 (en) * | 2012-06-14 | 2015-03-10 | Ca, Inc. | Leveraging graph databases in a federated database system |
US8832241B2 (en) | 2012-06-15 | 2014-09-09 | Citrix Systems, Inc. | Systems and methods for validating a configuration in a cluster |
-
2012
- 2012-11-26 US US13/685,615 patent/US9847907B2/en active Active
-
2013
- 2013-11-20 AU AU2013347972A patent/AU2013347972B2/en active Active
- 2013-11-20 SG SG11201503721VA patent/SG11201503721VA/en unknown
- 2013-11-20 JP JP2015544115A patent/JP6607783B2/ja active Active
- 2013-11-20 EP EP13857139.3A patent/EP2923272B1/en active Active
- 2013-11-20 WO PCT/US2013/071073 patent/WO2014081869A2/en active Application Filing
- 2013-11-20 CN CN201380061676.5A patent/CN104823170B/zh active Active
- 2013-11-20 CA CA2891339A patent/CA2891339C/en active Active
-
2017
- 2017-07-31 JP JP2017147460A patent/JP2017208128A/ja active Pending
-
2019
- 2019-09-09 JP JP2019163484A patent/JP2019212336A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2014081869A3 (en) | 2014-07-17 |
JP2017208128A (ja) | 2017-11-24 |
US9847907B2 (en) | 2017-12-19 |
SG11201503721VA (en) | 2015-06-29 |
JP6607783B2 (ja) | 2019-11-20 |
EP2923272A2 (en) | 2015-09-30 |
JP2015535633A (ja) | 2015-12-14 |
WO2014081869A2 (en) | 2014-05-30 |
CA2891339C (en) | 2018-12-18 |
CN104823170A (zh) | 2015-08-05 |
AU2013347972A1 (en) | 2015-05-28 |
AU2013347972B2 (en) | 2016-04-28 |
CN104823170B (zh) | 2018-02-13 |
EP2923272A4 (en) | 2016-08-10 |
EP2923272B1 (en) | 2020-01-08 |
CA2891339A1 (en) | 2014-05-30 |
US20140149537A1 (en) | 2014-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6607783B2 (ja) | 分散キャッシュクラスタ管理 | |
US11445019B2 (en) | Methods, systems, and media for providing distributed database access during a network split | |
US10462250B2 (en) | Distributed caching cluster client configuration | |
US9262323B1 (en) | Replication in distributed caching cluster | |
JP6670274B2 (ja) | 分散計算システムにおける計算クラスタのスケーリング | |
US9971823B2 (en) | Dynamic replica failure detection and healing | |
US9529772B1 (en) | Distributed caching cluster configuration | |
US8612413B2 (en) | Distributed data cache for on-demand application acceleration | |
US9069835B2 (en) | Organizing data in a distributed storage system | |
US9659038B2 (en) | Efficient snapshot read of a database in a distributed storage system | |
US9367261B2 (en) | Computer system, data management method and data management program | |
US20200112499A1 (en) | Multiple quorum witness | |
US10313474B1 (en) | System and method of load balancing by offloading redundant queries to client devices | |
US8621260B1 (en) | Site-level sub-cluster dependencies | |
US11782882B2 (en) | Methods for automated artifact storage management and devices thereof | |
US11652746B1 (en) | Resilient consistent hashing for a distributed cache | |
US10666724B1 (en) | Geo-replicated IoT hub | |
US11609933B1 (en) | Atomic partition scheme updates to store items in partitions of a time series database | |
US9270530B1 (en) | Managing imaging of multiple computing devices | |
US8850132B1 (en) | Method and system for providing a shared data resource coordinator within a storage virtualizing data processing system | |
US11973823B1 (en) | Offloading namespace redirection to backup clients in a scale out cluster |