水平扩展实现
Spring Boot 应用水平扩展有两个问题需要解决:
将用户的请求派发到水平部署的任意一台SpringBoot应用,通常用一个反向代理服务器来实现
会话管理
共享会话信息, 有两种方式可以实现- 复制会话: Web服务器通常都支持Session复制,一台应用的会话信息改变将立刻复制到其他集群的Web服务器上
- 集中式会话: 所有Web服务器都共享一个会话,会话信息通常存放在一台服务器上,本章使用Redis服务器来存放会话
Spring Session
介绍
Spring Boot 配置很容易切换到不同的Session管理方式,总共有以下几种:
- Redis, Session数据存放
Redis
中 - JDBC,会话数据存放在数据库中,默认情况下
SPRING_SESSION
表存放Session
基本信息,如sessionId、创建时间、最后一次访问时间等,SPRING_SESSION_ATTRIBUTES
存放了session数据,ATTRIBUTE_NAME
列保存了Session的Key,ATTRIBUTE_BYTES
列以字节形式保存了Session的Value, Spring Session 会自动创建这两张表。 - Hazelcast, Session数据存放到 Hazeleast
- None,禁用 Spring Session 功能
通过配置属性spring.session.store-type
来指定Session的存储方式