您好,登錄后才能下訂單哦!
session一致性的解決方法,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
服務(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)保持的目的
假設(shè)用戶包含登錄信息的session都記錄在第一臺(tái)server上,反向代理如果將請求路由到另一臺(tái)server上,可能就找不到相關(guān)信息,而導(dǎo)致用戶需要重新登錄。
優(yōu)點(diǎn):
服務(wù)端不需要存儲(chǔ)
缺點(diǎn):
每次http請求都攜帶session,占網(wǎng)絡(luò)帶寬
數(shù)據(jù)存儲(chǔ)在客戶端上,并在網(wǎng)絡(luò)傳輸,存在泄漏、篡改等安全隱患
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
思路:
多個(gè)server之間相互同步session,這樣每個(gè)server之間都包含全部的session
優(yōu)點(diǎn):
只需要設(shè)定配置,應(yīng)用程序不需要修改代碼
不足:
session的同步需要數(shù)據(jù)傳輸,占內(nèi)網(wǎng)帶寬,有延時(shí)
所有server都包含所有session數(shù)據(jù),數(shù)據(jù)量受最小內(nèi)存的sever限制,水平拓展能力差
思路:
將session存儲(chǔ)在server后端的集中式緩存
優(yōu)點(diǎn):
沒有安全隱患
可以水平擴(kuò)展,支持緩存集群或橫向拓展
不足:
增加了一次網(wǎng)絡(luò)調(diào)用
需要修改應(yīng)用代碼
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):
只需要改nginx配置,不需要修改應(yīng)用代碼
可以支持server水平擴(kuò)展
不足:
server水平擴(kuò)展,rehash后session重新分布,會(huì)有一部分用戶路由不到正確的session
即使hash散列均勻,也不能保證server的負(fù)載均勻
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(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)容。