2014-01-19 82 views
0

我需要在java中構建一個非常簡單的服務,它提供了用戶/登錄特定的客戶端!根據請求提供httpsessions。基本上我希望其他服務能夠詢問我的會話服務,例如爲10個會議,並與那些做一些工作......迄今爲止很好。分佈式微服務共享狀態

當我們開始談論租賃這些會話並在不再需要時釋放它們時,它變得更加複雜。所以我的會話服務需要跟蹤當前租用的會話和當前空閒的會話。就像一個線程或連接池,但跨越多個節點(多個jvms)。但是如果我在內存中保持跟蹤,如果我將服務關閉以進行維護,它會崩潰或者無論如何,狀態都會丟失,當它恢復時,我可能會分配已使用的會話。另外,當我在羣集中運行服務時,狀態(租用會話)當然必須在所有節點上保持一致。

底線是,我不能有兩個或更多的服務獲得相同的會話。

關於如何實現這一點的任何好主意將不勝感激!備選方案也受到歡迎,因爲還有改變遊戲規劃的空間。

我希望這對你們有意義,如果不是讓我知道,我會試着進一步解釋。

謝謝。

回答

1

根據定義,微服務必須是無狀態的。所有狀態必須推送到數據源。

因此,對於您的情況,您可以在每個請求中包含某些內容(例如:HTTP標頭)以標識上下文。

如果你想共享狀態,使用類似的memcache

+0

+1你可能想說「分佈式緩存」不僅僅是'memcache'(鍵= HTTP標頭,值=會話內容) – bhantol