6.15. カスタムキャッシュストア実装の作成
Data Grid の永続 SPI を使用してカスタムキャッシュストアを作成できます。
6.15.1. Data Grid 永続性 SPI
Data Grid Service Provider Interface (SPI) は、NonBlockingStore
インターフェイスを介して外部ストレージへの読み書き操作を有効にし、以下の機能を持ちます。
- 簡素化されたトランザクション統合
- Data Grid はロックを自動的に処理するため、実装は永続ストアへの同時アクセスを調整する必要はありません。使用するロックモードによっては、通常、同じキーへの同時書き込みは発生しません。ただし、永続ストレージ上の操作は複数のスレッドから発信され、この動作を許容する実装を作成することを想定する必要があります。
- 並列反復
- Data Grid を使用すると、複数のスレッドを持つ永続ストアのエントリーを繰り返すことができます。
- シリアル化の減少による CPU 使用率の削減
- Data Grid は、リモートで送信できるシリアル化された形式で保存されたエントリーを公開します。このため、Data Grid は永続ストレージから取得されたエントリーをデシリアライズし、ネットワークに書き込む際に再びシリアライズする必要はありません。
6.15.2. キャッシュストアの作成
NonBlockingStore
API の実装により、カスタムキャッシュストアを作成することができます。
手順
- 適切な Data Grid の永続 SPI を実装します。
-
カスタム設定がある場合は、ストアクラスに
@ConfiguredBy
アノテーションを付けます。 必要に応じてカスタムキャッシュストア設定およびビルダーを作成します。
-
AbstractStoreConfiguration
およびAbstractStoreConfigurationBuilder
を拡張します。 オプションで以下のアノテーションをストア設定クラスに追加し、カスタム設定ビルダーが XML からキャッシュストア設定を解析できるようにします。
-
@ConfigurationFor
@BuiltBy
これらのアノテーションを追加しないと、
CustomStoreConfigurationBuilder
はAbstractStoreConfiguration
で定義された共通のストア属性を解析し、追加の要素は無視されます。注記設定が
@ConfigurationFor
アノテーションを宣言しない場合は、Data Grid がキャッシュを初期化する際に警告メッセージがログに記録されます。
-
-
6.15.3. カスタムキャッシュストアの設定例
以下の例では、カスタムキャッシュストアの実装で Data Grid を設定する方法を示しています。
XML
<distributed-cache> <persistence> <store class="org.infinispan.persistence.example.MyInMemoryStore" /> </persistence> </distributed-cache>
JSON
{ "distributed-cache": { "persistence" : { "store" : { "class" : "org.infinispan.persistence.example.MyInMemoryStore" } } } }
YAML
distributedCache: persistence: store: class: "org.infinispan.persistence.example.MyInMemoryStore"
ConfigurationBuilder
Configuration config = new ConfigurationBuilder() .persistence() .addStore(CustomStoreConfigurationBuilder.class) .build();
6.15.4. カスタムキャッシュストアの導入
作成したキャッシュストア実装を Data Grid Server で使用するには、JAR ファイルで提供する必要があります。
前提条件
Data Grid Server が実行している場合は停止します。
Data Grid は起動時にのみ JAR ファイルを読み込みます。
手順
- カスタムキャッシュストア実装を JAR ファイルにパッケージ化します。
-
JAR ファイルを Data Grid Server インストールの
server/lib
ディレクトリーに追加します。