zoukankan      html  css  js  c++  java
  • 微服务session数据共享

    微服务之间的数据共享之session

    session域是存储在服务器端的内存中,但是现在使用微服务,各个功能模块之间拆分成不同的服务,每个服务负责某种功能,每个服务都是一个进程,所有每个服务中的内存数据是不共享的,故存储在每个服务中的session对象不可以被所有的微服务共享。

    Session对象,就是客户端浏览器与服务器之间建立的互动信息状态。每一个不同的用户连接将得到不同的Session,也就是说Session与用户之间是一种一对一的关系。Session在用户进入网站时由服务器自动产生,并在用户正常离开站点时释放.,现在项目是微服务项目,有多个服务,每个服务之间的内存是不共享的,所有session存储在某个服务的内存中其他服务是获取不到的。

    session对象:用户访问某个微服务的时候,创建了session对象,为这个对象生成一个唯一的jessionid,这个jessionid是存储在cookie对象中,返回给浏览器端,以后客户端每次给服务器发送请求的时候都会带这个存储jessionid的cookie。服务器端如果使用这个jessionid找到了对应的session,那么就可以直接获取session域中存储的数据,如果服务器端没有找到这个jessionid对应的session,那么服务器端会新创建一个session对象,给这个对象在行创建一个sessionid去存储到cookie中返回给浏览器,这样也就修改了jessionid导致即使他访问原来的服务,由于jessionid修改了也会找不到原来的session数据

    .

    示意图:

                 所以把session存储到内存中这样的方法不适应于微服务,解决方法:把session对象存储到redis中,只要所以的服务绑定同一个redis就可以获取到redis中的存储的session数据。

    实现:导入依赖           

     <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session-data-redis</artifactId>
            </dependency>
    

    配置redis

     redis:
        host: 192.168.127.128
        port: 6379
        lettuce:
         pool:
          max-active: 20  #最大连接数,负值表示没有限制,默认8
          max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1
          max-idle: 8     #最大空闲连接,默认8
          min-idle: 0     #最小空闲连接,默认0

     配置session域:

    session:
        store-type: redis

    配置好上面后,项目中创建的session都存储到redis中 

      demo:使用dateway网关配置了路由转发,使得访问微服务的请求均衡的发到各个服务上,查看各个微服务是不是都可以获取到session中的存储数据。 

    github地址:git@github.com:zhangyang-yu/SessionProject.git                    

  • 相关阅读:
    EBS R12.2.0启动时报"httpd.pid: Permission denied"错误
    MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限
    EBS R12.2 创建应用层的启动和关闭脚本
    EBS R12.2应用层启动脚本的执行过程
    EBS R12.2应用层关闭脚本的执行过程
    Linux卸载NAS磁盘,报device is busy
    linux上创建PV/VG/LV
    RW-50004 While Running adrunfmw during EBS 12.2 Installation
    .net(C#)中this关键字
    Javascript的this用法及jQuery中$this和$(this)的区别
  • 原文地址:https://www.cnblogs.com/zhangyang4674/p/14249622.html
Copyright © 2011-2022 走看看