日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot Session共享實現原理及代碼實例

瀏覽:125日期:2023-05-01 18:57:31

在傳統的單服務架構中,一般來說,只有一個服務器,那么不存在 Session

共享問題,但是在分布式/集群項目中,Session 共享則是一個必須面對的問題,先看一個簡單的架構圖:

Springboot Session共享實現原理及代碼實例

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

Springboot Session共享實現原理及代碼實例

1 實戰

1.1 創建工程

首先 創建一個 Spring Boot 工程,引入 Web、Spring Session 以及 Redis:

Springboot Session共享實現原理及代碼實例

創建成功之后,pom.xml 文件如下:

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency></dependencies>

注意:

這里我使用的 Spring Boot 版本是 2.1.4 ,如果使用當前最新版 Spring Boot2.1.5的話,除了上面這些依賴之外,需要額外添加 Spring Security 依賴(其他操作不受影響,僅僅只是多了一個依賴,當然也多了 Spring Security 的一些默認認證流程)。

1.2 配置 Redis

spring.redis.host=192.168.66.128spring.redis.port=6379spring.redis.password=123spring.redis.database=0

1.3 使用

配置完成后 ,就可以使用 Spring Session 了,其實就是使用普通的 HttpSession ,其他的 Session 同步到 Redis 等操作,框架已經自動幫你完成了:

@RestControllerpublic class HelloController { @Value('${server.port}') Integer port; @GetMapping('/set') public String set(HttpSession session) { session.setAttribute('user', 'javaboy'); return String.valueOf(port); } @GetMapping('/get') public String get(HttpSession session) { return session.getAttribute('user') + ':' + port; }}

考慮到一會 Spring Boot 將以集群的方式啟動 ,為了獲取每一個請求到底是哪一個 Spring Boot 提供的服務,需要在每次請求時返回當前服務的端口號,因此這里我注入了 server.port 。

接下來 ,項目打包:

Springboot Session共享實現原理及代碼實例

打包之后,啟動項目的兩個實例:

java -jar sessionshare-0.0.1-SNAPSHOT.jar --server.port=8080java -jar sessionshare-0.0.1-SNAPSHOT.jar --server.port=8081

然后先訪問 localhost:8080/set 向 8080 這個服務的 Session 中保存一個變量,訪問完成后,數據就已經自動同步到 Redis 中 了 :

Springboot Session共享實現原理及代碼實例

然后,再調用 localhost:8081/get 接口,就可以獲取到 8080 服務的 session 中的數據:

Springboot Session共享實現原理及代碼實例

此時關于 session 共享的配置就已經全部完成了,session 共享的效果我們已經看到了,但是每次訪問都是我自己手動切換服務實例,因此,接下來我們來引入 Nginx ,實現服務實例自動切換。

1.4 引入 Nginx

很簡單,進入 Nginx 的安裝目錄的 conf 目錄下(默認是在 /usr/local/nginx/conf),編輯 nginx.conf 文件:

Springboot Session共享實現原理及代碼實例

在這段配置中:

upstream 表示配置上游服務器 javaboy.org 表示服務器集群的名字,這個可以隨意取名字 upstream 里邊配置的是一個個的單獨服務 weight 表示服務的權重,意味者將有多少比例的請求從 Nginx 上轉發到該服務上 location 中的 proxy_pass 表示請求轉發的地址,/ 表示攔截到所有的請求,轉發轉發到剛剛配置好的服務集群中 proxy_redirect 表示設置當發生重定向請求時,nginx 自動修正響應頭數據(默認是 Tomcat 返回重定向,此時重定向的地址是 Tomcat 的地址,我們需要將之修改使之成為 Nginx 的地址)。

配置完成后,將本地的 Spring Boot 打包好的 jar 上傳到 Linux ,然后在 Linux 上分別啟動兩個 Spring Boot 實例:

nohup java -jar sessionshare-0.0.1-SNAPSHOT.jar --server.port=8080 & nohup java -jar sessionshare-0.0.1-SNAPSHOT.jar --server.port=8081 &

其中

nohup 表示當終端關閉時,Spring Boot 不要停止運行 & 表示讓 Spring Boot 在后臺啟動

配置完成后,重啟 Nginx:

/usr/local/nginx/sbin/nginx -s reload

Nginx 啟動成功后,我們首先手動清除 Redis 上的數據,然后訪問 192.168.66.128/set 表示向 session 中保存數據,這個請求首先會到達 Nginx 上,再由 Nginx 轉發給某一個 Spring Boot 實例:

Springboot Session共享實現原理及代碼實例

如上,表示端口為 8081 的 Spring Boot 處理了這個 /set 請求,再訪問 /get 請求:

Springboot Session共享實現原理及代碼實例

