第44章 ニアキャッシュ
44.1. ニアキャッシュ
ニアキャッシュは Rod Rod Java クライアント実装の任意のキャッシュで、ユーザーの近くに最近アクセスされたデータを保持し、頻繁に使用されるデータへのアクセスをより迅速にします。このキャッシュは、get
または getVersioned
操作によってリモートエントリーが読み出されると更新されるローカルの Hot Rod クライアントキャッシュとして動作します。
ライブラリーモードのニアキャッシュまたは Hot Rod 以外のインターフェースは、1 次キャッシュを設定して実現します。1 次キャッシュの設定方法は、JBoss Data Grid の『Administration and Configuration Guide』を参照してください。
Red Hat JBoss Data Grid では、エントリーの変更時または削除時にクライアントへ通知を送信するリモートイベントを使用して、ニアキャッシュの整合性を保持します (「リモートイベントリスナー (Hot Rod)」を参照してください)。ニアキャッシュでは、ローカルキャッシュはリモートキャッシュと整合性をとります。サーバーのリモートエントリーが更新または削除されるたびにローカルエントリーは更新またはインバリデートされます。クライアントレベルでは、ニアキャッシュは以下のいずれかとして設定されます。
-
DISABLED
: デフォルトのモード。ニアキャッシュが有効になっていないことを示します。 -
INVALIDATED
: ニアキャッシュを有効にし、インバリデーションメッセージ経由でリモートキャッシュとの同期を維持します。
デフォルトでは、Hot Rod クライアントに対してニアキャッシュは無効になっています。
図44.1 ニアキャッシュアーキテクチャー
44.2. ニアキャッシュの設定
ニアキャッシュは、Hot Rod クライアントに変更を加えずに、設定から有効または無効にすることができます。ニアキャッシュを有効にするには、ニアキャッシュモードをクライアント側で INVALIDATED
として設定し、任意でキャッシュに保持するエントリーの数を指定します。
ニアキャッシュのモードは、NearCacheMode
列挙を使用して設定されます。
以下の例はニアキャッシュの設定方法を表しています。
ニアキャッシュの有効化
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.client.hotrod.configuration.NearCacheMode; … ConfigurationBuilder builder = new ConfigurationBuilder(); builder.nearCache().mode(NearCacheMode.INVALIDATED).maxEntries(100);
maxEntries(int maxEntries)
メソッドを使用してニアキャッシュの最大サイズを提供する必要があります。上記の設定では 100 に定義されています。最大サイズに到達した場合、ニアキャッシュのエントリーは LRU (leaset-recently-used、最近最も使われていない) アルゴリズムを使用してエビクトされます。無制限のニアキャッシュを定義するには、ゼロまたは負の値を渡します。
44.3. クラスター環境でのニアキャッシュ
ニアキャッシュは Hot Rod リモートイベントを使用して実装され、クラスター化リスナーを利用してクラスター全体からのイベントを受信します。クラスター化リスナーはクラスター内の単一ノード上にインストールされ、残りのノードはリスナーがインストールされるノードにイベントを送信します。そのため、ニアキャッシュがバックアップするクラスター化リスナーを実行しているノードに障害が発生する可能性があります。このような場合、別のノードがクラスター化リスナーを引き継ぎます。
クラスター化リスナーを実行しているノードに障害が発生した場合、クライアントフェイルオーバーイベントコールバックを定義および呼び出しすることができます。ニアキャッシュでは、フェイルオーバー中にイベントを見逃す可能性があるため、このコールバックとその実装がニアキャッシュを消去します。
詳細は、「クラスター化リスナー」を参照してください。