`
foxxiao
  • 浏览: 107242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ehcache集群环境配置

阅读更多
Ehcache支持的分布式缓存支持有三种RMI,JGroups,JMS,这里介绍下MRI和JGrpups两种方式,Ehcache使用版本为1.5.0,关于ehcache的其他信息请参考http://ehcache.sourceforge.net/EhcacheUserGuide.html,关于jgroups的信息请参考http://www.jgroups.org/manual/html_single/index.html。



环境为两台机器 server1 ip:192.168.2.154,server2 ip:192.168.2.23



1. RMI方式:

rmi的方式配置要点(下面均是server1上的配置,server2上的只需要把ip兑换即可)



a. 配置PeerProvider:



Xml代码
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"   
properties="peerDiscovery=manual,rmiUrls=//192.168.2.23:40001/userCache|//192.168.2.23:40001/resourceCache" /> 

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,rmiUrls=//192.168.2.23:40001/userCache|//192.168.2.23:40001/resourceCache" />配置中通过手动方式同步sever2中的userCache和resourceCache。



b. 配置CacheManagerPeerListener:



Xml代码
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"   
properties="hostName=192.168.2.154, port=40001,socketTimeoutMillis=2000" /> 

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.2.154, port=40001,socketTimeoutMillis=2000" /> 配置中server1监听本机40001端口。



c. 在每一个cache中添加cacheEventListener,例子如下:



Xml代码
<cache name="userCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"     properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " /> 
</cache> 

<cache name="userCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />
</cache> 
2. JGroups方式:

ehcache 1.5.0之后版本支持的一种方式,配置起来比较简单,要点:



a. 配置PeerProvider,使用tcp的方式,例子如下:



Xml代码
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" 
        properties="connect=TCP(start_port=7800):  
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;  
        num_initial_members=3;up_thread=true;down_thread=true):  
        VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):  
        pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):  
        pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;  
        print_local_addr=false;down_thread=true;up_thread=true)"   
        propertySeparator="::" /> 

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
properties="connect=TCP(start_port=7800):
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;
        num_initial_members=3;up_thread=true;down_thread=true):
        VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):
        pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):
        pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;
        print_local_addr=false;down_thread=true;up_thread=true)"
        propertySeparator="::" /> b.为每个cache添加cacheEventListener:



Xml代码
<cache name="userCache" maxElementsInMemory="10000" eternal="true" 
        overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" 
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" 
            properties="replicateAsynchronously=true, replicatePuts=true,  
                replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/> 
</cache> 

<cache name="userCache" maxElementsInMemory="10000" eternal="true"
overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</cache> JGroup方式配置的两个server上的配置文件一样,若有多个server,在initial_hosts中将server ip加上即可。

一个完整的ehcache.xml文件:

Xml代码
<?xml version="1.0" encoding="UTF-8"?> 
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd"> 
    <diskStore path="java.io.tmpdir" /> 
 
    <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" 
        properties="connect=TCP(start_port=7800):  
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;  
        num_initial_members=3;up_thread=true;down_thread=true):  
        VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):  
        pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):  
        pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;  
        print_local_addr=false;down_thread=true;up_thread=true)"   
        propertySeparator="::" /> 
 
    <defaultCache maxElementsInMemory="10000" eternal="true" 
        overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" 
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" 
            properties="replicateAsynchronously=true, replicatePuts=true,  
                replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/> 
    </defaultCache> 
 
    <cache name="velcroCache" maxElementsInMemory="10000" eternal="true" 
        overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" 
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" 
            properties="replicateAsynchronously=true, replicatePuts=true,  
                replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/> 
    </cache> 
    <cache name="userCache" maxElementsInMemory="10000" eternal="true" 
        overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" 
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" 
            properties="replicateAsynchronously=true, replicatePuts=true,  
                replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/> 
    </cache> 
    <cache name="resourceCache" maxElementsInMemory="10000" 
        eternal="true" overflowToDisk="true" timeToIdleSeconds="0" 
        timeToLiveSeconds="0" diskPersistent="false" 
        diskExpiryThreadIntervalSeconds="120"> 
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" 
            properties="replicateAsynchronously=true, replicatePuts=true,  
                replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/> 
    </cache> 
</ehcache> 

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd">
<diskStore path="java.io.tmpdir" />

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
properties="connect=TCP(start_port=7800):
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;
        num_initial_members=3;up_thread=true;down_thread=true):
        VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):
        pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):
        pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;
        print_local_addr=false;down_thread=true;up_thread=true)"
        propertySeparator="::" />

<defaultCache maxElementsInMemory="10000" eternal="true"
overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</defaultCache>

<cache name="velcroCache" maxElementsInMemory="10000" eternal="true"
overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</cache>
<cache name="userCache" maxElementsInMemory="10000" eternal="true"
overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</cache>
<cache name="resourceCache" maxElementsInMemory="10000"
eternal="true" overflowToDisk="true" timeToIdleSeconds="0"
timeToLiveSeconds="0" diskPersistent="false"
diskExpiryThreadIntervalSeconds="120">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</cache>
</ehcache> 
分享到:
评论

相关推荐

    Ehcache集群实例

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

    ehcache集群方案

    3. **JGroups配置**:为了使Ehcache集群正常工作,需要对JGroups进行适当的配置。这包括设置组名、选择适合的传输协议(如TCP或UDP)、配置消息确认机制等。正确的配置有助于优化网络通信,提高数据同步效率。 4. *...

    ehcache集群

    通过以上步骤,你就可以构建起一个基于Ehcache和JGroups的集群环境。在实践中,可能需要根据实际网络环境和应用需求进行更复杂的配置和优化。`ClusterTester`可能是一个用于测试集群连接和数据分发的工具类,你可以...

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

    对于每个实例,我们需要创建一个特定的配置文件,例如`ehcache-1.xml`,`ehcache-2.xml`等,以适应集群环境。在配置文件中,我们需要指定`cacheEventListenerFactory`和`cacheManagerPeerProviderFactory`来实现缓存...

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

    本篇文章将深入探讨EhCache在集群环境中的应用及其配置文件的详细设置。 一、EhCache概述 EhCache是由Terracotta公司开发的内存缓存系统,它支持本地缓存和分布式缓存两种模式。EhCache的特点包括:快速存取、内存...

    ehcache使用,以及集群配置

    在集群环境中,Ehcache 使用`terracotta-server`作为分布式管理器。以下是集群配置的关键步骤: 1. **安装Terracotta Server**: 在每台服务器上安装并启动Terracotta Server,它是Ehcache的分布式管理组件。 2. **...

    Ehcache通过Jgroups做集群

    在分布式环境中,为了实现数据共享和高可用性,Ehcache提供了集群功能。而Jgroups则是Java中一个强大的集群通信框架,用于创建容错的集群系统。在Ehcache中,Jgroups被用来实现节点间的通信和同步,确保在集群中的多...

    ehcache rmi集群demo

    这个“ehcache rmi集群demo”提供了一个实践平台,帮助开发者理解Ehcache在分布式环境下的工作原理和RMI通信机制。通过这个示例,我们可以深入学习如何在Java应用中部署和管理一个高性能、可扩展的缓存集群,这对于...

    Ehcache远程复制

    标题“Ehcache远程复制”涉及的知识点主要围绕Ehcache缓存技术中的远程复制机制。Ehcache是Java平台上广泛...开发者可以根据这份手册逐步配置集群环境,从而使得应用系统可以利用Ehcache带来的缓存优势,优化系统性能。

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

    TSA 是一个专门用于Ehcache集群的服务器,它提供了分布式锁服务、数据复制和故障检测等功能。当一个节点更新缓存时,TSA会确保这些更改被传播到集群中的其他节点,从而保持数据一致性。 Ehcache 3 集群支持的主要...

    Ehcache RMI Replicated Cluster(RMI集群)

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

    ehcache缓存的配置

    - 在集群环境中,这些配置尤其重要,因为它们可以确保不同节点之间的缓存数据一致性。 #### 四、ehcache配置详解 - **内存与硬盘缓存**:通过 `maxElementsInMemory` 和 `maxElementsOnDisk` 属性来控制缓存在内存...

    ehcache-clustered-3.3.1-kit.zip

    在集群环境中,配置需要设置为共享模式,以便所有节点都能访问同一份配置。 2. ** Terracotta服务器**:Ehcache集群依赖于Terracotta服务器进行通信和数据同步。你需要在集群中的所有节点上安装并启动Terracotta,...

    ehcache配置使用详解

    6. **分布式缓存**:通过RMI(Remote Method Invocation)和可插拔API,ehcache支持跨机器的缓存共享,适用于集群环境。 7. **监听接口**:ehcache提供了缓存和缓存管理器的监听接口,便于监控缓存状态和行为。 8. *...

    ehcache基本原理及配置

    3. **** 元素: 如果需要配置集群环境,可以设置Terracotta服务器的相关参数,使Ehcache支持分布式缓存。 4. **** 元素: 定义默认缓存配置,适用于所有未在中定义的缓存实例。 5. **** 和 **** 子元素: 用来设置...

    ehcache jroups tcp udp试用实例

    在Ehcache集群中,JGroups提供了一种机制,使得多个节点可以相互通信,共享数据,从而实现分布式缓存。JGroups支持多种协议栈,包括基于TCP和UDP的通信方式。 1. TCP配置: TCP协议是可靠的,面向连接的协议,适用...

    ehcache-terracotta代码配置

    当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...

    EHCache 分布式配置文件

    分布式配置文件是 EHCache 实现多节点共享缓存的关键,允许在分布式环境中存储和检索数据,以实现高可用性和负载均衡。 在 EHCache 中,配置文件是 XML 格式的,通过这些文件我们可以定义缓存策略,包括缓存的大小...

Global site tag (gtag.js) - Google Analytics