• 微服务学习一 微服务session 管理


    集群和分布式架构中: session管理有三种方法:

    1: Cookie: 将Session对象保存在Cookie,保存在浏览器端。浏览器发送请求的时候,会把整个session放在请求里一起发送到server端。

          缺点:Cookie存储容量小; 传输数据量比较大; 浏览器不支持cookie; 

    2:Session复制:服务器复制session,数据一致。

            缺点:每个服务器都要存储session,而且存在大量的session,复制session占用网络资源;网络延迟导致session不一致。

    3: sessIon粘滞: 同一个浏览器上的同一用户请求,都定向到固定服务器上,只在这个服务器上保存session就行。

            缺点:依赖与负载均衡器; 如果当前服务器挂了,请求分发到其他的机器上,就会出错

    微服务架构下的session管理:

          微服务架构中的微服务两类:无状态服务和有状态服务。无状态服务通常不保存数据,方便进行横向扩展。有状态服务则需要进行数据存储,例如数据库服务和缓存服务。在Web应用中,Session用来存储用户状态信息,所以Session管理也是有状态服务的一种。

            在微服务架构下的Session管理,不再将Session对象保存在服务器的内存里,而是在应用架构中引入独立的中间存储介质,将整个应用架构中的Session对象进行统一管理。

             好的Session集中管理方案,应该具备以下4个特点:读写快;高可用;用户透明;不和应用服务器耦合。

             用的最关的方案是: 选择缓存服务器作为存储介质(Redis和Memcache):搭建Redis集群(master-slave)来存储Session对象,session不存储在Tomcat等容器中。

          有一些开源的应用服务器如Tomcat提供的sessionmanager就支持支持Session共享,并存储在Redis或Memcached中。而Spring Session提供了一种不依赖于任何应用服务器的方案,在Servlet规范之内配置可插拔的session数据存储。Spring Session是一种比较全面的Session解决方案,它不仅能支持WEB请求的Session保存和共享还能支持非WEB请求的Session状态保存和共享。本小节重点说明一下Spring-Session-Redis的实现机制。

           

  • 相关阅读:
    ElasticSearch(ES)学习笔记
    Lucene學習日志
    velocity代码生成器的使用
    springboot学习笔记
    springmvc json 类型转换错误
    在做del业务时,传递参数,和接口中入参注释
    做add添加业务时,字符集乱码,form标签库,button的href 问题,添加后页面跳转,forward,redirect 。定制错误输出
    mybatis中联合查询的返回结果集
    mybatis分页,绝对路径的2种写法
    maven导入项目时报错,配置应用程序监听器[org.springframework.web.context.ContextLoaderListener]错误
  • 原文地址:https://www.cnblogs.com/liufei1983/p/8253916.html
Copyright © 2020-2023  润新知