2016-04-28 117 views
2

我們在兩個節點上有Spring引導應用程序。現在我們希望保留一些數據到緩存中,而不是每5秒調用一次外部服務。問題是如何在兩個節點之間共享緩存?可能嗎 ?或者也許爲每個節點創建兩個獨立的緩存?哪種方法更好?我認爲維護共享緩存非常困難。感謝您提供任何提示春季4,共享緩存beetwen節點

+0

您可以使用配置的Ehcache進行羣集。 –

+0

我需要另一臺ehcache服務器嗎? – user3528733

+0

不,它只是一個可以嵌入到應用程序中的庫。甚至沒有一個單獨的過程。 –

回答

6

我將選擇您的術語「共享緩存」,它表示集羣或分佈式緩存產品,例如Infinispan,hazelcast或Apache Ignite。

您可能希望由於以下原因共享緩存:

一致性:如果您的應用程序更新緩存中的一個節點,一個共享的緩存會在意更新的傳播,並確保每一個節點發現更新完成後的新值。這是共享緩存可以給你的東西,但不一定是任何「共享緩存」產品。

次10​​問題:當您添加更多節點時,共享緩存將限制對外部服務的請求,否則每個節點可能會請求相同的值。

大數據:這適用於分佈式緩存:您可以緩存更多數據,然後在一個系統中存在空間。

但是,您以更多的配置和部署複雜性爲代價獲得了這些好處。此外,共享緩存的訪問延遲通常遠高於本地緩存。爲了進行比較,請看這些benchmarks

總結:現在有兩個節點。如果您沒有協調更新或失效的問題,請保留簡單的本地緩存。如果你想成爲未來的證明,並有空閒時間來修補共享緩存,去吧:)

0

由於你已經使用春季啓動,我會使用緩存抽象(註釋)在後臺使用Redis的背景。 Redis可以很容易地共享和集羣,並且性能足夠好。請參閱official documentation

+0

好吧,但是我需要另一臺機器來安裝redis嗎? – user3528733

+0

那麼如果您想要容錯,則需要在多臺機器上安裝Redis並設置HA羣集(http://redis.io/topics/cluster-tutorial)。如果您可以在運行應用程序的同一臺計算機上執行此操作,則取決於安全性要求以及是否有足夠的容量。 –