1. session複製。
集群之前相互複製session資料。在集群小時沒問題,集群數量機器多時,集群伺服器之間需要大量的通訊進行session複製,占用伺服器和網路的大量資源,系統不堪重負。
在大量使用者訪問情況下,伺服器記憶體會不夠用。並且每台伺服器的session資料都是一樣的,實際上也是在浪費記憶體儲存。
2.session繫結
session利用負載均衡的原位址hash演算法實現,負載均衡伺服器總是將**於同一ip的請求分發到同一臺伺服器上(也可以根據其他固定的字段來分流)。
這個方案明顯的缺陷是不滿足系統高可用的需求。
3,客戶端記錄使用者狀態
(使用cookie欄位或其他字段加密儲存客戶session資料,存在客戶端)
這個方案實現也簡單。
缺點也是明顯:
1) 受到cookie欄位儲存長度限制,也會受到網路傳入資料長度限制等等。
2) 使用者可以關閉cookie功能,這時就只能自定義欄位來操作。
3) session在網路中傳輸,容易洩露客戶核心的機密資訊。要考慮安全性問題。
4. session伺服器
單獨部署session伺服器。
單點登入伺服器,或者整合在使用者服務的伺服器一起。每次校驗session有效性時就訪問這個伺服器。
缺陷是研發和維護成本高。目前業內也提供了許多成熟的分布式快取中介軟體,大大降低了研發複雜度。
方案4比較常用。
分布式快取伺服器是分布式架構中必備的伺服器資源,有成熟的元件和api直接使用(redis)
集群session管理問題
先來看一下什麼是session。使用者使用 的服務,基本上需要瀏覽器與web 伺服器的多次互動。http 協議本身是無狀態的,需要基於http 協議支援會話狀態 session state 的機制。而這樣的機制應該可以使web 伺服器從多次單獨的http 請求中看到 會話 也就是知道哪些請求是來自哪...
集群環境下,Session管理的幾種手段
集群環境下,session管理的幾種手段 缺點 集群伺服器間需要大量的通訊進行session複製,占用伺服器和網路的大量資源。由於所有使用者的session資訊在每台伺服器上都有備份,在大量使用者訪問的情況下,會出現伺服器記憶體不夠session使用的情況。在整個會話期間,使用者所有的請求都在同乙個...
解決Redis管理集群下Session丟失問題
在集群環境下,session會有丟失的問題 解決 session複製 session replication 記憶體的浪費 ip繫結 a.有可能負載不均衡 b.也有可能session資料丟失 通過cookie管理session a.cookie客戶端行為 b.中文單獨處理 通過redis管理集群下的...