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.


           EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。

下图是 EhCache 在应用程序中的位置:

Distributed Ehcache_第1张图片

EhCache 的主要特性有:

  1. 快速;

  2. 简单;

  3. 多种缓存策略;

  4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题;

  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.

Distributed Ehcache_第2张图片

       在实际应用中,每一个App Server需要引用Ehcache的library,并配置相应TSA的IP和端口.  每个Ehcache基于在一个JVM上,并负责维持和远程TSA的通信. 从某种角度,我们理解TSA相当于Ehcache的一个远程镜像.

      Distributed Ehcache_第3张图片

         分布式Terracotta采分层的内存管理模型. 

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

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

 Distributed Ehcache_第4张图片


        这里主要介绍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



你可能感兴趣的:(Distributed Ehcache)