溫馨提示×

溫馨提示×

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

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

Spring Boot中Session共享怎么實現(xiàn)

發(fā)布時間:2021-12-07 14:48:54 來源:億速云 閱讀:189 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Spring Boot中Session共享怎么實現(xiàn)”,在日常操作中,相信很多人在Spring Boot中Session共享怎么實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spring Boot中Session共享怎么實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

緣起

在傳統(tǒng)的單服務(wù)架構(gòu)中,一般來說,只有一個服務(wù)器,那么不存在 Session 共享問題,但是在分布式/集群項目中,Session 共享則是一個必須面對的問題,先看一個簡單的架構(gòu)圖:

Spring Boot中Session共享怎么實現(xiàn)  

在這樣的架構(gòu)中,會出現(xiàn)一些單服務(wù)中不存在的問題,例如客戶端發(fā)起一個請求,這個請求到達 Nginx 上之后,被 Nginx 轉(zhuǎn)發(fā)到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份數(shù)據(jù),下次又來一個請求,這個請求被轉(zhuǎn)發(fā)到 Tomcat B  上,此時再去 Session 中獲取數(shù)據(jù),發(fā)現(xiàn)沒有之前的數(shù)據(jù)。對于這一類問題的解決,思路很簡單,就是將各個服務(wù)之間需要共享的數(shù)據(jù),保存到一個公共的地方(主流方案就是 Redis):

Spring Boot中Session共享怎么實現(xiàn)  

當所有 Tomcat 需要往 Session 中寫數(shù)據(jù)時,都往 Redis 中寫,當所有 Tomcat 需要讀數(shù)據(jù)時,都從 Redis 中讀。這樣,不同的服務(wù)就可以使用相同的 Session 數(shù)據(jù)了。

這樣的方案,可以由開發(fā)者手動實現(xiàn),即手動往 Redis 中存儲數(shù)據(jù),手動從 Redis 中讀取數(shù)據(jù),相當于使用一些 Redis 客戶端工具來實現(xiàn)這樣的功能,毫無疑問,手動實現(xiàn)工作量還是蠻大的。

一個簡化的方案就是使用 Spring Session 來實現(xiàn)這一功能,Spring Session 就是使用 Spring 中的代理過濾器,將所有的 Session 操作攔截下來,自動的將數(shù)據(jù) 同步到 Redis 中,或者自動的從 Redis 中讀取數(shù)據(jù)。

對于開發(fā)者來說,所有關(guān)于 Session 同步的操作都是透明的,開發(fā)者使用 Spring Session,一旦配置完成后,具體的用法就像使用一個普通的 Session 一樣。

到此,關(guān)于“Spring Boot中Session共享怎么實現(xiàn)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

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

AI