天天看點

統一會話統一會話

統一會話

系統在分布式部署之後,就會存在用戶端通路同一個URL可能被配置設定到不同的機器上,如果沒有同意會話問題,

就會導緻使用者時而登陸,時而未登陸的情況,是以需要使用統一會話來解決這個問題。

解決問題的思路

  • 使用hash算法,保證相同的IP能夠永久通路到同一台機器
    • 實作方式:使用Nginx的IP_Hash算法
    • 使用情況: 比較适用伺服器比較少,比較簡單的服務
    • 缺點: IP自身的不可信,可能使用代理 區域網路的問題
  • 使用統一的會話管理,将會話的資料儲存到公共的地方,
    • 使用Memcached redis實作緩存
    • 缺點:依賴浏覽器的cookie 需要保證緩存的高可用性
  • 把會話的資料儲存到cookie中
    • 需要使用序列化技術
    • 缺點: 嚴重依賴cookie 導緻資料量傳輸過大 安全性比較低

繼續現實原因,基本上使用第二種方案,統一的會話管理

統一會話管理的實作方式

  1. 檢查cookie裡面是否存在JessionID
  2. 如果有,根據JSessionId直接對對應的session
  3. 如果沒有,建立一個新的JessionId,跟一個新的session關聯,将JSessionId和session儲存到緩存
  4. 傳回用戶端的時候,帶着這個JessionId

統一會話管理的問題

  1. 使用者關閉了cookie
  2. cookie安全性問題
  3. 跨域通路cookie

繼續閱讀