0
点赞
收藏
分享

微信扫一扫

EhCache JGroups 集群模式


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. initial_hosts=127.0.0.1[4000],127.0.0.1[5000];port_range=1;timeout=5000;num_initial_members=2):  
6. min_interval=3000;max_interval=5000):  
7. interval=5000;timeout=20000):  
8. timeout=5000;max_tries=48;):  
9. timeout=1500):  
10. retransmit_timeout=100,200,300,600,1200,2400,4800;discard_delivered_msgs=true):  
11. stability_delay=1000;desired_avg_gossip=20000;max_bytes=0):  
12. 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. timeout=2000;num_initial_members=2):   
5. min_interval=5000;max_interval=10000):   
6. timeout=1500):   
7. retransmit_timeout=3000):   
8. timeout=5000):   
9. desired_avg_gossip=20000):   
10.        FRAG:   
11. join_timeout=5000;print_local_addr=true)"  
12. propertySeparator="::" />

cache缓存节点配置


 

 



[html]  view plain  copy

 


 print

?



  1. <

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=true, replicatePuts=true,  
10. replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true" />  
11. <!-- 用于在初始化缓存,以及自动设置 -->  
12. <bootstrapCacheLoaderFactory  
13. class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" />  
14. </cache>


需要引入依赖:


 

 



[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 从 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. initial_hosts=127.0.0.1[4000],127.0.0.1[5000];port_range=1;timeout=5000;num_initial_members=2):  
6. min_interval=3000;max_interval=5000):  
7. interval=5000;timeout=20000):  
8. timeout=5000;max_tries=48;):  
9. timeout=1500):  
10. retransmit_timeout=100,200,300,600,1200,2400,4800;discard_delivered_msgs=true):  
11. stability_delay=1000;desired_avg_gossip=20000;max_bytes=0):  
12. 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. timeout=2000;num_initial_members=2):   
5. min_interval=5000;max_interval=10000):   
6. timeout=1500):   
7. retransmit_timeout=3000):   
8. timeout=5000):   
9. desired_avg_gossip=20000):   
10.        FRAG:   
11. 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=true, replicatePuts=true,  
10. replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true" />  
11. <!-- 用于在初始化缓存,以及自动设置 -->  
12. <bootstrapCacheLoaderFactory  
13. class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" />  
14. </cache>


需要引入依赖:


 

 



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



 



举报

相关推荐

0 条评论