「Web开发」分布式环境中如何解决Session问题

「Web开发」分布式环境中如何解决Session问题常⻅的会话解决⽅案粘性会话 Sticky Session ,负载均衡实现,让一个用户的请求尽可能落在一个服务器上。

大家好,欢迎来到IT知识分享网。

常⻅的会话解决⽅案

  • 粘性会话 Sticky Session ,负载均衡实现,让一个用户的请求尽可能落在一个服务器上。但是当这台服务器下线的时候,就有可能发生问题(用户的session没有了,影响体验)
  • 会话复制 Session Replication ,把每台机器上的一个会话都做一个复制。session的复制是有成本的,并且当访问量大的时候也会加剧服务端压力,同步延时的问题。
  • 集中会话 Centralized Session

认识 Spring Session

Spring Session

  • 简化集群中的⽤户会话管理
  • ⽆需绑定容器特定解决⽅案

⽀持的存储

  • Redis
  • MongoDB
  • JDBC
  • Hazelcast

实现原理

定制 HttpSession

通过定制的 HttpServletRequest 返回定制的 HttpSession

  • SessionRepositoryRequestWrapper
  • SessionRepositoryFilter
  • DelegatingFilterProxy

基于 Redis 的 HttpSession

引⼊依赖

  • spring-session-data-redis

基本配置

  • @EnableRedisHttpSession
  • 提供 RedisConnectionFactory
  • 实现 AbstractHttpSessionApplicationInitializer
    • 配置 DelegatingFilterProxy

Spring Boot 对 Spring Session 的⽀持

application.properties

  • spring.session.store-type=redis
  • spring.session.timeout=
    • server.servlet.session.timeout=
  • spring.session.redis.flush-mode=on-save
  • spring.session.redis.namespace=spring:session

SpringSession

Spring Boot为广泛的数据存储提供Spring Session自动配置。在构建servlet web应用程序时,可以自动配置以下存储:

  • JDBC
  • Redis
  • Hazelcast
  • MongoDB

此外,Spring Boot for Apache Geode提供了 auto-configuration for using Apache Geode as a session store

servlet自动配置取代了使用@Enable*HttpSession的需要。

在构建响应式web应用程序时,可以自动配置以下存储:

  • Redis
  • MongoDB

响应式自动配置取代了使用@Enable*WebSession的需要。

如果类路径上存在一个Spring Session模块,Spring Boot会自动使用该存储实现。如果有多个实现,则必须选择希望用于存储会话的StoreType。例如,要使用JDBC作为后端存储,您可以如下配置您的应用程序:

spring.session.store-type=jdbc

你可以通过设置store类型为none来禁用Spring Session。

每个存储都有特定的附加设置。例如,可以为JDBC存储自定义表的名称,如下面的示例所示:

spring.session.jdbc.table-name=SESSIONS

要设置会话的超时时间,你可以使用spring.session.timeout属性。如果没有使用servlet web应用程序设置该属性,自动配置将退回到server.servlet.session.timeout的值。

您可以使用@Enable*HttpSession (servlet)或@Enable*WebSession(响应式)来控制Spring Session的配置。这将导致自动配置退出。然后可以使用注解的属性而不是前面描述的配置属性来配置Spring Session。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86895.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信