亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

SpringBoot中使用Session共享實現分布式部署的示例代碼

瀏覽:2日期:2023-05-07 17:47:29

前言:我們知道,在單體項目中,我們將用戶信息存在 session 中,那么在該 session 過期之前,我們都可以從 session 中獲取到用戶信息,通過登錄攔截,進行操作

但是分布式部署的時候,我們請求的服務器可能不是同一臺服務器,那么我們就必須要面對 session 共享的問題,下面介紹的是在 SpringBoot 實現 session 共享的方式

一、創建項目

創建 SpringBoot 項目,選擇 Maven 依賴

SpringBoot中使用Session共享實現分布式部署的示例代碼

SpringBoot中使用Session共享實現分布式部署的示例代碼

最終 pom.xml 文件如下:

<!-- redis的依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- web的依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- session共享的依賴 --><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></dependency>

二、配置 Redis

我們需要借助 redis 實現 session 共享,所以我們需要在配置文件中配置 redis 的信息

server: port: 8080spring: redis: host: 127.0.0.1 port: 6379 database: 0 password:

我們配置了該項目的端口,以及 redis 的連接信息

三、寫接口

package com.zyxx.session.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpSession;@RestControllerpublic class DemoController { /** * 獲取項目端口 */ @Value('${server.port}') private String port; /** * 將信息存放在session中 */ @GetMapping('set') public String set(HttpSession session) { session.setAttribute('user', 'hello world~~~'); return port; } /** * 從session中獲取信息 */ @GetMapping('get') public String get(HttpSession session) { return session.getAttribute('user') + ' : ' + port; }}

我們寫了一個 set,一個 get 方法,將信息存放在 session 中,從 session 中取出信息

四、打包測試

SpringBoot中使用Session共享實現分布式部署的示例代碼

啟動項目,分別啟動在兩個端口:

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

分別啟動在 8080,8081端口

訪問:http://localhost:8080/set

SpringBoot中使用Session共享實現分布式部署的示例代碼

我們從 8080 端口,將信息保存在 session 中

我們訪問:http://localhost:8081/get

SpringBoot中使用Session共享實現分布式部署的示例代碼

我們在 8081 端口的項目中從 session 中取出了內容:hello world~~~

由此證明,我們的 session 共享已經成功

五、分布式部署

下面我們借助 nginx 代理轉發訪問這兩個項目

1、配置轉發

nginx 配置文件如下:

SpringBoot中使用Session共享實現分布式部署的示例代碼

主要配置內容:

upstream helloworld{server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=2;}

這里配置轉發到 8080,8081 端口,并配置了權重

location / {proxy_pass http://helloworld; #root html; #index index.html index.htm;}

攔截本地的所有請求,默認端口為 80

2、啟動 nginx

nginx -s reload

3、訪問測試

我們先刪除 redis 里面剛剛測試保存的信息

SpringBoot中使用Session共享實現分布式部署的示例代碼

然后我們訪問:

http://localhost/set

SpringBoot中使用Session共享實現分布式部署的示例代碼

這里我們可以看出,由 8080 端口的服務器完成了 set 請求,多次訪問,nginx 將會根據什么配置的權重參數分配服務器來完成操作

下面我們訪問:

http://localhost/get

SpringBoot中使用Session共享實現分布式部署的示例代碼

可以看出,由 8081 端口的服務器完成了 get 請求,并成功取到了存在 session 中的數據,實現了 session 共享

六、總結

1、以前我們在 SSM 架構的項目中實現 session 共享,需要配置三個地方 ,一個是 web.xml 配置代理過濾器,然后在 Spring 容器中配置 Redis,最后再配置 Spring Session,相比 SpringBoot,稍有復雜2、我們在 SpringBoot 中實現 session 共享還是非常簡單的,只需要引入依賴,簡單配置即可實現3、實現 session 共享,幫助我們將項目分布式部署,提升服務性能有很大的意義

到此這篇關于SpringBoot中使用Session共享實現分布式部署的示例代碼的文章就介紹到這了,更多相關SpringBoot Session分布式部署內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产黄频在线观看高清免费 | 久久这里只有精品免费播放 | 日韩国产欧美 | 久久国产精品男女热播 | 黄色片网战| 久久99国产精品久久99果冻传媒 | 国产精品1区2区3区 国产精品1区2区3区在线播放 | 色噜噜五月综合激情久久爱 | 小明看看主页 | 国产未成女年一区二区 | 亚洲精品国产精品乱码视色 | 又大又爽又湿又紧a视频 | 一区二区高清在线 | 在线观看亚洲精品国产 | 国产在线综合视频 | 91粉色视频在线观看 | 亚洲一区二区中文 | 欧美亚洲国产精品久久久 | 欧美aaa级| 福利国产精品 | 免费一级毛片不卡在线播放 | 欧美视频在线一区二区三区 | 黄色影 | 一级毛片国产真人永久在线 | 欧美美女一区二区三区 | 国产一级性生活 | 久久国产精品1区2区3区网页 | 成 人国产在线观看高清不卡 | 91国内外精品自在线播放 | 亚洲系列在线 | 在线播放国产视频 | 国产精品线在线精品国语 | 国产成人午夜视频 | 国产凹凸在线观看一区二区 | 精品视频入口 | 97视频在线视频 | 国产精品二 | 色播日韩 | 在线播放人成午夜免费视频 | 国产精品黄色片 | 日韩激情在线 |