分布式缓存集群配置

1、EhCache缓存介绍

Ehcache 是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取。同时EhCache 扩展非常简单,官方提供的Cache配置方式有好几种。你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。

以下是EhCache 的架构图:

image

Ehcache有以下特点:

  • 存取速度非常快,性能很不错。
  • 可以应用多种缓存策略。
  • 分级缓存,用户可以指定哪些数据在硬盘中缓存,哪些数据在内存中缓存。
  • 可以通过RMI、可插入API等方式进行分布式缓存。
  • 具有缓存和缓存管理器的侦听接口。
  • 支持多缓存管理器实例,以及一个实例的多个缓存区域。
  • 默认提供Hibernate的缓存实现。

EhCache 从 1.7 版本开始,支持五种集群方案,分别是:

·         Terracotta

·         RMI

·         JMS

·         JGroups

·         EhCache Server

JGroups 提供了一个非常灵活的协议栈、可靠的单播和多播消息传输。以下主要讨论ehcache通过JGroups模式进行分布式集群配置的步骤。

2、基于JGroups分布式集群配置

打开项目src->main->resources目录下的application.properties文件,修改ehcache.configFile=cache/ehcache-jgroup.xml

image

cache/ehcache-jgroup.xml文件里面通过配置多播,实现了自动发现集群节点的功能。

image

对研究jgroup配置感兴趣的好汉,可以仔细看看该文件。

3、测试代码

在com.woodstudio.framework.modules.demo.web.DemoCacheController.java文件中,已经编写了缓存集群的测试代码。

image

缓存操作已经封装在com.woodstudio.framework.common.utils.CacheUtils.java类中。

image

请先看看这2个文件里面的代码!

测试页面:srcmainwebappWEB-INFviewsmodulesdemocachedemoCacheUtils.jsp

image

4、测试案例

修改配置后,在2台测试服务器中分别部署2个framework项目,例如:

http://192.168.1.11:8080/framework

http://192.168.1.12:8080/framework

等待2个项目启动完成,首先登陆其中一个服务器,例如:

http://192.168.1.11:8080/framework,选择其中的缓存(集群)测试,在key和value输入值,点击【设置Cache】

image

再点击其中的【获取Cache】,看值是否设置成功。

接着登陆另一个测试项目,例如:

http://192.168.1.12:8080/framework

选择其中的缓存(集群)测试,点击【获取Cache】,看上面步骤的Cache值是否设置成功!

 

备注:

EhCache 常用集群方式包括 RMI、JGroups 以及 EhCache Server,其他方式的集群配置请自行google/baidu。

 

大功告成!

木头大哥所发的文章均基于自身实践,各位江湖好汉可以通过:hellowood23@163.com联系之。

原文地址:https://www.cnblogs.com/hellowood23/p/5210267.html