SpringCloud共享会话同步

  

通常情况下,Tomcat、Jetty Servlet等容器,会默认将会话保存在内存中。如果是单个服务器实例的应用,将会话保存在服务器内存中是一个非常好的方案。但是这种方案有一个缺点,就是不利于扩展。

目前越来越多的应用采用分布式部署,用于实现高可用性和负载均衡等。那么问题来了,如果将同一个应用部署在多个服务器上通过负载均衡对外提供访问,如何实现会话共享?

实际上实现会话共享的方案很多,其中一种常用的就是使用Tomcat、Jetty等服务器提供的会议共享功能,将会话的内容统一存储在一个数据库(如MySQL)或缓存中(如复述)。

下面我们将在springcloud微服务项目中,使用复述,实现简单高效的会议共享。官网:www.fhadmin.org

<李>

eureka-server:注册中心

<李>

springcloud-session-redis:业所务会议在项目

<李>

springcloud-session-zuul:路由网关

springcloud-session-redis项目

新建一个弹簧启动项目,命名springcloud-session-redis

pom

& lt; ?xml version=" 1.0 " encoding=" utf - 8 " ?祝辞& lt;项目xmlns=" http://maven.apache.org/POM/4.0.0 "   xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance "   xsi: schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”比;   & lt; modelVersion> 4.0.0      & lt; groupId> com.carry   & lt; artifactId> springcloud-session-redis   & lt; version> 0.0.1-SNAPSHOT   & lt; packaging> jar      & lt; name> springcloud-session-redis   春天Boot< & lt; description>演示项目;/description>      & lt; parent>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-parent   & lt; version> 2.0.4.RELEASE   & lt; relativePath/比;& lt; !——从库中查找父——比;   & lt;/parent>      & lt; properties>   & lt; project.build.sourceEncoding> UTF-8   & lt; project.reporting.outputEncoding> UTF-8   & lt; java.version> 1.8 & lt;/java.version>   & lt; spring-cloud.version> Finchley.SR1   & lt;/properties>      & lt; dependencies>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-data-redis   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.session   & lt; artifactId> spring-session-data-redis   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.apache.commons   & lt; artifactId> commons-pool2   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.cloud   & lt; artifactId> spring-cloud-starter-netflix-eureka-client   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-actuator   & lt;/dependency>      & lt;/dependencies>      & lt; dependencyManagement>   & lt; dependencies>   & lt; dependency>   & lt; groupId> org.springframework.cloud   & lt; artifactId> spring-cloud-dependencies   & lt; version> $ {spring-cloud.version} & lt;/version>   & lt; type> pom   & lt; scope> import   & lt;/dependency>   & lt;/dependencies>   & lt;/dependencyManagement>      & lt; build>   & lt; plugins>   & lt; plugin>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-maven-plugin   & lt;/plugin>   & lt;/plugins>   & lt;/build> & lt;/project>

配置文件

在应用程序。yml中加入复述、顿悟、港口等配

服务器:   端口:8090年春季:   应用程序:   名称:service-session-redis   复述:   主持人:192.168.68.100   端口:6379   密码:123456   超时:6000毫秒   生菜:   池:   max-active: 8   最大等待:1女士   最大空闲:8   min-idle: 0   数据库:0尤里卡:   客户:   serviceUrl:   defaultZone: http://admin: 123456 @localhost: 8761/尤里卡/管理:   端点:   网络:   曝光:   包括:“*”   歌珥:   allowed-origins:“*”   allowed-methods:“*”

SpringCloud共享会话同步