分布式会话《九》

由于http  是无状态协议 的,每次发起请求时服务端并不知道各个请求之间的关系,为解决这个问题,引入了session 与cookie配合记录客户端(浏览器)所发起的请求。

当打开浏览器发起HTTP 请求时,服务端的session 生成一个全局统一标识session_id,并将这个标识发送给客户端存储与cookie中,基于该统一标识便可管理当前浏览器所发起的请求之间的关系。springboot 中的基于内嵌的tomcat容器将session 存储在内存中,在分布式环境中由于各微服务应用运行于不同的环境,所以各session之间无法互通。

spring session 通过标准的servlet filter(过滤器)拦截所有的web请求,并且重写了httpservletRequest 的getSession()方法,将session 交由redis 存储,多个微服务应用使用同一个redis 管理的session,从而最终实现统一的分布式会话管理。

由于dubbo 的各微服务模块并非在web 容器中运行,所以分布式会话在spring cloud 中使用,不过在设计架构时尽量还是使用无状态的服务接口。

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

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

spring.session.store-type:指定session 的存储服务提供方。

调用putSession 请求后,查询redis 便可发现 spring session 已经将刚才存入session 的内容写入了redis中。现在只需在其他微服务应用中进行相同的配置便可从共享redis 中获取session 信息。

项目展示:分布式session共享-Java代码类资源-CSDN下载

上一篇:定时任务《八》_welcome to 一点点 home-CSDN博客

下一篇:消息队列《十》_welcome to 一点点 home-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值