Distributed Ehcache

        Ehcache

        Terracotta是一款由美國Terracotta公司開發的著名開源Java集羣平臺。它在JVM與Java應用之間實現了一個專門處理集羣功能的抽象層,以其特有的增量檢測、智能定向傳送、  分佈式協做、服務器鏡像、分片等技術,容許用戶在不改變現有系統代碼的狀況下實現單機Java應用向集羣話應用的無縫遷移。使得用戶能夠專一於商業邏輯的開發,  由Terracotta負責實現高性能、高可用性、高穩定性的企業級Java集羣 .  Terracotta在2009年收購了Ehcache,Terracotta致力於繼續維護Ehcache社區,並接計劃保留Ehcache繼續作爲一個基於Apache 2許可證的開源產品. 也所以Ehcache從一個緩存框架搖身一變爲一套解決方案. Terracotta也同時發佈了須要付費的Ehcache企業版本,好比針對Big Memory問題,而出現的GC 停頓時間長的問題.好比Big Memory Go 和Big Moemory Max.
java


           EhCache 是一個純 Java 的進程內緩存框架,具備快速、精幹等特色,是 Hibernate 中默認的 CacheProvider。緩存

下圖是 EhCache 在應用程序中的位置:服務器

圖 1. EhCache 應用架構圖

EhCache 的主要特性有:架構

  1. 快速;框架

  2. 簡單;分佈式

  3. 多種緩存策略;ide

  4. 緩存數據有兩級:內存和磁盤,所以無需擔憂容量問題;post

  5. 緩存數據會在虛擬機重啓的過程當中寫入磁盤;性能

  6. 能夠經過 RMI、可插入 API 等方式進行分佈式緩存;網站

  7. 具備緩存和緩存管理器的偵聽接口;

  8. 支持多緩存管理器實例,以及一個實例的多個緩存區域;

  9. 提供 Hibernate 的緩存實現;

    

       EhCache 從 1.7 版本開始支持集羣, 在此以前 EhCache 是進程中的緩存系統,一旦將應用部署在集羣環境中,每個節點維護各自的緩存數據,當某個節點對緩存數據進行更新,這些更新的數據沒法在其它節點中共享, 這不只會下降節點運行的效率,並且會致使數據不一樣步的狀況發生。例如某個網站採用 A、B 兩個節點做爲集羣部署,當 A 節點的緩存更新後,而 B 節點緩存還沒有更新就可能出現用戶在瀏覽頁面的時候,一會是更新後的數據,一會是還沒有更新的數據,儘管咱們也能夠經過 Session Sticky 技術來將用戶鎖定在某個節點上,但對於一些交互性比較強或者是非 Web 方式的系統來講,Session Sticky 顯然不太適合。因此就須要用到 EhCache 的集羣解決方案。目前EhCache支持五種集羣方案,分別是:

  • Terracotta

  • RMI

  • JMS

  • JGroups

  • EhCache Server

    Terracotta

        分佈式Terracotta由運行中的Ehcache和一系列的Terracotta Server(TSA)組成. 分佈式Terracotta從邏輯上分爲兩層L1和L2,  L1指使用Ehcache的App Server.  L2充當L1的replication數據, 存放L1上Ehcache上數據的徹底備份.  L1存放常常使用的數據, 萬一L1中一個App Server Crash後, 重啓動後,能夠從L2 TSA pull以前緩存的數據.  從而保證它的High Available.

       在實際應用中,每個App Server須要引用Ehcache的library,並配置相應TSA的IP和端口.  每一個Ehcache基於在一個JVM上,並負責維持和遠程TSA的通訊. 從某種角度,咱們理解TSA至關於Ehcache的一個遠程鏡像.

     

         分佈式Terracotta採分層的內存管理模型. 

        L1: 支持Heap Store和BigMemory(off-heap,內存直接存儲).

        L2:支持Heap Store, BigMemory and Local Disk Store.

 


        這裏主要介紹Terracotta , 其它的四種方式,你們若是感興趣,  推薦另外一篇blog:  http://www.ibm.com/developerworks/cn/java/j-lo-ehcache/      

[Reference]:

http://www.oschina.net/p/ehcache

http://ehcache.org/documentation/2.4/terracotta/architecture

 http://forums.terracotta.org/forums/posts/list/2413.page 

Big Memory : http://ehcache.org/documentation/bigmemory/index

相關文章
相關標籤/搜索