この付録では、Coherenceで提供されるキャッシュのタイプについて概説し、それぞれのタイプを比較します。
分散配置されたキャッシュ(つまり、パーティション・キャッシュ)は、線形のスケーラビリティを示す、クラスタ化されたフォルト・トレラントなキャッシュです。データはクラスタ内のすべてのマシン間でパーティション化されます。フォルト・トレランスを実現するため、パーティション・キャッシュでは、各データをクラスタ内の1つ以上の個別マシンに保持するように構成できます。分散キャッシュはCoherenceで最もよく使用されるキャッシュです。
レプリケーション・キャッシュは、クラスタ内の全メンバーにすべてのデータをレプリケートする、クラスタ化されたフォルト・トレラントなキャッシュです。このキャッシュは、読取りにおいては、線形のスケーラビリティを示す最速のパフォーマンスを示しますが、書込みのスケーラビリティは優れていません(クラスタ内のすべてのメンバーに書込み処理が必要なため)。データがすべてのマシンにレプリケートされるので、サーバーを追加しても、キャッシュの合計容量は増加しません。
オプティミスティック・キャッシュは、レプリケーション・キャッシュと同様のクラスタ化されたキャッシュの実装になりますが、並行処理制御が行われません。この実装では、レプリケーション・キャッシュより、書込みのスループットが高くなります。また、MRU/MFUベースのキャッシュなどのキャッシュ・データの格納に、代替の基礎となるストアを使用できます。ただし、2つのクラスタ・メンバーが基礎となるローカル・ストアの削除やパージを個別に実行すると、それぞれに保持しているストア・コンテンツがクラスタ・メンバー間で異なる可能性があります。
ニア・キャッシュはハイブリッドなキャッシュであり、通常、分散キャッシュまたはリモート・キャッシュ機能とローカル・キャッシュ機能を組み合せた役割を果たします。ニア・キャッシュでは、構成可能な無効化方針を使用してフロント・キャッシュ・エントリを無効にし、優れたパフォーマンスおよび同期化を実現します。パーティション・キャッシュによってバッキングされたニア・キャッシュでは、反復的なデータ・アクセスにおいて0ミリ秒のローカル・アクセスが可能になります。同時実行性が実現され、整合性およびフェイルオーバーが保証されるだけでなく、レプリケーション・キャッシュとパーティション・キャッシュの長所が効率的に結合されています。
ローカル・キャッシュは、特定のクラスタ・ノードに対してローカルである(つまりノード内に完全に含まれる)キャッシュです。Coherenceのローカル・キャッシュ実装はクラスタ・サービスではありませんが、各種クラスタ・キャッシュ・サービスと組み合せて使用されることがよくあります。
リモート・キャッシュは、Coherence*Extendクライアントによりアクセスされるアウトオブプロセス・キャッシュを表します。すべてのキャッシュ・リクエストはCoherenceプロキシに送られ、そこでCoherenceの他のキャッシュ・タイプ(レプリケーション、オプティミスティック、パーティション)のいずれかに委任されます。
数値に関する用語
JVMs = JVMの数
DataSize = キャッシュ・データの合計サイズ(冗長性を除く)
Redundancy = 保持されているデータのコピー数
LocalCache = ローカル・キャッシュ・サイズ(ニア・キャッシュの場合)
表B-1 キャッシュのタイプと特性のまとめ
レプリケーション・キャッシュ | オプティミスティック・キャッシュ | パーティション・キャッシュ | ニア・キャッシュ(パーティション・キャッシュによるバッキング) | ローカル・キャッシュ(非クラスタ) | |
---|---|---|---|---|---|
トポロジ |
レプリケーション |
レプリケーション |
パーティション・キャッシュ |
ローカル・キャッシュ+パーティション・キャッシュ |
ローカル・キャッシュ |
読取りパフォーマンス |
即時5 |
即時5 |
ローカル・キャッシュ: 即時5 リモート: ネットワーク速度 1 |
ローカル・キャッシュ: 即時5 リモート: ネットワーク速度 1 |
即時5 |
フォルト・トレランス性 |
非常に高い |
非常に高い |
構成可能 4 (0〜非常に高い) |
構成可能 4 (0〜非常に高い) |
0 |
書込みパフォーマンス |
高速 2 |
高速 2 |
非常に高速 3 |
非常に高速 3 |
即時5 |
メモリー使用量(JVM別) |
DataSize |
DataSize |
DataSize/JVMs x Redundancy |
LocalCache + [DataSize / JVMs] |
DataSize |
整合性 |
完全な整合性あり |
完全な整合性あり |
完全な整合性あり |
完全な整合性あり6 |
N/A |
メモリー使用量(合計) |
JVMs x DataSize |
JVMs x DataSize |
Redundancy x DataSize |
[Redundancy x DataSize] + [JVMs x LocalCache] |
N/A |
ロック機能 |
完全に機能 |
なし |
完全に機能 |
完全に機能 |
完全に機能 |
一般的な用途 |
メタデータ |
N/A(ニア・キャッシュを参照) |
読取り/書込みキャッシュ |
アクセス・アフィニティのある読取り頻度の高いキャッシュ |
ローカル・データ |
注意:
概算で、100Mbイーサネットでは一般に、100KBオブジェクト1つのネットワークでの読取りに最大20ミリ秒を必要とします。ギガビット・イーサネットでは一般に、1KBの複数オブジェクトのネットワークでの読取りが1ミリ秒未満になります。
JVMの数に応じて、UDPマルチキャスト操作、またはいくつかのUDPユニキャスト操作が必要です。
冗長性のレベルに応じて、いくつかのUDPユニキャスト操作が必要です。
パーティション・キャッシュでは、バックアップのレベルを必要な数だけ構成することも、まったく構成しないこともできます。ほとんどのインストールでは、バックアップ・コピーを1つ使用します(合計で2コピー)。
ごくわずかな処理を必要とする(一般にはミリ秒未満のパフォーマンス)、ローカルのCPUまたはメモリーのパフォーマンスによって制限されます。
リスナーベースのニア・キャッシュには整合性が確保されています。失効ベースのニア・キャッシュでは、非トランザクション読取りについては部分的な整合性が確保され、トランザクション・アクセスについては整合性が確保されています。