2015-05-19 94 views
0

我們在逆向代理服務器後面有多個Application Server。我們希望所有Application Server都可以輕鬆使用的另一臺主機上有單個緩存,因此緩存必須具備某種網絡支持。此外,該設置應該很容易支持碼頭,但這不是必須的。緩存持續時間約爲1天。 API應該儘可能簡單和標準化(JCache?)。 在稍後的階段中,我們要對緩存進行預處理。多個應用程序服務器的單個Java緩存

我有哪些選擇?

背景:在第一步中,我們希望減少後端系統(主要提供SOAP服務)的負載。所以我們想緩存SOAP響應(JAX-WS)。第一階段緩存命中率可能大約爲25%。 後來我們也想爲JPA使用相同的緩存(我們已經爲每個應用程序服務器啓用了內存緩存並使用緩存協調策略)。 要使用更多緩存,我們需要一些排序緩存類別。

+0

您是否試過memcached?它只是在特定端口運行緩存服務器,並且可以從所有應用程序服務器調用它。它也有一個不錯的java apis。 –

+0

檢查這個網站:http://www.javaworld.com/article/2078565/open-source-tools/use-memcached-for-java-enterprise-performance--part-1--architecture-and-setup.html –

+0

他們使用spymemcached作爲客戶端,這是一個有點在我們想要的。一個鎖到關於客戶端是開放的。但這將是一個可行的選擇。 – Christian

回答

0

如何使用Ehcache的緩存服務器? 它提供了一個RESTful接口,並可以在專用服務器上運行。

1

一般來說:問題是廣泛的,實際上你是要求產品推薦。請看看stackoverflow問題指南。

關於你的問題:

沒有任何目的的「單一緩存」。此外,軟件和系統體系結構中也可能有很多變體,也有單個緩存產品。最佳解決方案不取決於應用程序,而取決於要緩存的數據訪問類型。我想到的一些問題:

您是否擁有大部分讀取或讀/寫使用模式? 什麼是訪問類型,點,範圍或全面掃描?你在數據上做什麼類型的操作?什麼是對象數量和典型對象大小?有沒有熱點?你有多少個應用程序服務器?應用程序服務器中是否有內存限制?它在後端生成數據的成本是多少(延遲和資源成本)?

一個一般建議:如果只有少數應用程序服務器,我將開始與應用程序服務器的本地緩存和忽略了一個事實,有可能是從不同的應用服務器後端的冗餘請求。這樣你可以保持現有的系統架構。放入一個或多個單獨的緩存服務器需要進行大量的計劃,並且需要很多注意事項來分階段部署和操作應用程序。

一秒鐘的一般建議:第一階段的緩存命中率可能大約爲25%這個命中率的緩存將毫無用處。可能發生的情況是,根本沒有從緩存中獲得任何性能收益。無論如何,可能有理由這樣做,例如,改善Flash羣體的應用。這需要更詳細的闡述。仔細檢查你的數字!

我期待更詳細的問題:)

+0

Thx爲答案。對每個實例使用本地緩存可能是最好的。 25%是一見鍾情,但在第二階段,我們希望每晚預先填充緩存,並達到可能接近90%的命中率。 25%的數據至少可以幫助用戶多次查詢相同(昂貴)的數據。我們現在要做一個JCache實現,可能是Infinispan,它給了我們很多關於基礎設施的選擇。第二,它將有助於減少多年來增加的代碼複雜度,因爲一些對象已經被緩存在不同地方的hashmaps中。 – Christian

相關問題