web-dev-qa-db-ja.com

Spring Boot、EhCacheによるキャッシュ

アプリケーションにいくつかのデータをキャッシュする必要があり、Ehcacheの使用を考えています。そして、私はいくつかの質問があります:

  1. Ehcache用に別のサーバーが必要ですか?
  2. Ehcacheを操作するために別のクライアントが必要ですか?
  3. Ehcacheは複数のインスタンスでどのように機能しますか? Ehcacheを使用して共有キャッシュのようなものを作成することさえ可能ですか?
8
user3528733

Ehcache用に別のサーバーが必要ですか?

Ehcacheはスタンドアロンモードで使用できます。このトポロジでは、キャッシュデータはアプリケーションノードに保持されます。したがって、このモードでは別のサーバーは必要ありません。 Ehcacheは 他の2つのモード も提供します:

  1. Distributed–データはリモートサーバー(またはサーバーの配列)に保持され、最近使用されたデータのサブセットは各アプリケーションノードに保持されます。このトポロジは、一貫性オプションの豊富なセットを提供します。分散トポロジは、クラスター化またはスケールアウトされたアプリケーション環境で推奨されるアプローチです。最高レベルのパフォーマンス、可用性、およびスケーラビリティを提供します。

    分散トポロジは、 Terracottaオープンソースオファリング として利用できます。クライアントの制限はありませんが、Terracottaクラスターサイズの制限があります。これらは、商用 BigMemory Max を使用すると削除されます。

  2. Replicated–キャッシュされたデータセットは各アプリケーションノードに保持され、データはロックされずにノード間でコピーまたは無効化されます。レプリケーションは非同期または同期のいずれかで、伝播の発生中に書き込みスレッドがブロックされます。このトポロジでサポートされている唯一の整合性モードは、弱い整合性です。

Ehcacheを操作するために別のクライアントが必要ですか?

Ehacheと通信できるようにするには、Ehcacheライブラリを使用する必要があります。ただし、Springは、よりエレガントなキャッシング抽象化を提供し、基盤となるキャッシング実装から独立しているという利点もあります。したがって、Spring Caching Abstractionを使用すると、EhcacheからHazelcastなどに簡単に切り替えることができます。 Spring Caching Abstractionの詳細については、 here を参照してください。

Spring Boot は、キャッシュサポートが有効になっている限り、実装に応じて適切なCacheManagerを自動構成するspring-boot-starter-cacheスターターパッケージを提供します。

Ehcacheは複数のインスタンスでどのように機能しますか? Ehcacheを使用して共有キャッシュのようなものを作成することさえ可能ですか?

Ehcacheドキュメント からの引用:

Ehcacheは、複数のノード間で複製できるインプロセスキャッシュを提供します。また、テラコッタの商用キャッシングおよびインメモリデータストレージ製品であるBigMemoryGoおよびBigMemoryMaxの中核でもあります。 BigMemoryMaxで提供されるTerracottaServer Arrayは、テラバイトサイズのキャッシュを使用したインプロセス/アウトプロセス構成の混合を可能にします。 TerracottaのBigMemory製品の詳細については、 http://terracotta.org/documentation にあるBigMemoryGoおよびBigMemoryMax製品のドキュメントを参照してください。

上記のように、Ehcacheで利用できる無料のクラスタリングオプションがあります。この要件には、RedisとHazelcastも適切なオプションです。

11
Ali Dehghani

ドキュメントと例は、すべての質問に答える必要があります。

https://spring.io/blog/2015/06/15/cache-auto-configuration-in-spring-boot-1-https://github.com/ spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-cache

もちろん、SpringBootアプリケーション内に埋め込まれたEhCacheを使用することもできます。キャッシュを共有する場合は、アーキテクチャによって異なります。 RESTエンドポイントを公開して、キャッシュを他のアプリケーションで利用できるようにすることができます。

分散型のスケーリング型の高性能キャッシュが必要な場合は、Hazelcastをご覧ください。

2
Benjamin M