通常情况下,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共享会话同步