在无状态微服务中管理会话

如果微服务是无状态的,我们如何在基于 JSP 的项目中管理会话。假设我将古老的单体分解为微服务。


狐的传说
浏览 196回答 2
2回答

SMILET

业界大多数微服务实现通过 HTTP 进行通信的事实并不意味着微服务旨在用作 Web 服务器。一个微服务:不必通过 HTTP 通信(尽管大多数实现都这样做,为了方便)不打算接收由 Web 浏览器发出的请求(尽管您可以使用 Web 浏览器向侦听 HTTP 的微服务发出请求以对其进行测试)肯定不是要生成包含可以在浏览器中呈现的 HTML 的响应。由于这些原因,微服务通常没有会话的概念。如果你绝对必须让你的微服务会话感知,并保持它无状态(这样它仍然可以合法地称为微服务)那么你必须让它在每次请求到达时从你的持久性存储中获取所有必要的会话信息,并保存在返回响应之前,它的任何部分都已更改回持久性存储。但这不是微服务的工作方式。一般我们在网络上使用微服务的方式是这样的:要么我们在浏览器上运行 javascript,它维护会话状态并向微服务发出无会话请求,必要时包含身份验证信息,[*] 或我们构建了一个传统的 Web 服务器,它以传统方式维护会话状态,因此不是微服务,并且我们让该 Web 服务器在内部向微服务发出无会话请求以完成其工作。脚注:[*] 请注意,我承认许多人这样做并不代表对这种做法的认可。

森林海

您无法在无状态服务器中管理会话。您可以做的是将唯一令牌及其相应信息存储到 Redis/MemCache 中。您需要在客户端存储令牌而不是 JSESSIONID。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java