🎯 什麼情境該想到我
當你「要讓會話狀態跨多台伺服器共享、且伺服器當掉也不遺失」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:把會話狀態存進資料庫,讓任一伺服器都能讀寫同一份狀態。
做法要點:
- 每個請求進來,用 session id 從資料庫讀出所需狀態;處理完再寫回。
- 狀態集中在資料庫,任一台伺服器都能接手,不需黏性會話。
- 資料庫的持久性帶來容錯:伺服器故障不影響已保存的會話。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 代價是每次請求都要讀寫資料庫,增加負載與延遲。
- 需處理暫時性(會話中)與已提交資料的區隔,避免污染正式資料。
- 要有清除過期會話的機制,否則資料表會膨脹。
🔗 相關工具
- 伺服器會話狀態 Server Session State(存伺服器記憶體,最簡單但難擴展)
- 用戶端會話狀態 Client Session State(存用戶端,伺服器無狀態)
- 企業應用架構模式