2011-08-04 175 views
8

目前我們有2個應用服務器,每個應用服務器都有應用級別的緩存並具有集中的數據庫服務器。爲了保持兩臺服務器應用程序緩存的同步,我們在兩者之間建立了JMS代理。在一個向JMS發送消息的服務器上清除緩存時,由於其他消息被註冊,所以它將根據消息內容獲取消息並清除該條目。集中緩存服務器。 (Ehcache或Hazelcast)

由於此消息傳遞系統在清除緩存條目時增加了延遲,因此在一段時間內應用程序級緩存之間會存在不一致。

所以我們認爲有集中緩存服務器,以避免所有這些額外的工作來保持所有緩存同步。

我們正在考慮使用的Ehcache /兵馬俑Hazelcast,這些緩存保持結果集,鎖定信息,以及一些系統的具體varaibles。

請爲我們建議最佳緩存解決方案。

回答

1

我們一直在使用集中的Memcached服務器(作爲Hibernate的二級緩存和其他緩存要求),它對我們來說工作得很好。我們使用Memcached和XMemcached客戶端,到目前爲止它的工作沒有任何問題。

+1

任何memcache客戶端都可用於緩存Hazelcast節點中的內容。 Hazelcast支持memcache協議。 –

9

我恐怕無法建議最佳爲你解決,但我會盡力給予一些建議:

Hazelcast:提供了非常好用的分佈圖(和價值的其他東西很多對看看 - 分佈式SQL查詢非常整潔):

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

你就完成了。使用標準API在地圖上工作。 Hazelcast config/setup非常簡單(與Ehcache/TC相比)。監控網絡應用程序也很容易使用和幫助,但有些東西丟失。對於小羣集(如2臺服務器),性能應該足夠了。

Ehcache/Terracotta:會爲您的設置引入新的基礎設施組件(Terracotta Server) - 可能是一個缺點。在我學習和嘗試的東西方面,使用這種設置是非常激烈的。承諾是企業級的性能和監控設施。

如果您沒有極高的性能要求,我個人會選擇Hazelcast並避免Ehcache/TC的複雜性。

+1

我同意jeha。此外,Hazelcast提供了一種靈活的遠程線程功能,可以非常方便地處理羣集操作,並可與JMX一起使用。我們一直非常喜歡Hazelcast。 – ecodan