目录
1、SpringSession简介
是SpringCloud下管理session的框架,在微服务架构中,由于应用了分布式的思想,session无法做到内存中互通,需要一个框架来实现各个微服务中session数据共享,SpringSession解决了这个问题。
在SpringSession框架中,可以无感的实现和操作session共享。
2、实现session共享的三种方式
1、修改Tomcat配置文件
可以通过修改配置文件实现session共享,现在已经不用这种方式了,有很多限制。
2、Nginx负载均衡策略
通过ip_hash的方式,让同一个ip的请求到相同的服务中,session自然没有失效。这种方式也不推荐,无法做到效率及硬件利用率最高的负载均衡。
upstream server{
ip_hash;
server 192.168.1.101:28080 max_fails=1 fail_timeout=60s weight=1;
server 192.168.1.101:28090 max_fails=1 fail_timeout=60s weight=2;
}server {
listen 80;
server_name 192.168.1.115;location / {
proxy_pass server
}
}
3、redis统一存储
SpringBoot整合SpringSession,通过nacos进行配置管理,通过redis存储方式实现session共享
官网文档:Spring Session - Spring Boot
0、准备工作
【1.启动redis,nacos】
【2.准备两个项目应用,编写两份一样的代码】
【2.1添加pom.xml依赖】
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
<jwt.version>0.7.0</jwt.version>
<fastjson.version>1.2.60</fastjson.version>
<spring-cloud-alibaba.version>2.0.3.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<