1、EhCache缓存介绍
Ehcache 是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取。同时EhCache 扩展非常简单,官方提供的Cache配置方式有好几种。你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。
以下是EhCache 的架构图:
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
cache/ehcache-jgroup.xml文件里面通过配置多播,实现了自动发现集群节点的功能。
对研究jgroup配置感兴趣的好汉,可以仔细看看该文件。
3、测试代码
在com.woodstudio.framework.modules.demo.web.DemoCacheController.java文件中,已经编写了缓存集群的测试代码。
缓存操作已经封装在com.woodstudio.framework.common.utils.CacheUtils.java类中。
请先看看这2个文件里面的代码!
测试页面:srcmainwebappWEB-INFviewsmodulesdemocachedemoCacheUtils.jsp
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】
再点击其中的【获取Cache】,看值是否设置成功。
接着登陆另一个测试项目,例如:
http://192.168.1.12:8080/framework
选择其中的缓存(集群)测试,点击【获取Cache】,看上面步骤的Cache值是否设置成功!
备注:
EhCache 常用集群方式包括 RMI、JGroups 以及 EhCache Server,其他方式的集群配置请自行google/baidu。
大功告成!
木头大哥所发的文章均基于自身实践,各位江湖好汉可以通过:hellowood23@163.com联系之。