您好,登錄后才能下訂單哦!
session一致性的解決方法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
服務器為每個用戶創建一個會話,存儲用戶的相關信息,以便多次請求能夠定位到同一個上下文,這個相關信息就是session。這樣,當用戶在應用程序的Web頁之間跳轉時,存儲在session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。
session是對http無狀態協議的補充,達到狀態保持的目的
假設用戶包含登錄信息的session都記錄在第一臺server上,反向代理如果將請求路由到另一臺server上,可能就找不到相關信息,而導致用戶需要重新登錄。
優點:
服務端不需要存儲
缺點:
每次http請求都攜帶session,占網絡帶寬
數據存儲在客戶端上,并在網絡傳輸,存在泄漏、篡改等安全隱患
session存儲的數據大小受cookie限制
由于技術不斷演進,客戶端保存cookie出現了信息全量cookie,cookie存儲sessionId和JWT三種方式,他們優缺點各異,可以點擊筆者的另一篇博客查看相關介紹
快速了解會話管理三劍客cookie、session和JWT
思路:
多個server之間相互同步session,這樣每個server之間都包含全部的session
優點:
只需要設定配置,應用程序不需要修改代碼
不足:
session的同步需要數據傳輸,占內網帶寬,有延時
所有server都包含所有session數據,數據量受最小內存的sever限制,水平拓展能力差
思路:
將session存儲在server后端的集中式緩存
優點:
沒有安全隱患
可以水平擴展,支持緩存集群或橫向拓展
不足:
增加了一次網絡調用
需要修改應用代碼
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的負載均勻
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。