在分布式环境中解决session共享问题
一、什么是session
session在計(jì)算機(jī)中,尤其是在網(wǎng)絡(luò)應(yīng)用中,稱為”會(huì)話控制“。Session對(duì)象存儲(chǔ)特定用戶會(huì)話所需的屬性及配置信息。這樣,當(dāng)用戶在應(yīng)用程序的web頁面之間跳轉(zhuǎn)時(shí),存儲(chǔ)在session對(duì)象中的變量將不會(huì)丟失,而在整個(gè)用戶會(huì)話中一直存在下去。
二、產(chǎn)生session不一致原因
單臺(tái)tomcat沒有任何問題,但現(xiàn)在是集群的tomcat因此就存在session不一致問題。如圖
三、解決方案
(1)session復(fù)制
tomcat的session復(fù)制,可以實(shí)現(xiàn)session共享
優(yōu)點(diǎn):不需要額外開發(fā),只需搭建tomcat集群即可
缺點(diǎn):tomcat 是全局session復(fù)制,集群內(nèi)每個(gè)tomcat的session完全同步(也就是任何時(shí)候都完全一樣的) 在大規(guī)模應(yīng)用的時(shí)候,用戶過多,集群內(nèi)tomcat數(shù)量過多,session的全局復(fù)制會(huì)導(dǎo)致集群性能下降, 因此,tomcat的數(shù)量不能太多,5個(gè)以下為好。
(2)session綁定
當(dāng)用戶A第一次訪問系統(tǒng)時(shí),tomcat1對(duì)其進(jìn)行服務(wù),那么,下次訪問時(shí)仍然讓tomcat1對(duì)其進(jìn)行服務(wù)
(3)使用redis集中管理session
可以將用戶的會(huì)話保存在redis中,每次從redis中查詢用戶信息,就可以很好的解決會(huì)話共享問題。如圖:
四、實(shí)際應(yīng)用
(1)用戶登錄問題
對(duì)于大型分布式系統(tǒng),可以使用單點(diǎn)登錄系統(tǒng)進(jìn)行登錄,其中用戶的session保存在redis緩存系統(tǒng)中
(2)用戶短信驗(yàn)證
當(dāng)需要對(duì)用戶短信進(jìn)行校驗(yàn)前,調(diào)取第三方服務(wù)獲取驗(yàn)證碼,需要先將驗(yàn)證碼保存在session中,然后與用戶提交的驗(yàn)證碼進(jìn)行比對(duì)
?
總結(jié)
以上是生活随笔為你收集整理的在分布式环境中解决session共享问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAX3232和MAX232的具体差别
- 下一篇: C语言再学习 -- 关于注释