Data Grid Spring Boot スターター
SpringBoot プロジェクトでの Data Grid の使用
概要
Red Hat Data Grid リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、高性能の分散型インメモリーデータストアです。
- スキーマレスデータ構造
- さまざまなオブジェクトをキーと値のペアとして格納する柔軟性があります。
- グリッドベースのデータストレージ
- クラスター間でデータを分散および複製するように設計されています。
- エラスティックスケーリング
- サービスを中断することなく、ノードの数を動的に調整して要件を満たします。
- データの相互運用性
- さまざまなエンドポイントからグリッド内のデータを保存、取得、およびクエリーします。
Data Grid のドキュメント リンクのコピーリンクがクリップボードにコピーされました!
Data Grid のドキュメントは、Red Hat カスタマーポータルで入手できます。
Data Grid のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat カスタマーポータルで Data Grid Software Downloads にアクセスします。
Data Grid ソフトウェアにアクセスしてダウンロードするには、Red Hat アカウントが必要です。
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
第1章 Spring Boot Starter のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Spring Boot スターターの依存関係をプロジェクトに追加します。
Data Grid は、Spring Boot バージョン 2.x とバージョン 3 をサポートします。Spring Boot バージョン 3 には Java 17 が必要であることに注意してください。
このドキュメントの例には、Spring Boot の最新バージョンのアーティファクトが含まれています。Spring Boot 2.x を使用する場合は、以下を使用します。
-
infinispan-spring-boot-starter-embedded -
infinispan-spring-boot-starter-remote
1.1. Data Grid バージョンの適用 リンクのコピーリンクがクリップボードにコピーされました!
このスターターは、高レベルの API を使用して、Data Grid のメジャーバージョン間の互換性を確保します。ただし、infinispan-bom モジュールを使用して特定のバージョンの Data Grid を適用できます。
手順
スターターの依存関係の前に、
pom.xmlファイルにinfinispan-bomを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Data Grid Spring Boot スターターは、Red Hat OpenShift Application Runtimes などの他のプロジェクトとは異なる Spring Boot バージョンを使用します。他のプロジェクトと互換性を確保するために特定の Spring Boot バージョンを使用する場合は、プロジェクトに正しい依存関係を追加する必要があります。
1.2. 使用モードの依存関係の追加 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、埋め込みキャッシュとリモートキャッシュに対して別の依存関係を提供します。
手順
-
次のいずれかを
pom.xmlファイルに追加します。
埋め込みキャッシュ
<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-spring-boot3-starter-embedded</artifactId> </dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-spring-boot3-starter-embedded</artifactId>
</dependency>
リモートキャッシュ
<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-spring-boot3-starter-remote</artifactId> </dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-spring-boot3-starter-remote</artifactId>
</dependency>
第2章 埋め込みキャッシュの使用 リンクのコピーリンクがクリップボードにコピーされました!
インメモリーデータストレージ向けに Data Grid キャッシュをプロジェクトに直接埋め込みます。
2.1. EmbeddedCacheManager Bean の追加 リンクのコピーリンクがクリップボードにコピーされました!
埋め込みキャッシュを使用するようにアプリケーションを設定します。
手順
-
infinispan-spring-boot3-starter-embeddedをプロジェクトのクラスパスに追加して、埋め込みモードを有効にします。 次の例のように、Spring の
@Autowiredアノテーションを使用して、Java 設定クラスにEmbeddedCacheManagerBeanを含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、次の例のように、アプリケーション内でデータグリッドキャッシュを直接使用する準備が整いました。
cacheManager.getCache("testCache").put("testKey", "testValue");
System.out.println("Received value from cache: " + cacheManager.getCache("testCache").get("testKey"));
cacheManager.getCache("testCache").put("testKey", "testValue");
System.out.println("Received value from cache: " + cacheManager.getCache("testCache").get("testKey"));
2.2. キャッシュマネージャーの設定 Bean リンクのコピーリンクがクリップボードにコピーされました!
次の設定 Bean を使用して Cache Manager をカスタマイズできます。
-
InfinispanGlobalConfigurer -
InfinispanCacheConfigurer -
Configuration -
InfinispanConfigurationCustomizer -
InfinispanGlobalConfigurationCustomizer
InfinispanGlobalConfigurerBean は 1 つしか作成できません。ただし、他の Bean を使用して複数の設定を作成できます。
InfinispanCacheConfigurer Bean
設定 Bean
次のように、設定するキャッシュに Bean 名をリンクします。
カスタマイザー Bean
2.3. Spring キャッシュサポートの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、埋め込みキャッシュとリモートキャッシュの両方を使用して、有効にできる Spring Cache の実装を提供します。
手順
-
@EnableCachingアノテーションをアプリケーションに追加します。
Data Grid スターターが以下を検出した場合:
-
EmbeddedCacheManagerBean の場合は、新しいSpringEmbeddedCacheManagerをインスタンス化します。 -
RemoteCacheManagerBean の場合は、新しいSpringRemoteCacheManagerをインスタンス化します。
参考資料
第3章 リモートキャッシュの使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタム TCP バイナリーワイヤプロトコルである Hot Rod を使用して、リモートの Data Grid クラスターからデータを保存および取得します。
3.1. RemoteCacheManager の設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターでリモートキャッシュを使用するようにアプリケーションを設定します。
-
スターターが
RemoteCacheManagerBeanを作成できるように、Data Grid Server がクライアント接続をリッスンするアドレスを指定します。 Spring
@Autowiredアノテーションを使用して、独自のカスタム Cache Manager クラスをアプリケーションに含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1. プロパティーファイル リンクのコピーリンクがクリップボードにコピーされました!
hotrod-client.properties または application.properties のいずれかでプロパティーを指定できます。
プロパティーは、両方のプロパティーファイルに含めることができますが、スターターは最初に hotrod-client.properties の設定を適用するので、application.properties よりもファイルが優先されます。
hotrod-client.properties
このファイルのプロパティーは、infinispan.client.hotrod.* の形式を取ります。次に例を示します。
List Data Grid servers by IP address or hostname at port localhost:11222.
# List Data Grid servers by IP address or hostname at port localhost:11222.
infinispan.client.hotrod.server_list=127.0.0.1:11222
application.properties
このファイルのプロパティーは、 infinispan.remote.* の形式を取ります。次に例を示します。
List Data Grid servers by IP address or hostname at port localhost:11222.
# List Data Grid servers by IP address or hostname at port localhost:11222.
infinispan.remote.server-list=127.0.0.1:11222
3.2. マーシャリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Java オブジェクトをバイナリー形式にマーシャリングするように Data Grid を設定して、ネットワーク経由で転送したり、ディスクに保存したりできるようにします。
デフォルトでは、Data Grid は Java シリアル化マーシャラーを使用するため、クラスを許可リストに追加する必要があります。別の方法として、ProtoStream を使用できます。これには、クラスにアノテーションを付けて、カスタム Java オブジェクトの SerializationContextInitializer を生成する必要があります。
手順
-
hotrod-client.propertiesまたはapplication.propertiesを開いて編集します。 次のいずれかを行います。
マーシャラーとして ProtoStream を使用します。
infinispan.client.hotrod.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshaller
infinispan.client.hotrod.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshallerCopy to Clipboard Copied! Toggle word wrap Toggle overflow infinispan.remote.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshaller
infinispan.remote.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshallerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Java シリアル化を使用する場合は、使用するクラスをシリアル化許可リストに追加します。完全修飾クラス名のコンマ区切りリストまたはクラスを照合するための正規表現を指定できます。
infinispan.client.hotrod.java_serial_allowlist=your_marshalled_beans_package.*
infinispan.client.hotrod.java_serial_allowlist=your_marshalled_beans_package.*Copy to Clipboard Copied! Toggle word wrap Toggle overflow infinispan.remote.java-serial-allowlist=your_marshalled_beans_package.*
infinispan.remote.java-serial-allowlist=your_marshalled_beans_package.*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- プロパティーファイルを保存して閉じます。
3.3. キャッシュマネージャーの設定 Bean リンクのコピーリンクがクリップボードにコピーされました!
次の設定 Bean を使用して Cache Manager をカスタマイズします。
-
InfinispanRemoteConfigurer -
Configuration -
InfinispanRemoteCacheCustomizer
InfinispanRemoteConfigurerBean は 1 つしか作成できません。ただし、他の Bean を使用して複数の設定を作成できます。
InfinispanRemoteConfigurer Bean
設定 Bean
InfinispanRemoteCacheCustomizer Bean
@Bean
public InfinispanRemoteCacheCustomizer customizer() {
return b -> b.tcpKeepAlive(false);
}
@Bean
public InfinispanRemoteCacheCustomizer customizer() {
return b -> b.tcpKeepAlive(false);
}
@Ordered アノテーションを使用して、カスタマイザーを特定の順序で適用します。
3.4. Spring キャッシュサポートの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、埋め込みキャッシュとリモートキャッシュの両方を使用して、有効にできる Spring Cache の実装を提供します。
手順
-
@EnableCachingアノテーションをアプリケーションに追加します。
Data Grid スターターが以下を検出した場合:
-
EmbeddedCacheManagerBean の場合は、新しいSpringEmbeddedCacheManagerをインスタンス化します。 -
RemoteCacheManagerBean の場合は、新しいSpringRemoteCacheManagerをインスタンス化します。
参考資料
3.5. Data Grid 統計の公開 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、Spring Boot Actuator をサポートして、キャッシュ統計をメトリクスとして公開します。
手順
pom.xmlファイルに以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow プログラムまたは宣言を使用して、適切なキャッシュインスタンスの統計を有効にします。
プログラム
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 宣言
<local-cache statistics="true"/>
<local-cache statistics="true"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Spring Boot Actuator レジストリーは、アプリケーションの起動時にキャッシュインスタンスをバインドします。
キャッシュを動的に作成する場合は、次のように、 CacheMetricsRegistrarBean を使用してキャッシュを Actuator レジストリーにバインドする必要があります。
第4章 SpringSession の使用 リンクのコピーリンクがクリップボードにコピーされました!
4.1. Spring Session サポートの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Spring Session サポートは SpringRemoteCacheManager と SpringEmbeddedCacheManager をもとに構築されます。Data Grid スターターは、デフォルトでこれらの Bean を生成します。
手順
- このスターターをプロジェクトに追加します。
- Spring Session をクラスパスに追加します。
次のアノテーションを設定に追加します。
-
@EnableCaching -
@EnableInfinispanRemoteHttpSession -
@EnableInfinispanEmbeddedHttpSession
-
Data Grid にはデフォルトのキャッシュがありません。Spring Session を使用するには、最初に Data Grid キャッシュを作成する必要があります。
第5章 アプリケーションのプロパティー リンクのコピーリンクがクリップボードにコピーされました!
application.properties または application.yaml を使用してプロジェクトを設定します。