分布式session的解决方案

分布式session的解决方案

  1. 粘性session

原理:将用户锁定到某一个服务器上。相当于把用户和一台服务器粘到了一块
优点:简单不需要对session进行处理
缺点:缺乏容错性,若当前的服务器发生故障,用户被转移到其他服务器上,session失效
试用场景:服务器发生故障时低概率事件 实现方式:Nginx中的负载均衡策略使用ip_hash策略

  1. 服务器的session复制

原理:任何一个服务器上的session发生改变,该节点会把这个session进行序列化,然后广播给其他所有节点。
优点:可容错,各个服务器间session能够实时响应
缺点:网络负荷造成压力
实现方式:https://blog.csdn.net/xiaobing_122613/article/details/60581356

  1. session持久化到数据库(坏办法)
  2. session与缓存数据库的共享机制

将session的值保存到缓存数据库中,用到session的地方,去缓存数据库中获取

  1. terracotta实现session复制

原理:Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。可以看成是对第二种方案的优化。
优点:这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在session同步上,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果

借鉴:https://blog.csdn.net/u010028869/article/details/50773174?ref=myread

你可能感兴趣的:(解决方案)