`
刘小小尘
  • 浏览: 67521 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

集群配置EHCache

 
阅读更多
EHCache 学习笔记官方网站http://ehcache.sourceforge.net/

  • EHCache 是一个纯java的,在Hibernate2.1充当可插入的在进程中的缓存。
  • 它具有以下特点:最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。
  • EHCache从1.2版本开始支持集群。(支持分布式,同步缓存)


EHCache的使用很简单:可以去http://www.blogjava.net/zyl/archive/2007/02/28/101208.html看看。

下面主要说下EHCache的集群:

分布式同步缓存要让这边的cache知道对方的cache,叫做Peer Discovery(成员发现)
EHCache实现成员发现的方式有两种:
第一,自动查找
自动的发现方式用 TCP 广播机制来确定和维持一个广播组。它只需要一个简单的配置可以自动的在组中添加和移除成员。在集群中也不需要什么优化服务器的知识,这是默认推荐的。
成员每秒向群组发送一个“心跳”。如果一个成员 5 秒种都没有发出信号它将被群组移除。如果一个新的成员发送了一个“心跳”它将被添加进群组。
任何一个用这个配置安装了复制功能的 cache 都将被其他的成员发现并标识为可用状态。
要设置自动的成员发现,需要指定ehcache配置文件中cacheManagerPeerProviderFactory元素的 properties属性,就像下面这样:
peerDiscovery=automatic multicastGroupAddress=multicast address | multicast host name
multicastGroupPort=port timeToLive=0-255 (timeToLive属性详见常见问题部分的描述)
示例
假设你在集群中有两台服务器。你希望同步 sampleCache1 和 sampleCache2。每台独立的服务器都要有这样的配置:
配置 server1和 server2
Xml代码收藏代码
  1. <cacheManagerPeerProviderFactory
  2. class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  3. properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1,
  4. multicastGroupPort=4446,timeToLive=32"/>


第二,手动查找
进行手动成员配置要知道每个监听器的 IP 地址和端口。成员不能在运行时动态地添加和移除。在技术上很难使用广播的情况下就可以手动成员发现,例如在集群的服务器之间有一个不能传送广播报文的路由器。你也可以用手动成员发现进行单向的数据复制,只让server2 知道 server1而 server1 不知道 server2。
配置手动成员发现,需要指定 ehcache 配置文件中 cacheManagerPeerProviderFactory 的properties属性,像下面这样:
peerDiscovery=manual rmiUrls=//server:port/cacheName, ... rmiUrls 配置的是服务器 cache peers 的列表。注意不要重复配置。
示例
假设你在集群中有两台服务器。你要同步 sampleCache1 和 sampleCache2。下面是每个
服务器需要的配置:
配置 server1
Xml代码收藏代码
  1. <cacheManagerPeerProviderFactory
  2. class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  3. properties="peerDiscovery=manual,
  4. rmiUrls=//server2:40001/sampleCache11|//server2:40001/sampleCache12"/>

配置 server2
Xml代码收藏代码
  1. <cacheManagerPeerProviderFactory
  2. class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  3. properties="peerDiscovery=manual,
  4. rmiUrls=//server1:40001/sampleCache11|//server1:40001/sampleCache12"/>


给个完整的配置:
Xml代码收藏代码
  1. <ehcachexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="ehcache.xsd">
  2. <cacheManagerPeerProviderFactoryclass=
  3. "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  4. properties="peerDiscovery=manual,
  5. rmiUrls=//10.129.0.203:40000/UserCache¦//10.129.0.203:40000/ReturnCache"/>
  6. <cacheManagerPeerListenerFactory
  7. class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
  8. properties="hostName=10.129.0.202,port=40000,socketTimeoutMillis=120000"/>
  9. <defaultCache
  10. maxElementsInMemory="10000"
  11. eternal="false"
  12. timeToIdleSeconds="120"
  13. timeToLiveSeconds="120"
  14. overflowToDisk="true"
  15. diskSpoolBufferSizeMB="30"
  16. maxElementsOnDisk="10000000"
  17. diskPersistent="false"
  18. diskExpiryThreadIntervalSeconds="120"
  19. memoryStoreEvictionPolicy="LRU"
  20. <cacheEventListenerFactory
  21. class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
  22. />
  23. <cachename="UserCache"
  24. maxElementsInMemory="1000"
  25. eternal="false"
  26. timeToIdleSeconds="100000"
  27. timeToLiveSeconds="100000"
  28. overflowToDisk="false">
  29. <cacheEventListenerFactory
  30. class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
  31. </cache>



引用
属性解释:
必须属性:
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,用于在初始化缓存,以及自动设置。



  • 集群的作用有两方面吧,第一,负载分流。第二,安全性。

在我看来,如果一个web应用的访问量不是很多的话,集群和非集群的效果相差不了多少,甚至有的时候集群会消耗更多的资源,导致垃圾回收频繁,内存占用率高等的现象。当然,如果访问量大,那当然是集群的效果会好很多。
那在访问量小的时候是不是就不用做集群呢,答案是否定的。集群的另外一个好处就是数据和状态的安全性,EHCache会自动同步集群中服务器的缓存,当一台服务器挂掉后,另外的服务器可以马上接上来,防止用户状态数据丢失,所以,对安全性的保障是十分有效的。
分享到:
评论

相关推荐

    ehcache使用,以及集群配置

    **Ehcache 使用详解与集群配置** Ehcache 是一个广泛使用的开源Java缓存系统,它提供了内存和磁盘存储,以及对缓存数据的分布式处理能力。在Java应用程序中,Ehcache能够显著提高性能,减少数据库负载,通过缓存...

    EHCACHE集群配置-JGroup篇

    EHCAHCE基于JGROUP的集群配置方案,内含相关配置文件,及配置说明

    Ehcache通过Jgroups做集群

    2. 配置Ehcache的`ehcache.xml`,设置`distributed`为`true`启用分布式缓存,并指定Jgroups配置文件的位置。 3. 在代码中初始化Ehcache,确保使用的是集群配置。 测试集群配置,可以启动多台虚拟机或实际的服务器,...

    ehcache集群同步配

    ehcache集群同步配置实例加说明文档

    ehcache集群方案

    理解并掌握Ehcache的集群配置、复制策略、一致性模型以及JGroups的相关知识,对于构建高性能、高可用的分布式缓存系统至关重要。在实际应用中,应根据业务需求和环境特点,灵活调整和优化这些配置,以获得最佳的性能...

    Ehcache 3(ehcache-clustered-3.8.1-kit.zip)

    在"ehcache-clustered-3.8.1-kit.zip"这个压缩包中,我们重点关注的是Ehcache的集群支持版本,这使得多个节点能够协同工作,共享和同步缓存数据,从而提高系统的可扩展性和可用性。 Ehcache 3 的核心概念包括缓存...

    集群环境中使用_EhCache_缓存系统&Ehcache配置文件的详细说明

    2. `&lt;terracotta&gt;`元素:用于配置EhCache的分布式特性,包括节点发现、同步策略等。例如: ```xml ``` 这行代码配置了EhCache连接到本地的Terracotta服务器,端口号为9510。 3. `&lt;diskStore&gt;`元素:定义磁盘...

    Spring Boot 2.x基础教程:使用EhCache缓存集群.docx

    为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...

    Ehcache集群实例

    4. **Ehcache集群配置**:要设置Ehcache集群,首先需要配置`ehcache.xml`或使用代码配置。在配置中,需要指定集群使用的通信机制,例如JGroups配置文件。JGroups配置文件定义了集群的网络拓扑、传输协议、心跳策略等...

    Ehcache集群环境配置

    ### Ehcache集群环境配置 #### 一、Ehcache简介 Ehcache 是一款开源的高性能 Java 缓存框架,广泛应用于 Java 应用程序中,以提高应用程序性能。其核心设计采用三层类层次结构,主要包括 CacheManager、Cache 和 ...

    ehcache集群缓存配置

    ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。这里只说rmi方式。同时ehcache可以可以实现多播的方式实现集群。也可以手动指定集群主机序列实现集群,本例应用手动指定。

    ehcache rmi集群demo

    1. **配置Ehcache**:在每个节点上,我们需要配置Ehcache,指定缓存的大小、过期策略等。同时,也需要为RMI配置适当的端口和注册表地址。 2. **实现RMI接口**:创建一个接口,定义缓存操作,如get、put、remove等。...

    ehcache集群

    2. **配置Ehcache**:创建`ehcache.xml`配置文件,指定集群模式,并配置JGroups的通道(Channel)。例如: ```xml &lt;!-- 设置过期策略 --&gt; ``` 其中,`mode="DISTRIBUTED"`表示分布式缓存模式,`...

    ehcache配置使用详解

    集群配置通常涉及以下步骤: - 定义集群模式,如复制或分区。 - 设置集群通信协议和端口。 - 配置数据一致性策略,如写入策略和故障恢复机制。 - 调整缓存过期策略,以适应网络延迟和节点状态变化。 总之,ehcache...

    Ehcache集群使用

    它支持本地缓存、分布式缓存以及集群配置,使得多台服务器之间可以共享缓存数据,从而实现高可用性和可扩展性。在本文中,我们将深入探讨如何在实际项目中配置和使用 Ehcache 集群。 首先,我们需要理解 Ehcache ...

    Ehcache远程复制

    描述部分提到的“Ehcache集群配置手册帮助你梳理Ehcache集群部署的配置”,意味着本手册旨在为开发者提供一个详细的指南,指导如何通过远程复制技术配置Ehcache集群,以实现缓存数据的一致性和同步。在分布式系统中...

    ehcache-terracotta代码配置

    在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一功能。 1. Ehcache简介 Ehcache是基于内存的缓存解决方案,它提供了本地缓存、持久化存储和二级缓存等功能。通过将频繁访问的数据保存...

    Ehcache RMI Replicated Cluster(RMI集群)

    1. **配置Ehcache**:首先,你需要在每个节点上配置Ehcache,指定使用RMI replication策略。这通常涉及到在`ehcache.xml`配置文件中设置`replicationStrategy`为`rmi`,并提供RMI注册服务器的地址和端口。 2. **...

    ehcache缓存的jar包和配置文件

    - `&lt;terracotta&gt;`元素(可选):如果需要集群支持,可以配置Ehcache与Terracotta服务器通信。 3. 使用Ehcache: - 引入依赖:在项目中添加Ehcache的JAR包,如`ehcache.jar`。 - 创建缓存管理器:使用`...

    Ehcache分布式缓存与其在SpringBoot应用

    同时,在`application.properties`或`application.yml`文件中配置Ehcache的相关参数,例如缓存的大小、过期时间等。 2. **Ehcache配置**:在`ehcache.xml`配置文件中,你可以指定Ehcache如何运行。对于分布式缓存,...

Global site tag (gtag.js) - Google Analytics