可以看到,/get 請求是被端口為 8080 的服務所處理的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧洲毛片在线视频免费观看| 免费观看在线综合色| 日韩精品一二三区| 99久久精品网| 激情欧美一区二区三区| 欧美一区二区三区高清视频| 日韩精品免费一区二区在线观看 | 婷婷国产精品| 高清一区二区| 999久久久免费精品国产| 黑人精品一区| 啪啪国产精品| 99精品99| 日韩激情视频网站| 69堂精品视频在线播放| 国产精品久久久久毛片大屁完整版| 中文字幕成人| 欧美日韩va| 美女久久久久久 | 91精品精品| 免费人成黄页网站在线一区二区| 中文字幕一区二区三区日韩精品| 日韩精品中文字幕一区二区| 久久久久97| 蜜臀91精品国产高清在线观看| 综合五月婷婷| 日韩激情一区| 亚洲a成人v| 日韩不卡在线| 欧美在线看片| 久久精品一区二区不卡| 欧美伊人影院| 亚洲激情偷拍| 精品美女在线视频| 日韩在线网址| 亚洲在线观看| 日韩成人亚洲| 日韩av中文在线观看| 亚洲小说欧美另类婷婷| 美腿丝袜亚洲一区| 日韩激情网站| 综合国产精品| 999精品一区| 一本色道精品久久一区二区三区| 伊人成人在线视频| 爽好多水快深点欧美视频| 国产精品草草| 亚洲欧美网站在线观看| 影音先锋久久| 99久久99视频只有精品| 久久亚洲黄色| 91精品尤物| 欧洲激情综合| 国产精品7m凸凹视频分类| 狠狠躁少妇一区二区三区| 精品国产乱码久久久久久樱花| 日本精品国产| 欧美一区二区三区久久精品| 在线观看亚洲精品福利片| 99在线|亚洲一区二区| 欧美日韩国产综合网| 久久影院一区| 久久精品国产亚洲夜色av网站 | 国产精品视频一区二区三区四蜜臂 | 亚洲色诱最新| 久久一区国产| 国产在线不卡一区二区三区| 色爱综合网欧美| 欧洲一区二区三区精品| 影音先锋久久| 日韩综合一区二区三区| 欧美在线91| 成人影视亚洲图片在线| 欧美一级精品| 夜夜精品视频| 亚洲主播在线| 噜噜噜久久亚洲精品国产品小说| 国内精品福利| 国产精品人人爽人人做我的可爱| 成人在线视频中文字幕| 精品亚洲自拍| 久久久久久色| 国产亚洲久久| 久久99精品久久久久久园产越南| 国产美女撒尿一区二区| 亚洲精品九九| 国产精品tv| 国产a亚洲精品| 久久高清精品| 免费日本视频一区| 免费观看在线综合| 日韩精品1区2区3区| 国产另类在线| 视频二区不卡| 亚洲欧美视频| 日韩精品中文字幕一区二区| 久久中文精品| 久久精选视频| 亚洲日本久久| 国产一区国产二区国产三区| 欧美国产三级| 欧美成人综合| 麻豆国产欧美日韩综合精品二区| av中文资源在线资源免费观看| 在线成人直播| 美女免费视频一区| 免费在线观看不卡| 在线一区av| 日韩高清不卡在线| 在线一区视频观看| 亚洲专区一区| 亚洲久草在线| 欧洲一级精品| 国产视频一区二区在线播放| 不卡视频在线| 日韩精品欧美成人高清一区二区| 欧美日韩精品免费观看视欧美高清免费大片 | 日韩黄色大片| 日韩欧美中文在线观看| 色婷婷精品视频| 国产亚洲一区| 亚洲色图综合| 亚洲欧美日韩国产| 久久久久久色| 欧美精品激情| 国产麻豆久久| 开心激情综合| 国产精品啊v在线| 日日夜夜免费精品视频| 激情久久五月| 另类小说一区二区三区| 日韩二区三区在线观看| 好吊一区二区三区| 欧美一级鲁丝片| 精品视频在线你懂得| 国产日韩精品视频一区二区三区| 欧美色图国产精品| 欧美~级网站不卡| 国产精品手机在线播放| 国产日韩欧美一区在线| 日韩中文字幕| 蜜桃一区二区三区在线观看| 精品一区三区| 欧美在线网站| 红桃视频亚洲| 99热精品在线观看| 免费人成精品欧美精品| 99视频精品全国免费| 欧美一级精品| 欧美日韩精品免费观看视完整| 不卡专区在线| 久久国产亚洲精品| 亚洲激情国产| 国产韩日影视精品| 男女性色大片免费观看一区二区 | 欧美一区二区三区久久精品| 精品国产中文字幕第一页| 激情国产在线| 国产视频亚洲| 国产精品va| 伊人精品一区| 日韩视频一区| 91精品国产自产精品男人的天堂 | 麻豆久久久久久| 麻豆国产精品视频| 99tv成人| 亚欧洲精品视频在线观看| 麻豆精品蜜桃视频网站| 久久91导航| 欧美日韩99| 精品久久91| 午夜亚洲福利| 成人国产精选| 美国欧美日韩国产在线播放| 麻豆91在线播放| 久热re这里精品视频在线6| 欧美极品中文字幕| 午夜电影亚洲| 精品久久免费| 青青草国产精品亚洲专区无| 国产综合色产| 精品欧美日韩精品| 日本欧美一区二区在线观看| 久久国产精品成人免费观看的软件| 国产欧美一区二区三区国产幕精品| 99久久亚洲精品| 久久精品国产久精国产| 久久精品一区二区不卡| 欧美91在线|欧美| 亚洲视频二区| 久久美女精品| 欧美成人a交片免费看| 毛片不卡一区二区| 日韩不卡一二三区| 亚洲自拍另类| 午夜日本精品| 99久久婷婷| 欧美特黄一级| 六月婷婷一区| 国产亚洲亚洲|