簡體   English   中英

kubernetes 中 Pod 之間基於 Cookie 的 session 持久性

[英]Cookie-Based session persistence between pods in kubernetes

對於在 pod 中運行的服務,無狀態是通往 go 的方式,但是我一直在嘗試移動一個有狀態的應用程序,如果一個 pod 出於彈性原因,它需要執行 session 持久性。

在 websphere 世界中,IHS 可用於跟蹤 session,如果節點出現故障,可以在實時克隆上重新創建它。

有沒有一種行業標准的方法來處理這個問題,而不必通過使用一些 sidecar pod 持久化 session 來重構應用程序代碼?

基於 Cookie 的會話就是這樣,基於 cookies。 它們由用戶的瀏覽器存儲,而不是您的應用程序。 如果您的意思是基於 DB 的 session 帶有 cookie session ID 或類似名稱,那么您需要將內容存儲在某種中央數據庫中。 我建議使用像 postgres 這樣的實際數據庫,但我想沒有什么能阻止你使用共享卷:)

是的。 將 session 存放在某處。 Spring 啟動支持開箱即用 MongoDB、Redis、Hazelcast 或任何 Z82269B9B71AB4A7732F698 數據庫。

Spring Boot 為各種數據存儲提供 Spring Session 自動配置。 在構建 Servlet web 應用程序時,可以自動配置以下存儲:

JDBC Redis Hazelcast MongoDB 在構建響應式 Z2567A5EC9705EB7AC2C984033E06 應用程序時,可以自動配置以下存儲

Redis MongoDB If a single Spring Session module is present on the classpath, Spring Boot uses that store implementation automatically. 如果您有多個實現,則必須選擇要用於存儲會話的 StoreType。 例如,要使用 JDBC 作為后端存儲,您可以按如下方式配置您的應用程序:

spring.session.store-type=jdbc

[提示] 您可以通過將 store-type 設置為 none 來禁用 Spring Session。 每個商店都有特定的附加設置。 例如,可以為 JDBC 存儲自定義表的名稱,如下例所示:

spring.session.jdbc.table-name=SESSIONS

要設置 session 的超時,您可以使用 spring.session.timeout 屬性。 如果未設置該屬性,則自動配置回退到 server.servlet.session.timeout 的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM