溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

session一致性的解決方法

發(fā)布時(shí)間:2021-12-06 09:23:39 來源:億速云 閱讀:141 作者:柒染 欄目:大數(shù)據(jù)

session一致性的解決方法,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

什么是session?

服務(wù)器為每個(gè)用戶創(chuàng)建一個(gè)會(huì)話,存儲(chǔ)用戶的相關(guān)信息,以便多次請求能夠定位到同一個(gè)上下文,這個(gè)相關(guān)信息就是session。這樣,當(dāng)用戶在應(yīng)用程序的Web頁之間跳轉(zhuǎn)時(shí),存儲(chǔ)在session對象中的變量將不會(huì)丟失,而是在整個(gè)用戶會(huì)話中一直存在下去。

session是對http無狀態(tài)協(xié)議的補(bǔ)充,達(dá)到狀態(tài)保持的目的

什么是session一致性問題?

session一致性的解決方法

假設(shè)用戶包含登錄信息的session都記錄在第一臺(tái)server上,反向代理如果將請求路由到另一臺(tái)server上,可能就找不到相關(guān)信息,而導(dǎo)致用戶需要重新登錄。

解決方法

1. 客戶端保存cookie

session一致性的解決方法

  • 優(yōu)點(diǎn):

  1. 服務(wù)端不需要存儲(chǔ)

  • 缺點(diǎn):

  1. 每次http請求都攜帶session,占網(wǎng)絡(luò)帶寬

  2. 數(shù)據(jù)存儲(chǔ)在客戶端上,并在網(wǎng)絡(luò)傳輸,存在泄漏、篡改等安全隱患

  3. session存儲(chǔ)的數(shù)據(jù)大小受cookie限制

由于技術(shù)不斷演進(jìn),客戶端保存cookie出現(xiàn)了信息全量cookie,cookie存儲(chǔ)sessionId和JWT三種方式,他們優(yōu)缺點(diǎn)各異,可以點(diǎn)擊筆者的另一篇博客查看相關(guān)介紹

快速了解會(huì)話管理三劍客cookie、session和JWT

2. session復(fù)制方法

session一致性的解決方法

  • 思路:
    多個(gè)server之間相互同步session,這樣每個(gè)server之間都包含全部的session

  • 優(yōu)點(diǎn):

  1. 只需要設(shè)定配置,應(yīng)用程序不需要修改代碼

  • 不足:

  1. session的同步需要數(shù)據(jù)傳輸,占內(nèi)網(wǎng)帶寬,有延時(shí)

  2. 所有server都包含所有session數(shù)據(jù),數(shù)據(jù)量受最小內(nèi)存的sever限制,水平拓展能力差

3. session中心存儲(chǔ)

session一致性的解決方法

  • 思路:
    將session存儲(chǔ)在server后端的集中式緩存

  • 優(yōu)點(diǎn):

  1. 沒有安全隱患

  2. 可以水平擴(kuò)展,支持緩存集群或橫向拓展

  • 不足:

  1. 增加了一次網(wǎng)絡(luò)調(diào)用

  2. 需要修改應(yīng)用代碼

4. session會(huì)話粘連

session一致性的解決方法

session會(huì)話粘連:英文原詞為"Sticky Sessions"

  • 思路:
    反向代理層讓同一個(gè)用戶的請求保證落在一臺(tái)server上呢?

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

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

  • 優(yōu)點(diǎn):

  1. 只需要改nginx配置,不需要修改應(yīng)用代碼

  2. 可以支持server水平擴(kuò)展

  • 不足:

  1. server水平擴(kuò)展,rehash后session重新分布,會(huì)有一部分用戶路由不到正確的session

  2. 即使hash散列均勻,也不能保證server的負(fù)載均勻

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI