通常所说的“分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”这些非常牛逼高大上名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast。
在上一篇Shiro缓存中,已经提到了,Shiro 1.3.x版本中,增加了一项非常重要,并且又很方便的功能,就是基于HazelCast的Session集群(分布式缓存)。当然,也可以使用比较流行的Redis作为缓存,只是实现起来要复杂一点,使用Redis缓存,会在后续章节中补充。
下面说一下Spring Boot中采用Hazelcast作为Shiro的分布式缓存的案例。大家可以提前往后看一下Spring Boot 缓存章节内容:
Spring Boot(十八)缓存
当在pom中引入Hazelcast的jar包时,Spring Boot会自动初始化HazelcastInstance 和 HazelcastCacheManager,这时我们可以利用Spring自动加载的com.hazelcast.spring.cache.HazelcastCacheManager 来作为Shiro的缓存(当然在ShiroConfiguration中直接初始化org.apache.shiro.hazelcast.cache.HazelcastCacheManager,但是这样就启动两个Hazelcast节点),此时需要将spring的缓存转换为shiro的缓存。具体实现步骤如下(基于Shiro Ehcache缓存示例基础上):
步骤1: 替换shiro包版本,移除ehcache缓存的jar包,添加hazelcast相关jar包:
<!-- 使用Shiro认证 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-hazelcast</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-spring</artifactId>
</dependen

本文介绍了如何在Spring Boot应用中结合Apache Shiro使用Hazelcast实现分布式缓存。通过引入Hazelcast库,配置相关XML文件,以及自定义缓存管理器转换类,实现了Shiro的session和授权缓存的集群化。启动多个应用实例后,观察到Hazelcast节点间的集群关系,并通过Hazelcast的管理界面验证了缓存的效果和自动过期机制。
最低0.47元/天 解锁文章
1615

被折叠的 条评论
为什么被折叠?



