我應該創建一個簡單的複製緩存,使用java作爲內部用途,將用於分佈式環境。我見過oracle已經實施Replicated Cache Service。分佈式環境下的Java緩存
我正面臨的問題是在執行更新或刪除操作時,我獲取了其他緩存的鎖定,以便更新緩存並更新並通知其他人。這最終會進入死鎖狀態,同時會被移除。在更新或從緩存中刪除時,是否應該遵循任何策略?
- 我可以在沒有主緩存的情況下實現複製緩存嗎?
我應該創建一個簡單的複製緩存,使用java作爲內部用途,將用於分佈式環境。我見過oracle已經實施Replicated Cache Service。分佈式環境下的Java緩存
我正面臨的問題是在執行更新或刪除操作時,我獲取了其他緩存的鎖定,以便更新緩存並更新並通知其他人。這最終會進入死鎖狀態,同時會被移除。在更新或從緩存中刪除時,是否應該遵循任何策略?
Ehcache與對等體使用不同的體系結構並使用多播進行同步。檢查文檔
怎麼樣的Java緩存系統,JCS:http://jakarta.apache.org/jcs/
我測試過的橫向TCP緩存(與UDP發現服務) http://jakarta.apache.org/jcs/LateralTCPProperties.html
JCS應該爲你做的工作,因爲它帶有在設計配置方面具有良好的靈活性。當我們談到複製的時候,吸引人的特性就是數據的延遲加載,其中根據該對象的獲取請求僅複製所需的數據。這減少了內存佔用。
請在apache JCS站點中使用JCS查找遠程緩存服務器。
我會推薦使用MemCached。它具有進程內存儲(在專用緩存服務器上)。此外,緩存服務器是用C/C++編寫的,並且在運行時以低CPU命中率和良好的內存利用率實現了良好的性能。請參閱:http://memcached.org
有一個非常好的Java客戶端連接到服務器。請參閱:http://code.google.com/p/spymemcached
關於多個高速緩存服務器和選拔機制,去哪個服務器...這裏是從下面的文章部分:
在默認配置下,Memcached的客戶端使用非常簡單 邏輯選擇獲取或設置操作的服務器。當您調用get()或set()時,客戶端將獲取緩存鍵並調用其 hashCode()方法來獲取諸如11的整數。然後,將該數字取爲 ,並將其除以可用Memcached的數量服務器,說 兩個。然後它取其餘的值,在這個 的情況下是1。緩存條目將進入Memcached服務器1.此簡單的 算法可確保每個 應用程序服務器上的Memcached客戶端始終爲給定緩存 密鑰選擇相同的服務器。
而且文章是在這裏:
使用memcached的Java企業級性能,第1部分:體系結構和設置http://www.javaworld.com/javaworld/jw-04-2012/120418-memcached-for-java-enterprise-performance.html
使用memcached的Java企業級性能,第2部分:數據庫 - 驅動的網絡應用程序http://www.javaworld.com/javaworld/jw-05-2012/120515-memcached-for-java-enterprise-performance-2.html
問題不明確!你已經分配了地圖A和B.你獲得對B中的一個鍵的鎖定來更新A並且鎖定A中的一個鍵來更新B?如果是這樣,爲什麼? 主要緩存是什麼意思? 需要更多信息才能回答。 – 2010-05-02 22:42:53
你爲什麼使用鎖定?如果使用鎖定和死鎖發生,則表示應用程序邏輯錯誤。 – cpurdy 2014-02-14 19:55:52