2

我读过,会话反对RESTfulness的概念。在微服务中使用会话是错误的吗?

Do sessions really violate RESTfulness?

Session Management in microservices

RESTful Authentication

由于微服务不可避免地使用REST,也同样适用于此呢?如果是这样,那么为什么我们有春季会议?它甚至列出了'Spring Session允许在标头中提供会话ID以与RESTful API一起使用'作为其特征之一。

+0

这将主要是基于意见的,但只要会话不是服务器本地状态的一部分(例如,使用Redis的Spring会话),我就不会遇到会话问题。 – chrylis

回答

5

除了Scaling作为微服务的优势之外,它还为您提供灵活性以选择多语言架构,即(使用正确的编程语言,框架,数据库进行正确的工作)。

如果您使用弹簧会话(该会话跨越节点提供会话复制),它在内部使用redis/gemfire/hazelcast作为复制的会话存储区,但您必须坚持使用一种编程语言&框架实现所有服务即Java & Spring resp。(你可以用其他语言编写你自己的实现来从会话存储中读取,但它重新发明了轮子)这将带走Ployglot Architecture的好处。

因此,通常在微服务架构中,您有一个令牌服务(它应该能够单独扩展)实现,以生成用于每个服务中的身份验证的令牌(aka sessionIds),您应该尽量避免存储会话信息。这也有助于避免“单点故障”。

+0

upvote for the answer。很好地解释。 –