2012-09-21 333 views
2

在我們的項目中,我們決定在我們的應用程序中使用Ehcache作爲Hibernate和查詢緩存的二級緩存。它似乎運作良好。羣集的獨立/複製Ehcache

然後突然我們意識到我們的生產環境是聚集在一起的。看看ehcache文檔,我發現最好的辦法是進行分佈式緩存,但之後需要使用Terracotta服務器,客戶在此階段不會爲此付費。

根據文檔,對於獨立拓撲:

如果獨立緩存正在使用其中存在運行相同應用程序的多個應用程序 節點,那麼在它們之間存在弱 一致性。

我的兩個問題是:

  1. 在「只讀」模式下使用的Ehcache和繼續使用它獨立在集羣環境中,什麼是我們將採取的打擊?因爲如果只是說,對於這種情況,它會觸及其他節點,它會從數據庫中提取數據,因爲緩存不會在那裏被複制/配置,我想我們會拿它。唯一的事情是,它不應該導致異常。我想知道爲我的場景使用獨立拓撲的後果。

  2. 我們可以看看第三種拓撲復制緩存作爲解決方案嗎?

我是新來ehcache,因此這些基本問題。回覆非常感謝!

謝謝!

+0

這裏同樣存在問題,我也在調查Infinispan;請參閱https://labs.consol.de/java-caches/瞭解冰塊比較和使用場景。 – lrkwz

回答

-2

聽起來好像你並沒有真正考慮過你在這方面的要求。

在我們的項目,我們決定使用的Ehcache在我們的應用程序設置爲休眠和查詢高速緩存的 二級緩存。這似乎是 運作良好。

然後突然我們意識到我們的生產環境是 聚集。

你怎麼突然意識到你的應用程序需要在羣集中運行?

我看到的最好的事情是去爲分佈式緩存,但 則涉及兵馬俑服務器

如果您的應用程序集羣,你需要緩存可能更改數據,您需要使用支持這個的緩存解決方案。正如你所說,如果你想在集羣中使用EhCache,你需要使用Terracotta。

Hibernate文檔列出了支持的緩存提供程序here

我已經使用Infinispan(分佈式緩存的開源JBoss解決方案)成功實現了這個功能。有一個全面的指導here這將給你一切你需要啓動和運行。

Infinispan支持多種操作模式,包括失效,複製和分佈式。 2LC的默認值是同步失效。在這種模式下,當一個實體在集羣中的某個節點上更新時,它將使緩存區域無效,並且所有其他節點都將被通知並執行相同的操作。

+0

我沒有說我們突然意識到應用程序需要在羣集中運行。我說,「我們意識到我們的生產環境是聚集在一起的」。這意味着,這是一個啓示,因爲這個應用程序對於團隊來說是新的。現在,我們沒有選擇。我們要麼單獨使用ehcache,要麼完全放棄。因此,我的問題圍繞着這個問題展開 - 在具有兩個帶有「只讀」Hibernate緩存策略的託管服務器的集羣中使用獨立拓撲。 –

+2

向下投票,因爲沒有附加價值,例如「這聽起來像你沒有真正考慮過你在這方面的要求。」和「你怎麼突然意識到你的應用程序需要在羣集中運行?」 – Tinman

+0

Downvote,我同意@Tinman – Sohan