分布式session的解决方案

一、背景

一个服务要部署在多台服务器上时,用户信息记录在session中。如果用户小白的登录请求打到服务器A上,这时服务器A会记录session。之后用户小白的下单请求打到服务器B上,由于服务器B 没有保存用户A的session,所以用户小白需要再次登录后,才能下单。为了解决用户重复登录的问题,提出了分布式session。

二、概念

在分布式架构或者微服务架构中,必须保证一个应用服务器上保存了session后,其他应用服务器会同步或者共享这个session。

三、分布式session管理方案

  1. session sticky--不推荐
    1. 解决方法:负载均衡服务器对请求地址中的IP进行hash运算,根据hash结果将请求打到对应的服务器上。
    2. 缺点:(1)造成资源浪费。会造成个别服务器请求数特别多,其他服务器闲置的情况。(2)无法避免单点故障问题。
  2. session Replication(session复制)
    1. 解决方法:将一个应用服务器上session复制到其他服务器上。
    2. 缺点:(1)耗内存、耗宽带。
  3. session center--推荐
    1. 解决方法:将session存储在redis缓存中。
    2. 缺点:需要增加额外的技术,维护redis的高可用。
posted @ 2023-05-16 14:07  翊梦  阅读(66)  评论(0)    收藏  举报