常⻅的会话解决⽅案
- 粘性会话 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
基本配置
- @Enable