WebSphere® Application Server にデプロイされた Java EE アプリケーションでは、動的キャッシュ API を使用できます。 動的キャッシュ・プロバイダーを使用して、ビジネス・データや生成された HTML をキャッシュに入れたり、データ複製サービス (DRS) を使用してセル内のキャッシュ・データを同期化したりすることができます。
以前は、動的キャッシュ API の唯一の サービス・プロバイダーは、 WebSphere Application Server に組み込まれた、デフォルトの動的キャッシュ・エンジンでした。ユーザーは、 WebSphere Application Server 内の動的キャッシュ・サービス・プロバイダー・インターフェースを使用して、eXtreme Scale を 動的キャッシュに接続できます。この機能をセットアップすると、動的キャッシュ API を使用して書かれたアプリケーションまたはコンテナー・レベル・キャッシュを使用するアプリケーション (サーブレットなど) が WebSphere eXtreme Scaleの機能およびパフォーマンス能力を使用できるようになります。
動的キャッシュ・プロバイダーの インストールと構成の手順については、WebSphere eXtreme Scale の動的キャッシュ・プロバイダーの構成を参照してください。
WebSphere eXtreme Scale で 使用可能なフィーチャーによって動的キャッシュ API の分散機能は大幅に強化され、 デフォルト動的キャッシュ・エンジンおよびデータ・レプリカ生成サービスで提供される機能を 超えるものになっています。eXtreme Scale を 使用することにより、複数のサーバー間で単に複製し、同期化するだけでなく、サーバー間で本当に分散した キャッシュを作成できます。さらに、eXtreme Scale キャッシュ は、トランザクション・ベースであり、可用性がとても高く、動的キャッシュ・サービスに関して各サーバーが同じ 内容を参照することを保証します。WebSphere eXtreme Scale は、キャッシュ・レプリカ生成 に関して、DRS よりも高いサービス品質を提供します。
ただし、 これらの利点は、どのようなアプリケーションでも eXtreme Scale 動的キャッシュ・プロバイダー が正しい選択であることを意味するわけではありません。以下のデシジョン・ツリーおよび機能比較マトリックスを 使用して、ご使用のアプリケーションに最適のテクノロジーを決定してください。
キャッシュ機能 | デフォルト・ プロバイダー |
eXtreme Scale プロバイダー |
eXtreme ScaleAPI |
---|---|---|---|
ローカルのメモリー内のキャッシング |
x |
x |
x |
分散キャッシング |
組み込み |
組み込み、組み込み区画化、およびリモート区画化 |
Multiple |
直線的にスケーラブル |
x |
x |
|
信頼できるレプリカ生成 (同期) |
ORB |
ORB |
|
ディスク・オーバーフロー |
x |
||
除去 |
LRU/TTL/ヒープ・ベース |
LRU/TTL (区画ごと) |
Multiple |
Invalidation |
x |
x |
x |
関係 |
依存関係 ID、テンプレート |
依存関係 ID、テンプレート |
x |
非キー検索 |
照会および索引 |
||
バックエンド統合 |
ローダー |
||
トランザクションの |
暗黙 |
x |
|
キー・ベースの保管 |
x |
x |
x |
イベントおよびリスナー |
x |
x |
x |
WebSphere Application Server 統合 |
単一セルのみ |
複数セル |
セルに無関係 |
Java Standard Edition サポート |
x |
x |
|
モニタリングおよび統計 |
x |
x |
x |
セキュリティー |
x |
x |
x |
キャッシュ機能 | デフォルト・ プロバイダー |
eXtreme Scale プロバイダー |
eXtreme ScaleAPI |
WebSphere Application Server サーブレット/JSP 結果キャッシング |
V5.1+ |
V6.1.0.25+ |
|
WebSphere Application Server Web Services (JAX-RPC) 結果キャッシング |
V5.1+ |
V6.1.0.25+ |
|
HTTP セッション・キャッシング |
x |
||
OpenJPA および Hibernate 用のキャッシュ・プロバイダー |
x |
||
OpenJPA および Hibernate を使用したデータベース同期 |
x |
キャッシュ機能 | デフォルト・ プロバイダー |
eXtreme Scale プロバイダー |
eXtreme ScaleAPI |
---|---|---|---|
コマンド・ベース API |
コマンド・フレームワーク API |
コマンド・フレームワーク API |
DataGrid API |
マップ・ベース API |
DistributedMap API |
DistributedMap API |
ObjectMap API |
EntityManager API |
x |
eXtreme Scale 分散キャッシュがどのように機能するかについて詳しくは、トポロジーの計画 を参照してください。
eXtreme Scale プロバイダー を使用して作成された動的キャッシュ・サービスは、パフォーマンス、リソース、および管理上の必要に合わせて、3 つのトポロジーのいずれかにデプロイでき ます。これらのトポロジーは、組み込み、組み込み区画化、およびリモートです。
組み込みトポロジー
組み込みトポロジーは、 デフォルトの動的キャッシュおよび DRS プロバイダーに似ています。組み込みトポロジーで作成された分散キャッシュ・インスタンス は、動的キャッシュ・サービスにアクセスする各 eXtreme Scale プロセス の内部でキャッシュの完全コピーを保持するので、すべての読み取り操作をローカルで 実行できます。すべての書き込み操作は、シングル・サーバー・プロセスを完了し、 そのプロセスでトランザクションのロックが管理された 後で残りのサーバーに複製されます。したがって、このトポロジー は、キャッシュ読み取り操作がキャッシュ書き込み操作よりもずっと多い ワークロードに向いています。
組み込みトポロジーでは、新規および更新されたキャッシュ・エントリー が、すべてのサーバー・プロセスで即時に可視になるわけではありません。 キャッシュ・エントリーは、WebSphere eXtreme Scale の非同期レプリカ生成サービスによって伝搬されるまでは、そのエントリーを生成したサーバーに対してさえ可視になりません。これらのサービスは、ハードウェアで可能な限り速く作動しますが、 それでも少しは遅延が発生します。次の図に、組み込みトポロジーを 示します。
組み込み区画化トポロジー
キャッシュ書き込み が読み取りと同じくらいか、より頻繁に発生するようなワークロードの場合、組み込み区画化トポロジー またはリモート・トポロジーが推奨されます。組み込み区画化トポロジー は、キャッシュにアクセスする WebSphere Application Server プロセスの 内部でキャッシュ・データのすべてを保持します。しかし、各プロセスが保管するのは、キャッシュ・データの一部分 のみです。この「区画」に置かれたデータに対するすべての読み取りおよび書き込み は、そのプロセスを実行します。したがって、キャッシュに対する ほとんどの要求はリモート・プロシージャー・コールで達成されることになります。その結果、 読み取り操作の待ち時間は組み込みトポロジーよりも大きくなりますが、 読み取り操作および書き込み操作を処理するための分散キャッシュの容量 は、キャッシュにアクセスする WebSphere Application Server プロセス の数に応じて直線的に変化します。また、このトポロジーでは、キャッシュの 最大サイズが 1 つの WebSphere プロセスのサイズに制約されることはありません。各プロセス はキャッシュの一部分だけを保持するので、キャッシュの最大サイズは、すべてのプロセスの 総計サイズからプロセスのオーバーヘッドを引いたものに なります。次の図に、組み込み区画化トポロジーを 示します。
例えば、 あるグリッドのサーバー・プロセスのそれぞれに、動的キャッシュ・サービスをホストするための 256 メガバイトの空きヒープ があるとします。組み込みトポロジーを使用する場合、デフォルトの動的キャッシュ・プロバイダー と eXtreme Scale プロバイダー の両方とも、メモリー内キャッシュのサイズは、256 メガバイトからオーバーヘッドを引いた値 に制限されます。この資料のもう少し後にある『キャパシティー・プランニングおよび高可用性』セクション を参照してください。組み込み区画化トポロジーを使用する eXtreme Scale プロバイダー の場合、キャッシュ・サイズは 1 ギガバイトからオーバーヘッドを引いた値 に制限されます。このようにして、WebSphere eXtreme Scale プロバイダーは、 単一のサーバー・プロセスのサイズよりも大きいメモリー内の動的キャッシュのサービスを 可能にします。デフォルトの動的キャッシュ・プロバイダーは、ディスク・キャッシュの使用に頼ることで、キャッシュ・インスタンスが大きくなって単一プロセスのサイズを 超えることを可能にしています。多くのシチュエーションで、WebSphere eXtreme Scale プロバイダー を使用すると、実行に必要なディスク・キャッシュやコストの高いディスク・ストレージ・システムの必要性を なくすことができます。
リモート・トポロジー
リモート・トポロジーを使用しても、ディスク・キャッシュの 必要性をなくすことができます。 リモート・トポロジーと組み込み区画化トポロジーとの唯一の相違点は、 リモート・トポロジーを使用しているときは、キャッシュ・データのすべてが WebSphere Application Server プロセスの 外側に保管されることです。WebSphere eXtreme Scale は、キャッシュ・データ用に スタンドアロンのコンテナー・プロセスをサポートします。これらのコンテナー・プロセス のオーバーヘッドは WebSphere Application Server プロセスよりも 小さく、特定の Java 仮想マシン (JVM) を使用しなければならないという制限もありません。例えば、 32 ビット WebSphere Application Server プロセスによってアクセスされる動的キャッシュ・サービスのデータ を、64 ビット JVM 上で実行している eXtreme Scale コンテナー・プロセス 内に置くことが可能です。これによって、ユーザーは、64 ビット・プロセスの大きなメモリー容量をキャッシング用に使用できると同時に、 アプリケーション・サーバー・プロセス用には 64 ビットの追加オーバーヘッドを 負わなくてもすみます。次の図に、リモート・トポロジーを示します。
データ圧縮
WebSphere eXtreme Scale 動的キャッシュ・プロバイダー によって提供される、キャッシュ・オーバーヘッド管理についてユーザーを支援するもう 1 つのパフォーマンス機能が、圧縮です。デフォルトの 動的キャッシュ・プロバイダーは、メモリー内のキャッシュ・データの圧縮を 許可していません。eXtreme Scale プロバイダーを 使用すると、これが可能になります。3 種類の分散トポロジーのどれでも、デフレート・アルゴリズムを使用するキャッシュ圧縮を 使用可能にできます。圧縮を使用可能にすると、 読み取りおよび書き込み操作のオーバーヘッドは増えますが、 サーブレットおよび JSP キャッシングのようなアプリケーション用のキャッシュ密度は 大幅に増加します。
ローカルのメモリー内のキャッシュ
WebSphere eXtreme Scale 動的キャッシュ・プロバイダーは、レプリカ生成使用不可の動的キャッシュ・インスタンスをバックアップするためにも使用できます。デフォルトの動的キャッシュ・プロバイダーと同じように、これらのキャッシュは非シリアライズ可能データを保管できます。また、eXtreme Scale コード・パスはメモリー内キャッシュの並行性を最大化するよう設計されているため、大容量のマルチプロセッサー・エンタープライズ・サーバー上ではデフォルト動的キャッシュ・プロバイダーよりも優れたパフォーマンスを提供します。
ローカルのメモリー内のキャッシュで、レプリカ生成が使用不可にされている場合は、デフォルトの動的キャッシュ・プロバイダーによってバックアップされたキャッシュと WebSphere eXtreme Scale によってバックアップされたキャッシュとの間には、それほどの機能的な違いはありません。WebSphere eXtreme Scale がバックアップしたキャッシュは、メモリー内キャッシュのサイズに関係する統計および操作、またはディスク・オフロードをサポートしない点は除いて、ユーザーはこれら 2 つのキャッシュの機能的な違いに気付かないはずです。
レプリカ生成が使用可能にされているキャッシュの 場合は、デフォルトの動的キャッシュ・プロバイダーを 使用しているのか、それとも eXtreme Scale 動的キャッシュ・プロバイダー を使用しているのかに関わらず、ほとんどの動的キャッシュ API 呼び出しで戻される結果にはそれほどの相違はありません。一部の操作については、 eXtreme Scale を使用して動的キャッシュ・エンジンの動作をエミュレートできません。
動的キャッシュ統計は、CacheMonitor アプリケーションまたは動的キャッシュ MBean を介して報告されます。eXtreme Scale 動的キャッシュ・プロバイダー を使用している場合でも、統計はこれらのインターフェースを通して報告されますが、 統計値のコンテキストは異なります。
A、B、C という名前の 3 つのサーバー間で 1 つの動的キャッシュ・インスタンス が共有されている場合、動的キャッシュ統計オブジェクトは、その呼び出しが実行されたサーバーにある キャッシュのコピーに関する統計だけを戻します。サーバー A で統計が取得された 場合、その統計はサーバー A でのアクティビティーのみを反映 します。
eXtreme Scale を使用 している場合、すべてのサーバー間で共有されている分散キャッシュは 1 つしかありません。 したがって、デフォルトの動的キャッシュ・プロバイダーのようにほとんどの統計値をサーバーごとに トラッキングするというのは不可能です。WebSphere eXtreme Scale 動的キャッシュ・プロバイダー を使用している場合に、キャッシュ統計 API によって報告される統計のリストと、それぞれの統計が何を表すのかを以下に示します。デフォルト・プロバイダーのように、これらの 統計は同期化されていないため、並行ワークロードのために最高 10% は変わる可能性 があります。
動的キャッシュ・プロバイダーを使用して、キャッシュ統計を リセットすることができます。デフォルト・プロバイダーでは、 リセット操作でクリアされるのは、影響を受けるサーバーの統計のみです。 eXtreme Scale 動的キャッシュ・プロバイダー は、リモート・キャッシュ・コンテナーの統計データの大部分をトラッキング します。このデータは、統計がリセットされたときに、クリアされることも、 変更されることもありません。代わりに、デフォルト動的キャッシュ動作がクライアント上でシミュレート され、ある統計の現行値と、そのサーバーで最後にリセットが呼び出されたときのその統計の値との 差が報告されます。
例えば、サーバー A 上のトラフィックが 10 のキャッシュ除去を生成する 場合、サーバー A とサーバー B の統計は 10 の除去を 報告します。サーバー B の統計が リセットされ、サーバー A 上のトラフィックが追加で 10 の除去を生成したとすると、 サーバー A の統計は 20 の除去を報告し、サーバー B の統計は 10 の除去を報告します。
動的キャッシュ API を使用して、ユーザーはイベント・リスナー を登録できます。動的キャッシュ・プロバイダーとして eXtreme Scale を 使用している場合、イベント・リスナーはローカルのメモリー内キャッシュに対して、予期されるように機能 します。
分散キャッシュに対するイベント動作は、使用される トポロジーに依存します。組み込みトポロジーを使用しているキャッシュの場合、 イベントは書き込み操作を処理するサーバー (つまり、プライマリー断片) で生成され ます。これは、1 つのサーバーのみがイベント通知を 受け取ることを意味しますが、動的キャッシュ・プロバイダーで一般的に予期されるイベント通知 はすべてそのサーバーが受け取ります。WebSphere eXtreme Scale は実行時にプライマリー断片を 選択するため、ある特定のサーバー・プロセスが常にこれらのイベントを受け取るように保証すること はできません。
組み込み区画化キャッシュは、キャッシュのいずれかの区画をホストするどのサーバー上でも、 イベントを生成します。 したがって、11 の区画に分割されたキャッシュがあり、WebSphere Application Server Network Deployment グリッドの 11 のサーバーそれぞれが 1 つの区画をホストしている場合、各サーバーは、そのサーバーがホストしているキャッシュ・エントリーの動的キャッシュ・イベントを受け取ります。11 すべての区画が 1 つのサーバー・プロセスでホストされているのでない限り、1 つのサーバー・プロセスだけが イベントのすべてを認識するということはありません。組み込みトポロジーの場合と 同様、ある特定のサーバー・プロセスが、ある特定のイベント・セットまたはイベントを 受け取るように保証することはできません。
リモート・トポロジーを使用する キャッシュは、動的キャッシュ・イベントをサポートしません。
WebSphere eXtreme Scale 動的キャッシュ・プロバイダー はディスク・キャッシングをサポートしません。ディスク・キャッシングに関係する MBean 呼び出しはすべて 機能しません。
WebSphere Application Server 組み込み 動的キャッシュ・プロバイダーは、複数のキャッシュ・レプリカ生成ポリシーを サポートします。これらのポリシーは、グローバルに構成するか、各キャッシュ・エントリーに対して 構成することができます。動的キャッシュ資料で、これらのポリシーに関する説明を参照してください。
eXtreme Scale 動的キャッシュ・プロバイダー は、直接これらのポリシーに従うわけではありません。キャッシュのレプリカ生成に関する特性は、 動的キャッシュ・サービスによってエントリーに設定されるレプリカ生成ポリシーに関わらず、 構成された eXtreme Scale 分散トポロジー・タイプによって決まり、 そのキャッシュ内に置かれるすべての値に適用されます。以下に、動的キャッシュ・サービスでサポートされるレプリカ生成ポリシーのすべてを リストし、どの eXtreme Scale トポロジーが類似のレプリカ生成特性を 提供するのかを示します。
eXtreme Scale 動的キャッシュ・プロバイダーは、 キャッシュまたはキャッシュ・エントリーに対する DRS レプリカ生成ポリシー設定を無視することに注意してください。 ユーザーは、レプリカ生成のニーズに適したトポロジーを選択する 必要があります。
この情報が主として提供されるので、 トポロジーをユーザーの分散整合性ニーズに確実に合わせることができます。例えば、 ユーザーのデプロイメントおよびパフォーマンスのニーズには組み込みトポロジーが 適しているが、SHARED_PUSH_PULL で提供されるレベルのキャッシュ整合性を必要とする場合、パフォーマンスが少し劣ることになっても、組み込み区画化トポロジーを 使用することを検討してください。
組み込みトポロジーまたは組み込み区画化トポロジーで実行している 動的キャッシュ・インスタンスを、WebSphere Application Server に構築されたセキュリティー機能を使用して保護できます。WebSphere Application Server インフォメーション・センターでアプリケーション・サーバーの保護を参照 してください。
リモート・トポロジーでキャッシュが実行している場合、 スタンドアロン eXtreme Scale クライアント はそのキャッシュに接続して、動的キャッシュ・インスタンスの内容に影響を与えることが 可能です。eXtreme Scale 動的キャッシュ・プロバイダー に備わっている低オーバーヘッドの暗号化機能は、 非 WebSphere Application Server クライアントによるキャッシュ・データの読み取りまたは変更を防ぐことができます。この 機能を使用可能にするには、オプション・パラメーター com.ibm.websphere.xs.dynacache.encryption_password を、 動的キャッシュ・プロバイダーにアクセスするすべての WebSphere Application Server インスタンスで同じ値に 設定します。これによって、128 ビット AES 暗号化を使用 して CacheEntry の値およびユーザー・メタデータが暗号化されます。 すべてのサーバーで同じ値に設定されていることが重要です。 サーバーは、このパラメーターに異なる値が設定されているサーバーによってキャッシュに入れられたデータ を読み取ることはできません。
eXtreme Scale プロバイダーは、 同じキャッシュでこの変数に異なる値が設定されていることを検出すると、 警告を生成して eXtreme Scale コンテナー・プロセスのログに入れます。
SSL または クライアント認証が必要な場合は、セキュリティーの概要に関する eXtreme Scale 資料を 参照してください。