Spring Boot 负载均衡之外置session状态保存

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
传统型负载均衡 CLB,每月750个小时 15LCU
云原生内存数据库 Tair,内存型 2GB
简介:

在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而打到另外一台服务器的时候,session丢失。

 

常规的解决方案都是使用:如apache使用mod_jk.conf。

 

在开发spring boot app的时候可以借助 spring session 和redis,用外置的redis来存储session的状态。

 

直接上代码,我这边直接默认你使用spring boot,如果你是普通的spring web项目,请参照https://github.com/spring-projects/spring-session,在spring boot配置更简单

1、增加repository到pom.xml

Xml代码   收藏代码
  1. <repository>  
  2.           <id>spring-milestone</id>  
  3.           <url>https://repo.spring.io/libs-milestone</url>  
  4.       </repository>  

 

2、增加相关依赖

Xml代码   收藏代码
  1. <dependency>  
  2.         <groupId>org.springframework.boot</groupId>  
  3.         <artifactId>spring-boot-starter-redis</artifactId>  
  4.     </dependency>  
  5.   
  6. <dependency>  
  7.       <groupId>org.springframework.session</groupId>  
  8.       <artifactId>spring-session-data-redis</artifactId>  
  9.       <version>1.0.0.RC1</version>  
  10.       <type>pom</type>  
  11.     </dependency>  

 

 

3、RedisSessionConfig.java

Java代码   收藏代码
  1. package com.wisely.base;  
  2.   
  3. import org.springframework.context.annotation.Configuration;  
  4. import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;  
  5.   
  6. @Configuration  
  7. @EnableRedisHttpSession  
  8. public class RedisSessionConfig {  
  9.   
  10. }  

 

 

4、相关配置修改

在application.properties修改redis配置信息(请自行安装redis),请根据实际修改。如:

Java代码   收藏代码
  1. spring.redis.host=192.168.1.103  

 

 

5、所有实体类实现Serializable接口

Java代码   收藏代码
  1. public class SysResource implements Serializable  

 

6、查看效果

这时候登录系统在不同的app之间跳转的时候,session都是一致了,redis上可以看到:

 

7、总结

使用这些代码之后,无论你使用nginx或者apache,都无须在关心多个app之间的session一致的问题了。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
12天前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
|
4月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
109 0
|
2月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
290 15
|
3月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
42 2
|
3月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
51 2
|
3月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
247 1
|
3月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
40 1
|
3月前
|
缓存 负载均衡 Java
Java一分钟之-Spring Cloud Netflix Ribbon:客户端负载均衡
【6月更文挑战第9天】Spring Cloud Netflix Ribbon是客户端负载均衡器,用于服务间的智能路由。本文介绍了Ribbon的基本概念、快速入门步骤,包括添加依赖、配置服务调用和使用RestTemplate。此外,还讨论了常见问题,如服务实例选择不均、超时和重试设置不当、服务列表更新不及时,并提供了相应的解决策略。最后,展示了如何自定义负载均衡策略。理解并正确使用Ribbon能提升微服务架构的稳定性和效率。
131 3
|
3月前
|
JSON 前端开发 Java
Spring第一课,了解IDEA里面的文件,回顾Cookie和Session,获取Session,Cookie,Header的方式
Spring第一课,了解IDEA里面的文件,回顾Cookie和Session,获取Session,Cookie,Header的方式
|
3月前
|
XML 负载均衡 Java
Spring Boot 中实现负载均衡:概念、功能与实现
【6月更文挑战第28天】在分布式系统中,负载均衡(Load Balancing)是指将工作负载和流量分配到多个服务器或服务实例上,以提高系统可用性和响应速度。负载均衡器可以是硬件设备,也可以是软件解决方案。
214 0