我们在分布式应用的时候通常会使用负载均衡或路由网关zuul实现负载,但是使用负载均衡必定会遇到session不一致问题,解决办法:
使用spring-session和redis解决spring cloud中session不一致性问题,具体如下:
1,引入spring-session和redis的包,网关和其他模块都需要映入。
2,maven依赖包配置,引入如下依赖包:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<!--<version>2.0.0.RELEASE</version>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
3,开启spring-session和redis,在spring boot的主类上开启redis管理session的注解(
@EnableRedisHttpSession),网关和其他模块都需要开启:
4,配置文件要配置redis,我的电脑上安装的redis没有设置密码,所以我这里是空。
按照以上步骤配置好,启动项目运行打印sessionId查看,即可看到session都是一样的。