分布式session的管理

在分布式架构或微服务架构下,必须保证一个应用服务器上保存Session后,其它应用服务器能够同步或共享这个Session,可能会出如今A1系统登陆后建立并保存Session,再次发起请求,请求被转发到A2系统上显示未登陆的状况。如下是几种常见的分布式session管理方案:缓存

1.Session复制

将Session同步到其它Web服务器上,达到每一个Web服务器上都保存一致的Session。
优势:代码上不须要作支持和修改。
缺点:须要依赖支持的Web服务器,一旦更换成不支持的Web服务器就不能使用了,在数据量很大的状况下不只占用网络资源,并且会致使延迟。
 

2.Session粘滞

将用户的每次请求都经过某种方法强制分发到某一个Web服务器上,只要这个Web服务器上存储了对应Session数据,就能够实现会话跟踪。
优势:使用简单,没有额外开销。
缺点:一旦某个Web服务器重启或宕机,相对应的Session数据将会丢失,并且须要依赖负载均衡机制。
适用场景:对稳定性要求不是很高的业务情景。
 

3.Session集中管理

在单独的服务器或服务器集群上使用缓存技术,如Redis存储Session数据,集中管理全部的Session,全部的Web服务器都从这个存储介质中存取对应的Session,实现Session共享。
优势:可靠性高,减小Web服务器的资源开销。可用性高。安全

通常分布式架构下这种方式使用的最多。服务器

 

4.基于Cookie管理

这种方式每次发起请求的时候都须要将Session数据放到Cookie中传递给服务端。
优势:不须要依赖额外外部存储,不须要额外配置。
缺点:不安全,易被盗取或篡改;Cookie数量和长度有限制,须要消耗更多网络带宽。
适用场景:数据不重要、不敏感且数据量小的状况。网络

在微服务架构下的JWT方案就是采用相似于这种方案。
相关文章
相关标签/搜索