zoukankan      html  css  js  c++  java
  • 分布式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方案就是采用类似于这种方案。

     

  • 相关阅读:
    centos 安装 TortoiseSVN svn 客户端
    linux 定时任务 日志记录
    centos6.5 安装PHP7.0支持nginx
    linux root 用户 定时任务添加
    composer 一些使用说明
    laravel cookie写入
    laravel composer 安装指定版本以及基本的配置
    mysql 删除重复记录语句
    linux php redis 扩展安装
    linux php 安装 memcache 扩展
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/9347015.html
Copyright © 2011-2022 走看看