3 利用Cookie 记录Session
早期系统使用C/S架构,一种管理Session的方式是将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完请求后再将修改过的Session响应给客户端
如今的B/S架构,网站没有客户端,但是可以利用刘览器支持的Cookie记录Session
3.1 缺点
受Cookie大小限制,能记录的信息有限
每次请求响应都需要传输Cookie,影响性能
如果用户关闭Cookie,访问就会不正常
3.2 优点
由于Cookie的
简单易用
可用性高
支持应用服务器的线性伸缩
而大部分应用需要记录的Session 信息又比较小
因此事实上,许多网站都或多或少地使用Cookie记录Session。
4 Session服务器
那么有没有可用性高、伸缩性好、性能也不错,对信息大小又没有限制的服务器集群Session管理方案呢?
答案就是Session服务器!利用独立部署的Session服务器(集群)统一管理Session,应用服务器每次读写Session时,都访问Session服务器
这种方案事实上是将应服务器的状态分离,分为
无状态的应用服务器
有状态的Session服务器
然后针对这两种服务器的不同特性分别设计其架构
对于有状态的Session服务器,一种比较简单的方法是利用
分布式缓存
即使用cacheDB存取session信息,应用服务器接受新请求将session信息保存在redis中,当应用服务器发生故障时,web服务器会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去redis中查找,如果找到则复制到本机,这样实现session共享和高可用。
数据库等
在这些产品的基础上进行包装,使其符合Session 的存储和访问要求。如果业务场景对Session 管理有比较高的要求,比如利用Session 服务集成单点登录(SSO)、用户服务等功能,则需要开发专门的Session服务管理平台。