在微服务中使用会话是错误的吗?

时间:2017-10-18 05:23:31

标签: java spring-boot spring-security microservices spring-session

我已经读过,会话违反了RESTfulness的概念。

Do sessions really violate RESTfulness?

Session Management in microservices

RESTful Authentication

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

1 个答案:

答案 0 :(得分:15)

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

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

通常在微服务架构中,您有一个令牌服务(并且它应该能够单独扩展)实现,以生成用于身份验证和身份验证的令牌(也称为sessionIds)。在每个服务中授权,您应该尽量避免存储会话信息。它还有助于避免" 单点故障"。