• 分布式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方案就是采用类似于这种方案。

     

  • 相关阅读:
    汇编中寄存器及其用处
    直接打印则需要调用PrintDocumnt.Print()方可打印,否按在对话框中点【打印】但不会有反应
    操作另一窗体的变量事件
    System.Windows.Forms.ListControl.SelectedValue.get 返回 null
    combox的selectedValue初始值注意事项
    vs2017中EF6.4无法导入到PM中,应使用EF6.2或6.1.1
    去除 Datetime的字段会自动赋默认值0001-1-1 0:00:00
    EF使用问题备忘
    EF中自定义连接字符串
    C#如何改变DataTable中的数据?
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/9347015.html
Copyright © 2020-2023  润新知