2011-08-04 3 views
8

現在、2つのアプリケーションサーバーがあり、それぞれにアプリケーションレベルのキャッシュがあり、データベースサーバーが集中しています。両方のサーバーのアプリケーションキャッシュを同期させるために、中間のJMSブローカーを設定しました。 JMSにメッセージを送信する1つのサーバー上のキャッシュ・クリアでは、otherが登録されているため、メッセージを取得し、メッセージの内容に基づいてperticularエントリをクリアします。集中キャッシュサーバー。 (EhcacheまたはHazelcast)

このメッセージングシステムは、キャッシュエントリをクリアする際に待ち時間を追加するので、アプリケーションレベルのキャッシュ間に矛盾が生じることがあります。

私たちはすべてのキャッシュを同期させておくために、このような余計な作業を避けるために集中キャッシュサーバーを持つことを考えました。

我々は、これらのキャッシュホールド結果セット、ロック情報、およびいくつかのシステム固有varaiblesをEhcacheの/テラコッタまたはHazelcastを使用して考えています。

私たちに最適なキャッシュソリューションをお勧めします。

答えて

1

私たちは集中型Memcachedサーバ(Hibernateの第2レベルキャッシュとその他のキャッシュ要件として)とそれをうまく利用しています。我々はXMemcachedクライアントでMemcachedを使用していますが、これまでのところ問題なく動作しています。

+1

任意のmemcacheクライアントを使用して、Hazelcastノードで物事をキャッシュすることができます。 Hazelcastは、memcacheプロトコルをそのまま使用できます。 –

9

私はおそらくあなたのために最高解決策を提案することはできませんが、私はいくつかのアイデアを与えることをしようとするでしょう:

Hazelcast:分散マップを使用することは非常に簡単に提供しています(そして多くの他のもののに価値があります見て - 分散SQLクエリは非常にきれいです):

Map<String, Object> map = Hazelcast.getMap("xxx"); 

とされています。標準APIを使用してマップ上で作業します。ヘーゼルキャスト設定/セットアップは非常に簡単です(Ehcache/TCと比較して)。監視Webアプリケーションは使いやすく便利ですが、欠落しているものもあります。パフォーマンスは、2つのサーバーのような小さなクラスターでは十分すぎるはずです。

Ehcache/Terracotta:セットアップ(Terracotta Server)に新しいインフラストラクチャコンポーネントを導入する - 欠点かもしれません。この設定を使用することは、私の経験上、勉強して試してみるという点では非常に激しいことです。この約束は、エンタープライズクラスレベルのパフォーマンスと監視機能です。

私は個人的にはヘーゼルキャストに行き、Ehcache/TCの複雑さを避けるために極端に高いパフォーマンス要件がない場合は、

+1

私はジハと同意します。さらに、Hazelcastは、クラスタ操作で非常に手軽に利用できる滑らかなリモートスレッド機能を提供し、JMXとうまく機能します。私たちはヘーゼルキャストと非常に喜んでいます。 – ecodan

関連する問題