文档章节

Distributed Ehcache

ZooKeeper
 ZooKeeper
发布于 2013/12/21 14:17
字数 990
阅读 674
收藏 3

        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 在应用程序中的位置:

图 1. EhCache 应用架构图

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.

       在实际应用中,每一个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



© 著作权归作者所有

共有 人打赏支持
ZooKeeper
粉丝 54
博文 28
码字总数 13920
作品 0
杭州
程序员
私信 提问
2010年3月9日ehcache 2.0发布

March 9, 2010: Ehcache 2.0 Released In the last six months, we have invested tens of thousands of person-hours into improving Ehcache, adding features and improving performance ......

gtd
2010/03/17
246
3
Ehcache 2.0 正式版发布,Java缓存框架

In the last six months, we have invested tens of thousands of person-hours into improving Ehcache, adding features and improving performance with the Terracotta Server Array. Th......

红薯
2010/03/09
400
0
ehcache.xml,怎么知道hibernate的二级缓存配置有么有生效

ehcache.xml,感觉查询速度好像没有怎么变化是不是 配置没有成功 这是网上下载的xml配置文件:

Baclk5
2014/07/29
460
0
CAS客户端票据分发问题

使用memcached解决票据分发 导入jar文件 org.jasig.cascas-client-support-distributed-ehcache3.1.9compilejar 2. 在客户端web.xml文件中 CAS Validation Filterorg.jasig.cas.client.vali......

Heinrich_Chen
2016/07/21
26
0
杨唯浩/smart-cache

smart-cache Introduce Java distributed second-level cache, which is achieved based on Ehcache2 and Redis, can realize cache monitoring and fetching of multi-computer cluster at ......

杨唯浩
2017/06/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

降压变换器 Buck

特点 输入输出极性相同。 工作过程 在 MOS 导通时,输入电源通过 L 和 C 滤波后向负载端提供电流;当 MOS 断开后,L 通过二极管续流,保持负载电流连续。输出电压因为占空比的作用,不会超过...

colinux
今天
1
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
4
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部