ehcache 有几种方式集群,rmi,jgroup还有jms;这里讲一下ehcache的使用 ehcache 使用rmi方式复制缓存是可取的,原因如下: 1、rmi是java 默认的远程机制 2、可以调优tcp选项 3、Elements因为要存到磁盘,所以肯定是早已序列化。所以不需要借助

ehcache 有几种方式集群,rmi,jgroup还有jms;这里讲一下ehcache的使用

ehcache 使用rmi方式复制缓存是可取的,原因如下:

1、rmi是java 默认的远程机制

2、可以调优tcp选项

3、Elements因为要存到磁盘,所以肯定是早已序列化。所以不需要借助

4、通过配置可以通过防火墙

rmi方式集群交互图:

ehcache集群使用rmi方式有图有真想-LMLPHP

Ehcache的rmi方式是一种点对点的协议,因此它会产生很多局域网的内部通信,当然Ehcache会通过一种异步批处复制理机制类解决

如果要配置ehcache 需要配置一下元素

PeerProvider

CacheManagerPeerListener

配置Provider,这里有两种方式:自动发现、手动配置

自动方式:自动发现方式使用tcp广播来建立和包含一个广播组,它的特征是最小配置和对成员组的自动添加和管理。没有那个服务器是有优先级的。对等点每一秒中向广播组发送心跳,如果一个对等点在五秒钟内没发送过来,则此对等点将会被删除,如果有新的,则会被加入集群

cacheManagerPeerProviderFactory 的properties有以下配置:

peerDiscovery=automatic

multicastGroupAddress=230.0.0.1
multicastGroupPort=40001
timeToLive=0-255
hostName=hostname

peerDiscovery 方式:atutomatic 为自动 ;mulicastGroupAddress 广播组地址:230.0.0.1;mulicastGroupPort 广播组端口:40001;timeToLive是指搜索范围:0是同一台服务器,1是同一个子网,32是指同一站点,64是指同一块地域,128是同一块大陆,还有个256,我就不说了;hostName:主机名或者ip,用来接受或者发送信息的接口

在我这次试验中具体如下:

	
登录后复制
name为cache制定名字,maxEntriesLocalHeap:内存中可驻留最大Element数量,timeToLiveSeconds 生存周期 10000s;overflowToDisk:当内存不足,是否启用磁盘:这里为false;给myCache价格监听,然后是异步方式,在put,update,copy,remove操作是否复制,然后同步时间1s,bootstrapCacheLoaderFactory 工厂是指启动是指一启动就同步数据

以下是完整的配置

登录后复制

在server2 也就是 192.168.1.116 在hostName配置成此地址,就行了

下面是测试代码

package com.ehcache;import java.io.IOException;import java.io.InputStream;import net.sf.ehcache.Cache;import net.sf.ehcache.CacheException;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Element;public class Test2 {   public static void main(String[] args) throws InterruptedException {     InputStream is=null;CacheManager manager=null;try {is = Test2.class.getResourceAsStream("/ehcache.
登录后复制

server2 的测试代码将 element那里改成client-2-即可

然后贴上效果图一张:

ehcache集群使用rmi方式有图有真想-LMLPHP

client3 同步到client2的数据了

另外附叙述ehcache的淘汰缓存的算法:

LRU是Least Recently Used 近期最少使用算法;

FIFO 以一种队列方式谁先进谁先出

LFUleast frequently used即最不经常使用页置换算法

这是工程文件的下载地址:点击打开链接

备注:作者水平有限,并且这些配置只在局域网的实践过,如果有错误,请指出。

前面也写了并且试验了局域网内的,负载均衡,tomcat集群,session回话的分离并且双机热备,希望以后有机会让来亲自架构一下大规模的集群。

08-14 13:39