注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

Ehcache分布式缓存配置指南  

2009-11-27 09:50:20|  分类: cache |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

自从Ehcache 到了1.2+的版本,就支持分布式缓存了。我们考虑到Spring + Hibernate的结构 ,ehcache的对这几个框架的支持较好,就一直采用这个缓存方案。
地址:http://ehcache.sourceforge.net/

先介绍没有分布式缓存需求的配置:
1.先下载ehcache的jar包。download
最新版本 11 June 2007: ehcache-1.3 released。
解压后,有几个文件:
ehcache-1.3.0.jar:需要将它放置到WEB-INF/lib下
ehcache-1.3.0-remote-debugger.jar:不要发布到你的工程中,是用来调试和监控你的cache状况的
ehcache-1.3.0-sources.jar:源代码
ehcache.xml :重要的配置文件,需要复制到classpath下 。
2.ehcach.xml配置文件主要参数的解释,其实文件里有详细的英文注释


//DiskStore 配置,cache文件的存放目录 ,主要的值有
*user.home - 用户主目录
* user.dir - 用户当前的工作目录
* java.io.tmpdir - Default temp file path默认的temp文件目录

//强制默认的cache配置

<defaultCache
            
maxElementsInMemory="10000"
            
eternal="false"
            
timeToIdleSeconds="120"
            
timeToLiveSeconds="120"
            
overflowToDisk="true"
            
diskSpoolBufferSizeMB="30"
            
maxElementsOnDisk="10000000"
            
diskPersistent="false"
            
diskExpiryThreadIntervalSeconds="120"
            
memoryStoreEvictionPolicy="LRU"
            
/>

必须属性:
name:设置缓存的名称,用于标志缓存,惟一
maxElementsInMemory:在内存中最大的对象数量
maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制
eternal:设置元素是否永久的,如果为永久,则timeout忽略
overflowToDisk:是否当memory中的数量达到限制后,保存到Disk

可选的属性:
timeToIdleSeconds:设置元素过期前的空闲时间
timeToLiveSeconds:设置元素过期前的活动时间
diskPersistent:是否disk store在虚拟机启动时持久化。默认为false
diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒
memoryStoreEvictionPolicy:策略关于Eviction

缓存子元素:
cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire
bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

3.分布式缓存配置方法 是基于RMI方式的
在cache.xml(ehcache的配置文件)中加入

<cacheManagerPeerProviderFactory
        
class="net.sf.ehcache.distribution
.RMICacheManagerPeerProviderFactory
"
        
properties="peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1, multicastGroupPort=4446
"/>
<cacheManagerPeerListenerFactory
        
class="net.sf.ehcache.distribution.
RMICacheManagerPeerListenerFactory
"/>

//自动查找局域网中分布式的peer 。也可以手工指定节点的地址的,如:
peerDiscovery=manual,rmiUrls=//server1:40000/sampleCache1

另外在每个cache属性中加入

<cacheEventListenerFactory
class="net.sf.ehcache.distribution.
RMICacheReplicatorFactory
"/>

例如:

  1. <cache name="a"
  2.      maxElementsInMemory="10000"
  3.      eternal="true"
  4.      overflowToDisk="true">
  5.      <cacheEventListenerFactory
  6. class="net.sf.ehcache.distribution.
  7. RMICacheReplicatorFactory"/>
  8. </cache>

还有几个不错的cache的还是准备7研究一下的:


Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。

SwarmCache是一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想选择。

Open Terracotta 一个JVM级的开源群集框架,提供:HTTP Session复制,分布式缓存,POJO群集,跨越群集的JVM来实现分布式应用程序协调(采用代码注入的方式,所以你不需要修改任何)。

JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制,让你轻松进行Jboss服务器 之间的集群工作。JBossCache能够通过Jboss应用服务或其他J2EE容器来运行一个Mbean服务,当然,它也能独立运行。 JBossCache包括两个模块:TreeCache和TreeCacheAOP。 TreeCache –是一个树形结构复制的事务处理缓存。 TreeCacheAOP –是一个“面向对象”缓存,它使用AOP来动态管理POJO

OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。 OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特 点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API–OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存–缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create) 数据来保持缓存,甚至能让应用重启。支持集群–集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期–你可以有最大限度的控制缓存对象的 过期,包括可插入式的刷新策略(如果默认性能不需要时)。

  评论这张
 
阅读(1645)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017