統一會話
系統在分布式部署之後,就會存在用戶端通路同一個URL可能被配置設定到不同的機器上,如果沒有同意會話問題,
就會導緻使用者時而登陸,時而未登陸的情況,是以需要使用統一會話來解決這個問題。
解決問題的思路
- 使用hash算法,保證相同的IP能夠永久通路到同一台機器
- 實作方式:使用Nginx的IP_Hash算法
- 使用情況: 比較适用伺服器比較少,比較簡單的服務
- 缺點: IP自身的不可信,可能使用代理 區域網路的問題
- 使用統一的會話管理,将會話的資料儲存到公共的地方,
- 使用Memcached redis實作緩存
- 缺點:依賴浏覽器的cookie 需要保證緩存的高可用性
- 把會話的資料儲存到cookie中
- 需要使用序列化技術
- 缺點: 嚴重依賴cookie 導緻資料量傳輸過大 安全性比較低
繼續現實原因,基本上使用第二種方案,統一的會話管理
統一會話管理的實作方式
- 檢查cookie裡面是否存在JessionID
- 如果有,根據JSessionId直接對對應的session
- 如果沒有,建立一個新的JessionId,跟一個新的session關聯,将JSessionId和session儲存到緩存
- 傳回用戶端的時候,帶着這個JessionId
統一會話管理的問題
- 使用者關閉了cookie
- cookie安全性問題
- 跨域通路cookie