学习资料:IBM BLOG、ehcache官网、分布式缓存博客
EhCache 从 1.7 版本开始,支持五种集群方案,分别是:Terracotta、RMI、JMS、JGroups和EhCache Server
下文主要记录了RMI的具体实现方式(模式内容介绍摘自IBM BLOG)。
目前只实现了手动配置(有坑),自动发现未实现,期待大神指点
RMI 集群模式
RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式。EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群。在集群环境中 EhCache 所有缓存对象的键和值都必须是可序列化的,也就是必须实现 java.io.Serializable 接口,这点在其它集群方式下也是需要遵守的。
由于 RMI 是 Java 中内置支持的技术,因此使用 RMI 集群模式时,无需引入其它的 Jar 包,EhCache 本身就带有支持 RMI 集群的功能。使用 RMI 集群模式需要在 ehcache.xml 配置文件中定义 cacheManagerPeerProviderFactory 节点。采用 RMI 集群模式时,集群中的每个节点都是对等关系,并不存在主节点或者从节点的概念,因此节点间必须有一个机制能够互相认识对方,必须知道其它节点的信息,包括主机地址、端口号等。
EhCache 提供两种节点的发现方式:
- 手动配置:手动配置方式要求在每个节点中配置其它所有节点的连接信息,一旦集群中的节点发生变化时,需要对缓存进行重新配置
- 自动发现:每个节点上的配置信息都相同,大大方便了节点的部署,避免人为的错漏出现
引入pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
实现 CacheConfig类
pack