22.9. 他の管理ツールと操作

Red Hat JBoss Data Grid インスタンスの管理には、関連する統計情報を大量に公開する必要があります。管理者は統計情報より、 JBoss Data Grid の各ノードの状態を明確に把握することができます。1 つのインストールが、何十または何百もの JBoss Data Grid ノードによって構成されることもあるため、明確で簡潔に情報を提供することが重要になります。JBoss Operations Network はランタイムを可視化するツールの 1 つです。JMX が有効である場合、JConsole などの他のツールも使用できます。

22.9.1. URL 経由のデータアクセス

REST インターフェースで設定されたキャッシュは、RESTful HTTP アクセスを使用して Red Hat JBoss Data Grid へアクセスできます。
RESTful サービスは HTTP クライアントライブラリーのみを必要とするため、密結合されたクライアントライブラリーやバインディングは必要ありません。REST インターフェースを使用したデータの取得方法の詳細については、「REST インターフェースの使用」を参照してください。
HTTP put() および post() メソッドは、キャッシュにデータを格納します。使用される URL より使用されるキャッシュ名とキーを判断することができます。データはキャッシュに格納される値で、要求の本文に置かれます。
これらのメソッドに対して Content-Type ヘッダーを設定する必要があります。データの読み出しには GET および HEAD メソッドが使用され、他のヘッダーはキャッシュの設定と挙動を制御します。

注記

競合するサーバーモジュールがデータグリッドとやりとりすることはできません。JBoss Data Grid にアクセスするには、互換性のあるインターフェースでキャッシュを設定する必要があります。

22.9.2. Map メソッドの制限

size()values()keySet()entrySet() などの特定の Map メソッドは不安定であるため、Red Hat JBoss Data Grid で一定の制限付きで使用することが可能です。これらのメソッドはロック (グローバルまたはローカル) を取得せず、同時編集、追加、および削除はこれらの呼び出しでは考慮されません。さらに、前述のメソッドはローカルのキャッシュ上でのみ操作可能であり、状態のグローバルビューを提供しません。
前述のメソッドがグローバルに実行されると、パフォーマンスに大きく影響し、スケーラビリティーのボトルネックが発生します。そのため、情報収集やデバッグの目的でのみこれらのメソッドを使用することが推奨されます。
パフォーマンスの問題

Red Hat JBoss Data Grid 6.3 以降、マップメソッド size()values()keySet()、および entrySet() には、デフォルトでキャッシュローダー内のエントリーが含まれます ( 以前は、これらのメソッドにはローカルのデータコンテナーのみが含まれていました)。基礎となるキャッシュローダーはこれらのコマンドのパフォーマンスに直接影響を与えます。たとえば、データベースを使用している場合、これらのメソッドはデータが格納されるテーブルの完全なスキャンを実行し、処理が遅くなることがあります。古い動作を保持するには Cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_LOAD).values() を使用し、パフォーマンスの低下を回避するにはキャッシュストアからロードしないようにしてください。

size() メソッドへの変更 (内蔵キャッシュ)

JBoss Data Grid 6.3 では、Cache#size() メソッドはローカルノードのエントリー数のみを返し、クラスター化キャッシュの他のノードを無視し、失効したエントリーを含みます。デフォルトの動作が JBoss Data Grid 6.4 以降で変更されなかった場合は、infinispan.accurate.bulk.ops システムプロパティーを true に設定することにより、多くの操作 (size() を含む) に対して正確な結果を有効にできます。操作のこのモードでは、size() メソッドにより返される結果は、ローカルノードに存在するエントリーの数を返すフラグ org.infinispan.context.Flag#CACHE_MODE_LOCAL と、すべてのパッシブ化エントリーを無視するフラグ org.infinispan.context.Flag#SKIP_CACHE_LOAD によって影響を受けます。

size() メソッドへの変更 (リモートキャッシュ)

JBoss Data Grid 6.3 では、Hot Rod size() メソッドは STATS 操作を呼び出し、返された numberOfEntries 統計を使用してキャッシュのサイズを取得していました。この統計は、失効済みのパッシブ化エントリーを考慮せず、操作に応答したノードにのみローカルであるため、キャッシュ内のエントリー数を正確に反映しません。別の結果として、セキュリティーが有効である場合は、クライアントが適切な BULK_READ の代わりに ADMIN パーミッションを必要とします。

JBoss Data Grid 6.4 以降では、Hot Rod プロトコルが専用の SIZE 操作で拡張され、クライアントが size() メソッドにこの操作を使用するよう更新されました。JBoss Data Grid サーバーは、サイズを正確に計算できるように infinispan.accurate.bulk.ops システムプロパティーを true に設定した状態で起動する必要があります。