EhCache JGroups 集群模式

本文介绍如何在EhCache中使用JGroups实现分布式缓存。包括配置单播和多播模式,以及缓存节点的具体配置。适用于需要了解EhCache集群方案的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EhCache 从 1.5. 版本开始增加了 JGroups 的分布式集群模式。与 RMI 方式相比较, JGroups 提供了一个非常灵活的协议栈、可靠的单播和多播消息传输,主要的缺点是配置复杂以及一些协议栈对第三方包的依赖。

JGroups 也提供了基于 TCP 的单播 ( Unicast ) 和基于 UDP 的多播 ( Multicast ) ,对应 RMI 的手工配置和自动发现。使用单播方式需要指定其它节点的主机地址和端口,下面是两个节点,并使用了单播方式的配置:

 

[html]  view plain  copy
 
 print ?
  1. <!-- 使用单播方式配置 -->  
  2.     <cacheManagerPeerProviderFactory  
  3.         class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"  
  4.         properties="connect=TCP(bind_addr=127.0.0.1;bind_port=4000):  
  5.                             TCPPING(initial_hosts=127.0.0.1[4000],127.0.0.1[5000];port_range=1;timeout=5000;num_initial_members=2):  
  6.                             MERGE2(min_interval=3000;max_interval=5000):  
  7.                             FD_ALL(interval=5000;timeout=20000):  
  8.                             FD(timeout=5000;max_tries=48;):  
  9.                             VERIFY_SUSPECT(timeout=1500):  
  10.                             pbcast.NAKACK(retransmit_timeout=100,200,300,600,1200,2400,4800;discard_delivered_msgs=true):  
  11.                             pbcast.STABLE(stability_delay=1000;desired_avg_gossip=20000;max_bytes=0):  
  12.                             pbcast.GMS(print_local_addr=true;join_timeout=5000)"  
  13.         propertySeparator="::" />  

 

使用多播方式配置如下:

 

[html]  view plain  copy
 
 print ?
  1. <cacheManagerPeerProviderFactory  
  2.        class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"  
  3.        properties="connect=UDP(mcast_addr=224.1.1.1;mcast_port=45678;ip_ttl=32;mcast_send_buf_size=120000;mcast_recv_buf_size=80000):   
  4.        PING(timeout=2000;num_initial_members=2):   
  5.        MERGE2(min_interval=5000;max_interval=10000):   
  6.        FD_SOCK:VERIFY_SUSPECT(timeout=1500):   
  7.        pbcast.NAKACK(retransmit_timeout=3000):   
  8.        UNICAST(timeout=5000):   
  9.        pbcast.STABLE(desired_avg_gossip=20000):   
  10.        FRAG:   
  11.        pbcast.GMS(join_timeout=5000;print_local_addr=true)"  
  12.        propertySeparator="::" />   
cache缓存节点配置

 

 

[html]  view plain  copy
 
 print ?
  1. <!-- demo缓存 -->  
  2.     <cache name="demoCache" maxElementsInMemory="1000" eternal="false"  
  3.         timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"  
  4.         diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"  
  5.         diskPersistent="false" diskExpiryThreadIntervalSeconds="120"  
  6.         memoryStoreEvictionPolicy="LRU">  
  7.         <cacheEventListenerFactory  
  8.             class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"  
  9.             properties="replicateAsynchronously=truereplicatePuts=true,  
  10.         replicateUpdates=truereplicateUpdatesViaCopy=falsereplicateRemovals=true/>  
  11.         <!-- 用于在初始化缓存,以及自动设置 -->  
  12.         <bootstrapCacheLoaderFactory  
  13.             class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" />  
  14.     </cache>  
详情参考demo源码: http://download.youkuaiyun.com/detail/tianwei7518/9231745
需要引入依赖:

 

 

[html]  view plain  copy
 
 print ?
  1. <dependency>  
  2.             <groupId>net.sf.ehcache</groupId>  
  3.             <artifactId>ehcache-jgroupsreplication</artifactId>  
  4.             <version>1.7</version>  
  5.         </dependency>  

 

参考文章:

1.EhCache集群方案-JGroups
2.ehcache配置文件译文 
3.EhCache集群 

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值