日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Session一致性的解决方案

發布時間:2024/10/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Session一致性的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是session?

服務器為每個用戶創建一個會話,存儲用戶的相關信息,以便多次請求能夠定位到同一個上下文,這個相關信息就是session。這樣,當用戶在應用程序的Web頁之間跳轉時,存儲在session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

session是對http無狀態協議的補充,達到狀態保持的目的

什么是session一致性問題?

假設用戶包含登錄信息的session都記錄在第一臺server上,反向代理如果將請求路由到另一臺server上,可能就找不到相關信息,而導致用戶需要重新登錄。

解決方法

1. 客戶端保存cookie

  • 服務端不需要存儲
  • 每次http請求都攜帶session,占網絡帶寬
  • 數據存儲在客戶端上,并在網絡傳輸,存在泄漏、篡改等安全隱患
  • session存儲的數據大小受cookie限制
  • 2. session復制方法

  • 只需要設定配置,應用程序不需要修改代碼
  • session的同步需要數據傳輸,占內網帶寬,有延時
  • 所有server都包含所有session數據,數據量受最小內存的sever限制,水平拓展能力差
  • 3. session中心存儲

  • 沒有安全隱患
  • 可以水平擴展,支持緩存集群或橫向拓展
  • 增加了一次網絡調用
  • 需要修改應用代碼
  • 4. session會話粘連

    session會話粘連:英文原詞為"Sticky Sessions"

    • 思路:
      反向代理層讓同一個用戶的請求保證落在一臺server上呢?

    • 方法一:四層代理hash。反向代理層使用用戶ip來做hash,以保證同一個ip的請求落在同一個server上(更推薦,保證傳輸層不引入業務層的邏輯)

    • 方法二:七層代理hash。反向代理使用http協議中的某些業務屬性來做hash,例如sid,city_id,user_id等,能夠更加靈活的實施hash策略,以保證同一個瀏覽器用戶的請求落在同一個server上

    • 優點:

  • 只需要改nginx配置,不需要修改應用代碼
  • 可以支持server水平擴展
  • server水平擴展,rehash后session重新分布,會有一部分用戶路由不到正確的session
  • 即使hash散列均勻,也不能保證server的負載均勻
  • 總結

    以上是生活随笔為你收集整理的Session一致性的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。