最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中的共享Session域詳解

 更新時(shí)間:2024年01月08日 10:13:50   作者:探索er  
這篇文章主要介紹了SpringBoot中的共享Session域詳解,使用Redis解決Session共享問題的原理非常簡(jiǎn)單,就是把原本存儲(chǔ)在不同服務(wù)器上的Session拿出來放在一個(gè)獨(dú)立的服務(wù)器上,需要的朋友可以參考下

Session

正常情況下,HttpSession是通過Servlet容器創(chuàng)建并進(jìn)行管理的,創(chuàng)建成功之后都是保存在內(nèi)存中。如果開發(fā)者需要對(duì)項(xiàng)目進(jìn)行橫向擴(kuò)展搭建集群,那么可以利用一些硬件或者軟件工具來做負(fù)載均衡。

此時(shí),來自同一用戶的HTTP請(qǐng)求就有可能被分發(fā)到不同的實(shí)例上去,如何保證各個(gè)實(shí)例之間Session的同步就成為一個(gè)必須解決的問題。

Spring Boot 提供了自動(dòng)化的Session 共享配置,它結(jié)合Redis可以非常方便地解決這個(gè)問題。

使用Redis解決Session共享問題的原理非常簡(jiǎn)單,就是把原本存儲(chǔ)在不同服務(wù)器上的Session拿出來放在一個(gè)獨(dú)立的服務(wù)器上,如圖所示

在這里插入圖片描述

當(dāng)一個(gè)請(qǐng)求到達(dá)Nginx服務(wù)器后,首先進(jìn)行請(qǐng)求分發(fā),假設(shè)請(qǐng)求被real serverl 處理了,real server 1在處理請(qǐng)求時(shí),無論是存儲(chǔ)Session還是讀取Session,都去操作Session服務(wù)器而不是操作自身內(nèi)存中的Session,其他real server在處理請(qǐng)求時(shí)也是如此,這樣就可以實(shí)現(xiàn)Session共享了。

Session共享配置

Spring Boot中的Session共享配置非常容易,創(chuàng)建Spring Boot Web 項(xiàng)目,添加Redis和 Session依賴,代碼如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!--去除Lettuce-->
    <exclusions>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.6.0</version>
</dependency>

除了Redis依賴之外,這里還要提供spring-session-data-redis依賴,Spring Session可以做到透明化地替換掉應(yīng)用的Session容器。

項(xiàng)目創(chuàng)建成功后,在application.properties中進(jìn)行Redis基本連接信息配置,代碼如下:

spring.redis.database=0
spring.redis.host=120.55.61.170
spring.redis.port=6379
spring.redis.password=123@456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.max-wait=-1ms
spring.redis.jedis.pool.min-idle=0

然后創(chuàng)建一個(gè)Controller用來執(zhí)行測(cè)試操作,代碼如下:

@RestController
public class HelloController {
    @Value("${server.port}")
    String port;

    @GetMapping("/save")
    public String saveName(String name, HttpSession session) {
        session.setAttribute("name", name);
        return port;
    }

    @GetMapping("/get")
    public String getName(HttpSession session) {
        return port + ":" +session.getAttribute("name").toString();
    }
}

這里提供了兩個(gè)方法,一個(gè) save接口用來向Session中存儲(chǔ)數(shù)據(jù),還有一個(gè)get接口用來從Session中獲取數(shù)據(jù),這里注入了項(xiàng)目啟動(dòng)的端口號(hào)server.port,主要是為了區(qū)分到底是哪個(gè)服務(wù)器提供的服務(wù)。

另外,雖然還是操作的HttpSession,但是實(shí)際上HttpSession容器已經(jīng)被透明替換,真正的Session 此時(shí)存儲(chǔ)在Redis服務(wù)器上。

項(xiàng)目創(chuàng)建完成后,將項(xiàng)目打成iar包上傳到CentOS 上。

然后執(zhí)行如下兩條命令啟動(dòng)項(xiàng)目:

nohup java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8001 &
nohup java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8002 &

nohup表示不掛斷程序運(yùn)行,即當(dāng)終端窗口關(guān)閉后,程序依然在后臺(tái)運(yùn)行,最后的&表示讓程序在后臺(tái)運(yùn)行。

–server.port表示設(shè)置啟動(dòng)端口,一個(gè)為8080,另一個(gè)為8081。啟動(dòng)成功后,接下來就可以配置負(fù)載均衡器了。

到此這篇關(guān)于SpringBoot中的共享Session域詳解的文章就介紹到這了,更多相關(guān)SpringBoot共享Session域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Security使用Lambda DSL配置流程詳解

    Spring Security使用Lambda DSL配置流程詳解

    Spring Security 5.2 對(duì) Lambda DSL 語法的增強(qiáng),允許使用lambda配置HttpSecurity、ServerHttpSecurity,重要提醒,之前的配置方法仍然有效。lambda的添加旨在提供更大的靈活性,但是用法是可選的。讓我們看一下HttpSecurity的lambda配置與以前的配置樣式相比
    2023-02-02
  • Java final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)

    Java final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄狫ava final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java?BigDecimal類用法詳解

    Java?BigDecimal類用法詳解

    本文詳細(xì)講解了Java?BigDecimal類的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • spring使用redis操作key-value的示例代碼

    spring使用redis操作key-value的示例代碼

    這篇文章主要介紹了spring使用redis操作key-value的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Spring注入bean的四種方式總結(jié)

    Spring注入bean的四種方式總結(jié)

    我們談到Spring的時(shí)候一定會(huì)提到IOC容器、DI依賴注入,Spring通過將一個(gè)個(gè)類標(biāo)注為Bean的方法注入到IOC容器中,達(dá)到了控制反轉(zhuǎn)的效果,Spring幫我們實(shí)現(xiàn)了一種通過注解來實(shí)現(xiàn)注入的方法,所以本文為大家介紹了Spring注入bean的四種方式,需要的朋友可以參考下
    2025-11-11
  • Java 使用keytool創(chuàng)建CA證書的操作

    Java 使用keytool創(chuàng)建CA證書的操作

    這篇文章主要介紹了Java 使用keytool創(chuàng)建CA證書的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能(服務(wù)器)

    JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能(服務(wù)器)

    這篇文章主要介紹了JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能,服務(wù)器部分的關(guān)鍵代碼實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java開發(fā)之File類詳細(xì)使用方法介紹

    java開發(fā)之File類詳細(xì)使用方法介紹

    這篇文章主要介紹了java開發(fā)之File類詳細(xì)使用方法介紹,需要的朋友可以參考下
    2020-02-02
  • 舉例講解Java的Spring框架中AOP程序設(shè)計(jì)方式的使用

    舉例講解Java的Spring框架中AOP程序設(shè)計(jì)方式的使用

    這篇文章主要介紹了Java的Spring框架中AOP程序設(shè)計(jì)方式的使用講解,文中舉的AOP下拋出異常的例子非常實(shí)用,需要的朋友可以參考下
    2016-04-04
  • Servlet輸出一個(gè)驗(yàn)證碼圖片的實(shí)現(xiàn)方法實(shí)例

    Servlet輸出一個(gè)驗(yàn)證碼圖片的實(shí)現(xiàn)方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Servlet輸出一個(gè)驗(yàn)證碼圖片的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

建湖县| 盐边县| 彭水| 榆中县| 忻城县| 郴州市| 金寨县| 固原市| 桂东县| 竹山县| 贺兰县| 南汇区| 郴州市| 桐城市| 射洪县| 探索| 克山县| 江陵县| 美姑县| 芮城县| 屏南县| 沅江市| 云安县| 马公市| 石楼县| 句容市| 额敏县| 桐柏县| 商丘市| 晋州市| 临城县| 兴国县| 陵水| 民权县| 泽库县| 仁布县| 中山市| 玛曲县| 德昌县| 吴桥县| 安西县|