1. session复制。
集群之前相互复制session数据。在集群小时没问题,集群数量机器多时,集群服务器之间需要大量的通信进行session复制,占用服务器和网络的大量资源,系统不堪重负。
在大量用户访问情况下,服务器内存会不够用。并且每台服务器的session数据都是一样的,实际上也是在浪费内存存储。
2.session绑定
session利用负载均衡的原地址hash算法实现,负载均衡服务器总是将来源于同一ip的请求分发到同一台服务器上(也可以根据其他固定的字段来分流)。
这个方案明显的缺陷是不满足系统高可用的需求。
3,客户端记录用户状态
(使用cookie字段或其他字段加密存储客户session数据,存在客户端)
这个方案实现也简单。
缺点也是明显:
1) 受到cookie字段存储长度限制,也会受到网络传入数据长度限制等等。
2) 用户可以关闭cookie功能,这时就只能自定义字段来操作。
3) session在网络中传输,容易泄露客户核心的机密信息。要考虑安全性问题。
4. session服务器
单独部署session服务器。
单点登录服务器,或者集成在用户服务的服务器一起。每次校验session有效性时就访问这个服务器。
缺陷是研发和维护成本高。目前业内也提供了许多成熟的分布式缓存中间件,大大降低了研发复杂度。
方案4比较常用。
分布式缓存服务器是分布式架构中必备的服务器资源,有成熟的组件和API直接使用(redis)