我正在尋找一種解決方案來共享在不同主機上運行的兩個tomcat Web應用程序之間的緩存。該緩存正在用於數據同步,因此必須保證兩個tomcat實例之間的緩存始終保持最新狀態。 (對不起,我不是100%確定這個要求的正確術語是否是「一致性」,或者像ACID屬性那樣更具體)。另一個要求當然是訪問緩存的速度應該很快,寫入次數大致相等。我確實可以訪問共享文件系統,這是一個考慮因素。Tomcat Web應用程序之間的共享緩存
我已經看過類似ehcache的東西,但爲了獲得Web應用程序之間的共享緩存,我需要在Terracotta環境之上實現或使用新的ehcache緩存服務器。前者(兵馬俑)似乎對此過度殺傷,而緩存Web服務器似乎不會提供我想要的快速性能。
我看過的另一個解決方案是在像Redis或memcachedb這樣的快速鍵值存儲之上構建一些簡單的東西。 Redis在內存中,但可以輕鬆配置爲集中緩存,而memcachedb是基於磁盤的持久緩存,可以工作,因爲我擁有共享文件系統。
我在尋找如何最好地解決這個問題的建議。該解決方案需要成爲相對成熟的技術,因爲它將用於生產環境。
在此先感謝!
也許您需要詳細說明緩存「100%始終保持最新狀態」。確保這一點的唯一方法是在正在使用時鎖定緩存項,這意味着它不再是緩存。您可能可以使用zookeeper來滿足同步需求,而memcache可以作爲緩存,但這取決於您的需求。 – sbridges 2011-04-19 04:52:04
緩存是放在tomcat的前面還是後面?即您是否需要緩存輸出或輸入? – 2011-04-19 07:17:25
本質上,我試圖完成的是分佈式Tomcat應用程序的數據庫級別的線程安全性。但我真的不想使用數據庫鎖定甚至表級鎖定。因此,我試圖實現一種「記錄級」鎖定機制,爲了使其在多個Tomcat實例中工作,鎖定機制必須能夠被所有實例訪問 - 因此想到了一個共享的「緩存」也是爲什麼我把它放在引號中,因爲它可能不是正確的術語。 – cambo 2011-04-21 14:52:38