3

私たちのプロジェクトでは、アプリケーションでEhcacheをHibernateおよびクエリキャッシングの第2レベルのキャッシュとして使用することにしました。うまく機能しているようです。

その後、突然、実稼働環境がクラスター化されていることに気付きました。ehcacheのドキュメントを見ると、分散キャッシングを使用するのが最善であることがわかりますが、これにはTerracottaサーバーが含まれます。これは、クライアントがこの段階で支払う準備ができていないものです。

ドキュメントによると、スタンドアロントポロジの場合:

同じアプリケーションを実行している複数のアプリケーションノードがある場所でスタンドアロンキャッシングが使用されている場合、それらの間には弱一貫性があります。

私の2つの質問は次のとおりです。

  1. 「読み取り専用」モードでehcacheを使用し、クラスター化された環境でスタンドアロンで使用し続けると、どのような影響がありますか?それだけなら、他のノードにヒットする場合は、キャッシュがそこで複製/構成されないため、DBからデータをフェッチするので、私たちはそれを取ると思います。唯一のことは、それが異常をもたらすべきではないということです。シナリオにスタンドアロントポロジを使用した場合の結果を知りたいと思います。

  2. 解決策として、3番目のトポロジであるReplicate Cachingを見ることができますか?

私はehcacheを初めて使用するため、これらの基本的な質問をします。返信ありがとうございます!

ありがとう!

4

1 に答える 1

0

アプリケーションがクラスター化されていて、変更される可能性のあるデータをキャッシュする必要がある場合は、これをサポートするキャッシュ ソリューションを使用する必要があります。おっしゃるとおり、クラスターで EhCache を使用する場合は、Terracotta を使用する必要があります。

Hibernate のドキュメントには、サポートされているキャッシュ プロバイダーが一覧表示されています

Infinispan (分散キャッシングに対するオープン ソース JBoss ソリューション) を使用して、これを正常に実装しました。ここには、起動して実行するために必要なすべてを提供する包括的なガイドがあります。

Infinispan は、無効化、複製、分散など、複数の操作モードをサポートしています。2LC のデフォルトは同期無効化です。このモードでは、クラスタ内のノードでエンティティが更新されると、キャッシュ領域が無効になり、他のすべてのノードに通知され、同じことが行われます。

于 2012-09-24T13:24:34.420 に答える