Session sticky
對(duì)訪問(wèn)的ip進(jìn)行hash夺克。然后通過(guò)Nginx 跳轉(zhuǎn)固定的web-server侍咱。這樣保證了同一個(gè)用戶訪問(wèn)的Server保持不變,session自然不會(huì)消失贝奇。
優(yōu)點(diǎn):
- 只需要改nginx配置瓢对,不需要修改應(yīng)用代碼
- 負(fù)載均衡,只要hash屬性是均勻的惠爽,多臺(tái)web-server的負(fù)載是均衡的
- 可以支持web-server水平擴(kuò)展(session同步法是不行的癌蓖,受內(nèi)存限制)
缺點(diǎn)
- 單個(gè)Server宕機(jī)或重啟之后,部分session會(huì)消失婚肆,該部分用戶需要重新登錄
session本身就有有效期租副,即使部分用戶需要重新登錄,事實(shí)上也是可以接受的较性,所以缺點(diǎn)也沒(méi)有那么明顯
Session 復(fù)制
session在各web-server間復(fù)制用僧,保證每一個(gè)web-server有全部的用戶session
優(yōu)點(diǎn):
- 實(shí)現(xiàn)方便,tomcat有集成插件赞咙。配置即可责循,建議訪問(wèn)量不大的小型系統(tǒng)使用
缺點(diǎn):
- 互相復(fù)制增加了網(wǎng)絡(luò)內(nèi)網(wǎng)的開(kāi)銷(xiāo),每臺(tái)web-server都存了全部session攀操,數(shù)據(jù)冗余嚴(yán)重院仿,內(nèi)存占用大。
cookie中存儲(chǔ)Session
Session加密后存儲(chǔ)在cookie中速和,這樣Session就存放在了客戶端歹垫,服務(wù)端無(wú)狀態(tài)化。
缺點(diǎn):
- 安全性差颠放。用戶數(shù)據(jù)容易泄露排惨。只適合敏感度不高的系統(tǒng)
Session cache
將所有登錄信息存在redis的集群中,每一次的用戶請(qǐng)求都去redis cache 中獲取用戶登錄狀態(tài)碰凶。
優(yōu)點(diǎn):
- 安全
- 跟web-server無(wú)關(guān)暮芭,不管是宕機(jī)還是更新重啟都不影響已登錄用戶
- 方便水平擴(kuò)展
缺點(diǎn):
- 增加運(yùn)維成本
- 增加了一次額外的后端調(diào)用
- 需要增加相應(yīng)的代碼