springcloud 微服务集群session不一致的解决办法

springcloud 微服务集群session不一致的解决办法

背景介绍

项目采用springboot+springcloud(eureka+zuul+ribbon+hystrix) 框架,搭建简单的web后台服务。以往的web项目存储一些的校验得信息都是利用session进行存储的,session的优点就是客户端绑定,不会出现客户端冲突的现象,并且具有时效性,存储在内存中,用起来很方便。

问题描述

在微服务中,如果采用zuul进行路由映射的,由于其是利用访问eureka的服务注册中心,每次访问都是获取服务中心的注册列表进行访问,所有每次进行路由选择的时候都会创建新的session,并不能绑定客户端的session。所以存储在session中的一些信息,当我们访问不同的服务实例的时候就会拿不到session中信息。

解决办法

springboot集成了解决session共享的能力,当然我们也能自己去做session复制,将第一次获取的session保存,每次使用去保存的位置获取,不过这样会很麻烦。而这里要讲的就是springboot利用redis和session做的优化方案

  1. 导入依赖
    在需要共享session的服务中导入依赖

     	<dependency>
     		<groupId>org.springframework.boot</groupId>
     	     <artifactId>spring-boot-starter-data-redis</artifactId>
     	     <version>2.1.3.RELEASE</version>
     	 </dependency>
     	 <dependency>
     	     <groupId>org.springframework.session</groupId>
     	     <artifactId>spring-session-data-redis</artifactId>
     	     <version>2.1.4.RELEASE</version>
     	 </dependency>
    
  2. 在application.yml中导入redis依赖

     spring:
       redis:
         host: 127.0.0.1  #redis服务地址
         port: 8083 #端口号
         timeout: 6000ms  #链接超时时间
         lettuce:
           pool:
             max-active: 8 #最大连接数
             max-wait: -1ms #等待时间
             max-idle: 8 #最大空余数
             min-idle: 0 #最小空余数
         database: 0
    
  3. 书写配置类,类名自定义
    在这里插入图片描述
    注意:@EnableRedisHttpSession 开启spring-session
    @Configuration 配置类注解

  4. 最后在zuul的配置文件中 给对应的服务添加配置
    在这里插入图片描述
    注意:没有此配置 session并不能保持一致

题外记:新人刚刚加入csdn,路过的朋友鼓励一下,以后会及时更新一些日常遇到的问题,本人主要做Java后端开发。

最后给大家一本好书链接:@springcloud的重新定义讲义 许进

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值