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

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

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

瀏覽:119日期: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久久,三上悠亚国产精品一区二区三区
aⅴ色国产欧美| 性欧美xxxx免费岛国不卡电影| 波多野结衣久久精品| 国产一区二区三区国产精品| 中文无码久久精品| 日韩在线成人| 日本强好片久久久久久aaa| 日韩欧美另类中文字幕| 亚洲精品欧洲| 欧美亚洲免费| 精品中文在线| 欧美日韩在线网站| 午夜在线视频一区二区区别| 免费观看久久久4p| 亚洲理论在线| 久久99久久久精品欧美| 精品国产一区二区三区噜噜噜| 国模精品一区| 久久国产电影| 91精品电影| 亚洲精品女人| 久久精品福利| 天堂日韩电影| 亚洲专区视频| 国产精品蜜月aⅴ在线| 成人在线丰满少妇av| 免费黄色成人| 日韩黄色在线观看| av高清不卡| 在线精品亚洲| 国产一区二区三区探花| 欧美日韩中文字幕一区二区三区| 香蕉成人久久| 麻豆国产91在线播放| 福利在线免费视频| 伊人久久亚洲热| 国产精品自拍区| 日韩精品首页| 欧美午夜三级| 亚洲一级黄色| 国产麻豆一区| 91久久久精品国产| 欧美激情福利| 亚洲免费影视| 麻豆国产在线| 日本综合精品一区| 日韩理论视频| 日本aⅴ精品一区二区三区| аⅴ资源天堂资源库在线| 欧美在线亚洲综合一区| 国产剧情一区| 人人精品人人爱| 欧美xxxx中国| 日韩精彩视频在线观看| 久久中文亚洲字幕| 麻豆一区二区在线| 亚洲视频电影在线| 成人精品中文字幕| 久久av超碰| 综合色就爱涩涩涩综合婷婷| 亚洲成人va| 精品中文字幕一区二区三区| 亚洲一级淫片| 久久要要av| 国产精品久久久一区二区| 免费欧美日韩| 伊人久久大香线蕉av不卡| 老鸭窝一区二区久久精品| 国产一级一区二区| 中文另类视频| 国产成人免费| 国产亚洲字幕| 男女激情视频一区| 色88888久久久久久影院| 国产精区一区二区| 伊人久久大香伊蕉在人线观看热v| 日韩电影免费网站| 麻豆精品视频在线观看免费| 亚洲精品激情| 免费久久久久久久久| 国产一区调教| 国产欧美在线观看免费| 亚洲日本欧美| 鲁大师影院一区二区三区| 欧洲av不卡| 麻豆国产精品视频| 国产精品亚洲欧美一级在线| 亚洲三级视频| 午夜在线视频一区二区区别| 欧美亚洲国产一区| 久久天堂av| 91免费精品| 精品资源在线| 美女视频黄免费的久久| 日韩一区二区三区高清在线观看| 久久中文字幕av一区二区不卡| 岛国av在线播放| 国产一区二区三区四区二区| 免费在线亚洲欧美| 久久av免费看| 久久wwww| 精品国产一区二| 成人国产精品一区二区免费麻豆| 国产精品亚洲欧美日韩一区在线| 日本久久二区| 国产毛片精品| 精品午夜av| 国产精品高颜值在线观看| 97人人精品| 国产美女高潮在线观看| 在线中文字幕播放| 亚洲成av在线| 国产精品7m凸凹视频分类| 中文精品视频| 天堂久久一区| 国产精品一区二区三区www| 国产精品一页| 成人午夜在线| 日韩精品午夜| 亚洲大全视频| 快she精品国产999| 日韩中文字幕不卡| 91av一区| 欧美国产美女| 国产麻豆久久| 99视频一区| 日韩精品五月天| 国产亚洲人成a在线v网站| 欧美激情麻豆| 国产麻豆久久| 蜜臀精品一区二区三区在线观看| 亚洲精品在线二区| 国产精品中文| 精品捆绑调教一区二区三区| 夜夜精品视频| 国产精品一站二站| 在线中文字幕播放| 好吊一区二区三区| 日韩高清在线不卡| 久久av偷拍| 欧美亚洲国产精品久久| 视频在线观看国产精品| 国产精品一区二区中文字幕| 日韩成人综合| 欧美在线综合| 久久久久亚洲精品中文字幕| 91看片一区| 日韩在线麻豆| 国产夫妻在线| 蜜臀国产一区二区三区在线播放| 国产剧情在线观看一区| 久久婷婷一区| 日韩一区精品| 国产精品一区二区av日韩在线| 色爱综合网欧美| 在线日韩中文| 久久不见久久见国语| 欧美日韩国产综合网| 国产精品xxx在线观看| 99精品在线观看| 国产伦一区二区三区| 99精品综合| 国产精品多人| 99国产精品99久久久久久粉嫩| 91福利精品在线观看| 国产超碰精品| 欧美日本三区| 免费久久精品| 国产成人久久| 青草av.久久免费一区| 日韩国产欧美| 国产乱码精品一区二区三区亚洲人| 欧美日韩视频| 国产不卡人人| 欧美成人aaa| 日韩激情啪啪| 一区二区亚洲视频| 在线综合亚洲| 亚洲91视频| 91视频久久| 精品久久视频| 欧美极品一区二区三区| 亚洲精品影院在线观看| 欧美另类综合| 99久久激情| 国产成人久久| 麻豆精品新av中文字幕| 青草国产精品| 亚洲欧美一级| 亚洲一区免费| 欧美黄色网页| 午夜欧美精品| 日韩欧美少妇| 激情不卡一区二区三区视频在线| 夜久久久久久| 中文日韩在线| 国产精品免费大片| 蜜臀av亚洲一区中文字幕| 亚洲欧美一区在线| 精品一区二区三区免费看|