如何建立Ehcache集群

上一篇 文章 我介绍了Ehcache 如何和 Spring整合 但是由于 公司项目 是分布式 ,所以需要建立成一个集群,下面就给大家介绍一下Ehcache 集群 ,虽然百度上一大推,但是在测试的时候出现了很多问题。

百度上关于Ehcache集群 上的描述有很多 如:RMI 自动发现 和手动发现 JMS 和JGroup 模式

我就简单的说一下如何建立RMI 自动发现的方式。百度上关于自动发现的信息有很多如:心跳机制啊,成员每秒想组发送,如果没有发送就移除。还有自动发现是以广播的形式维护的等等。。

话不多少直接贴代码


这是我的Ehcache.xml的配置 就说说该配置 为什么意思 

为该二级缓存 存储的地方 百度上一大堆 我就不说了 但是为什么要注释掉呢,因为在测试的时候,我们测试UAT环境抱错 说找不到磁盘 我们用的是阿里云服务器 ,所以在我下来思考的时候我就吧该二级缓存的地方注释掉了,该二级缓存的地方为内存

为该成员工厂 class 是固定的(如果是RMI的自动发现) 为net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory ,properties :peerDiscovery=automatic 成员发现方式 为自动(automatic)  multicastGroupAddress=230.0.0.1 为广播地址 该广播地址不可改变,该广播地址为D类网络地址,专门用于广播,https://www.cnblogs.com/onlywujun/p/5745195.html 该网站详细描述了 Ehcache 集群的利和弊。

multicastGroupPort=50009,广播的端口号为:50009 这个端口号应该不可改变(不确定) 我试了百度上所有的端口描述, 就该端口号可用

timeToLive=255 限制广播传输的范围 详细信息百度上一大推

:成员发现监听 class一样如果为RMI自动发现就为net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory,properties:port=40002 因为我测试的是两台服务器上所以就写了40002 

默认cache 不详细讲解

缓存的详细配置 ,我就不说了 上篇博客讲的很详细,可以看我上篇博客,就说说如何监听RMI同步缓存,就在当前的cache里配置 class为:net.sf.ehcache.distribution.RMICacheReplicatorFactory properties 为具体缓存的操作配置 如put update remove 等等

用于初始化缓存,我当时想的是,项目启动的时候,二级缓存中还没有需要缓存的信息,必须执行特定的代码才缓存到内存中,那么能不能在项目启动的时候就从redis中(或者数据库中) 加载信息呢,就用到bootstrapCacheLoaderFactory class 是你定义的一个class 必须实现BootstrapCacheLoaderFactory 接口 实现他的createBootstrapCacheLoader 方法,只不过我当初,启动的时候并没有扫描到redis 注解,所以最后这个被我放弃了。

以上就是我的Ehcache.xml的配置

接下来说说我的测试类


CoralCache 是redis的注解使我们自己封装的redis 

CacheManager 是Ehcache的注解

前台传入key ,根据cacheManager.getCache("")获取cache ,获取Cache后得到该cache中的元素,判断该元素是否为Null 如果Element 为null 那么从redis(数据库)中获取数据  。

以下博客详细说明了Ehcache 集群.

http://blog.sina.com.cn/s/blog_6151984a0101816j.html

你可能感兴趣的:(如何建立Ehcache集群)