第9章 分布式会话
由于HTTP是无状态协议,每次发起请求时服务端并不知道各个请求之间的关系,为解决这个问题,引入了Session与Cookie配合记录客户端(浏览器)所发起的请求。
当打开浏览器发起HTTP请求时,服务端的Session生成一个全局统一标识(session_id),并将这个标识发送给客户端存储于Cookie中。基于该统一标识便可管理当前浏览器所发起的请求之间的关系。Spring Boot中的基于内嵌的Tomcat容器将Session存储于内存中,在分布式环境中由于各微服务应用运行于不同的环境,所以各Session之间无法互通。
Spring Session 通过标准的Servlet Filter(过滤器)拦截所有的Web请求,并且重写了HttpServlet Request的getSession()方法,将Session交由Redis存储,多个微服务应用使用同一Redis管理的Session,从而最终实现统一的分布式会话管理。
由于Dubbo的各微服务模块并非在Web容器中运行,所以分布式Session会话在Spring Cloud中使用,不过在设计架构时尽量还是使用无状态的服务接口。
① 在pom.xml中引入依赖。
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis&
本文介绍了如何在微服务架构中解决HTTP无状态问题,通过Spring Session结合Redis来实现分布式会话管理。详细步骤包括在项目中引入Spring Session依赖,配置存储类型为Redis,以及编写Controller进行测试,展示Session信息已存储在Redis中。
订阅专栏 解锁全文
161

被折叠的 条评论
为什么被折叠?



