1. session复制
这种方案简单,从本机读取session信息也很快速,但只能使用集群规模比较小的情况下,当集群规模比较大时,集群服务器间需要大量的通信进行session复制,占用服务器和网络的大量资源,甚至会出现服务器内存不够session使用的情况。
2.session绑定
负载均衡通过源地址hash算法实现 同一个ip的请求分发到同一台服务器上,也可以根据cookie信息将同一个用户的请求总是分发到同一个服务器上。这种被称为会话黏滞,但是如果某一台服务器宕机,那么该机器上的session不复存在,切换到其它机器后因为没有session而无法完成业务处理。因此虽然大部分负载均衡提供源地址负载均衡算法,但很少有网站利用这个进行session管理。
3.利用cookie记录session
早期的企业应用使用C/S架构,一种管理session的方式是讲session记录到客户端,每次请求服务器的时候,将session放在请求中发送给服务器,服务器处理完请求后再将修改过的session响应给客户端。这种方式简单易用,可用性高,支持服务器的线性伸缩,而大部分应用需要记录的session信息又比较小。
缺点:
- cookie大小限制,能记录信息有限
- 每次请求响应都需要传输cookie,影响性能
- 客户端关闭cookie,访问就会不正常
4.session服务器
将应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器,然后针对这两种服务器的不同特性分别设计起架构,利用分布式缓存、数据库等,在这些产品的基础进行包装,使其符合session存储和访问要求,如果业务场景对session管理有比较高的要求,如单点登录SSO、用户服务等功能,则需要开发专门session服务管理平台