文章目录
前言
这篇博客的目的是为了研究session会话在微服务架构中采用的技术方案,以及探讨一下企业应用在使用session过程中需要注意的问题。
一、session作用
我们知道在web应用中,web服务器和浏览器之间是用http协议进行通信的,而http协议是无状态的,也就是每个请求都是独立的。如:用户看一条A新闻,不管是谁看到的都是一模一样的新闻。也就是跟用户是谁没有任何关系。
但业务自身的发展,需要把不同的内容展示给不同的用户,即信息和用户状态关联起来。如:历史阅读列表—列出用户之前看的新闻。这个需求就是跟用户相关,每个用户看到的历史阅读列表都是不一样的。
Session的产生就是为了解决这个问题,把服务器和客户端之间进行状态保持的解决方案。
二、session原理
浏览器在第一次访问web服务器,服务器端会响应一个sessionId,并且把这个sessionId传输给浏览器,并以cookie保存sessionId到浏览器本地。
以后的访问会把这个cookie的sessionId以请求头的方式传给服务器,这样服务器就可以拿着这个sessionId进行查找,服务器中有没有此sessionId对应的用户,这样就能标识出哪个用户,如果有用户相关的业务,就是利用这个sessionId返回用户相关的业务。如下图:
本质就是浏览器客户端本地保存了sessionId,服务器端保存了sessionId和用户信息映射,这样就实现了web应用有状态化。