EHCache入门系列(四)–分布式缓存集群环境配置

转载 2015年07月09日 22:47:31
ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时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" />

 

配置中通过手动方式同步sever2中的userCache和resourceCache。

b. 配置CacheManagerPeerListener:

Xml代码

<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>

属性解释:

必须属性:

        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,用于在初始化缓存,以及自动设置。

 

 

参考另外一篇学习笔记http://wozailongyou.javaeye.com/blog/230252,也有集群的说明

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="::" />

 

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>

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>

集群环境中使用 EhCache 缓存系统

本章节将要介绍EhCache及EhCache实现分布式的一些解决方案、并针对于这些解决性方案做一个实现,后续将出一个提供项目模块化、服务化、插件化的VieMall快速开发平台,同时集成Dubbo服务化...
  • tang06211015
  • tang06211015
  • 2016年08月22日 23:58
  • 9859

EhCache 分布式缓存/缓存集群

转载: http://www.cnblogs.com/hoojo/archive/2012/07/19/2599534.html 开发环境: System:Windows JavaEE Se...
  • tengdazhang770960436
  • tengdazhang770960436
  • 2015年10月14日 10:00
  • 1470

EHCache分布式缓存集群环境配置

EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序...
  • h348592532
  • h348592532
  • 2015年04月28日 18:04
  • 1901

EHCache入门系列(四)–分布式缓存集群环境配置

ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。   Ehcache支持的分布式...
  • hnzhangshilong
  • hnzhangshilong
  • 2011年08月15日 21:32
  • 2789

EHCache–分布式缓存集群环境配置

ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。   Ehcache支持的分布式...
  • u013614451
  • u013614451
  • 2014年07月16日 15:04
  • 1691

EHCache分布式缓存集群环境配置

ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。   Ehcache支持...
  • mengtianyalll
  • mengtianyalll
  • 2014年04月18日 15:25
  • 2953

EHCache分布式缓存集群环境配置

ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。   Ehcache支持...
  • u013444177
  • u013444177
  • 2014年05月01日 22:53
  • 330

EHCache分布式缓存集群环境配置

EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序...
  • h348592532
  • h348592532
  • 2015年04月28日 18:04
  • 1901

EHCache分布式缓存集群环境配置

EHCache分布式缓存集群环境配置  ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机...
  • CookSjg
  • CookSjg
  • 2017年03月09日 15:05
  • 167

Ehcache分布式缓存实例(集群环境)

运行环境: 系统:Windows 7
  • Miklechun
  • Miklechun
  • 2014年05月16日 09:34
  • 2621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EHCache入门系列(四)–分布式缓存集群环境配置
举报原因:
原因补充:

(最多只允许输入30个字)