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。很好地解釋。 –