欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中使用Session共享實(shí)現(xiàn)分布式部署的示例代碼

 更新時(shí)間:2020年07月02日 10:20:12   作者:Asurplus、  
這篇文章主要介紹了SpringBoot中使用Session共享實(shí)現(xiàn)分布式部署的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

但是分布式部署的時(shí)候,我們請(qǐng)求的服務(wù)器可能不是同一臺(tái)服務(wù)器,那么我們就必須要面對(duì) session 共享的問題,下面介紹的是在 SpringBoot 實(shí)現(xiàn) session 共享的方式

一、創(chuàng)建項(xiàng)目

創(chuàng)建 SpringBoot 項(xiàng)目,選擇 Maven 依賴



最終 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 實(shí)現(xiàn) session 共享,所以我們需要在配置文件中配置 redis 的信息

server:
 port: 8080

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

我們配置了該項(xiàng)目的端口,以及 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;

@RestController
public class DemoController {

  /**
   * 獲取項(xiàng)目端口
   */
  @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;
  }
}

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

四、打包測(cè)試


啟動(dòng)項(xiàng)目,分別啟動(dòng)在兩個(gè)端口:

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

分別啟動(dòng)在 8080,8081端口

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


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

我們?cè)L問:http://localhost:8081/get


我們?cè)?8081 端口的項(xiàng)目中從 session 中取出了內(nèi)容:hello world~~~

由此證明,我們的 session 共享已經(jīng)成功

五、分布式部署

下面我們借助 nginx 代理轉(zhuǎn)發(fā)訪問這兩個(gè)項(xiàng)目

1、配置轉(zhuǎn)發(fā)

nginx 配置文件如下:


主要配置內(nèi)容:

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

這里配置轉(zhuǎn)發(fā)到 8080,8081 端口,并配置了權(quán)重

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

攔截本地的所有請(qǐng)求,默認(rèn)端口為 80

2、啟動(dòng) nginx

nginx -s reload

3、訪問測(cè)試

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


然后我們?cè)L問:

http://localhost/set


這里我們可以看出,由 8080 端口的服務(wù)器完成了 set 請(qǐng)求,多次訪問,nginx 將會(huì)根據(jù)什么配置的權(quán)重參數(shù)分配服務(wù)器來完成操作

下面我們?cè)L問:

http://localhost/get


可以看出,由 8081 端口的服務(wù)器完成了 get 請(qǐng)求,并成功取到了存在 session 中的數(shù)據(jù),實(shí)現(xiàn)了 session 共享

六、總結(jié)

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

到此這篇關(guān)于SpringBoot中使用Session共享實(shí)現(xiàn)分布式部署的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot Session分布式部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何處理延遲任務(wù)過程解析

    Java如何處理延遲任務(wù)過程解析

    這篇文章主要介紹了Java如何處理延遲任務(wù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之IT設(shè)備固定資產(chǎn)管理系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之IT設(shè)備固定資產(chǎn)管理系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)IT設(shè)備固定資產(chǎn)管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Spring Boot集成Druid數(shù)據(jù)庫連接池

    Spring Boot集成Druid數(shù)據(jù)庫連接池

    這篇文章主要介紹了Spring Boot集成Druid數(shù)據(jù)庫連接池,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java如何使用Query動(dòng)態(tài)拼接SQL詳解

    Java如何使用Query動(dòng)態(tài)拼接SQL詳解

    這篇文章主要給大家介紹了關(guān)于Java如何使用Query動(dòng)態(tài)拼接SQL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Maven通過filtering標(biāo)簽讀取變量配置的三種方法

    Maven通過filtering標(biāo)簽讀取變量配置的三種方法

    在日常開發(fā)中,我們大多都會(huì)有開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境等,不同環(huán)境的參數(shù)肯定不一樣,本文主要介紹了Maven通過filtering標(biāo)簽讀取變量配置的三種方法,感興趣的可以了解一下
    2024-03-03
  • Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(一)之MyBatis的基礎(chǔ)知識(shí)

    Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(一)之MyBatis的基礎(chǔ)知識(shí)

    這篇文章主要介紹了Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(一)之MyBatis的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2017-05-05
  • Java遠(yuǎn)程調(diào)用組件Feign技術(shù)使用詳解

    Java遠(yuǎn)程調(diào)用組件Feign技術(shù)使用詳解

    Feign是Netflix公司開發(fā)的一個(gè)聲明式的REST調(diào)用客戶端; Ribbon負(fù)載均衡、 Hystrⅸ服務(wù)熔斷是我們Spring Cloud中進(jìn)行微服務(wù)開發(fā)非常基礎(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時(shí)出現(xiàn)的,而且配置也都非常相似
    2022-11-11
  • JAVA操作elastic?search的詳細(xì)過程

    JAVA操作elastic?search的詳細(xì)過程

    Elasticsearch?Rest?High?Level?Client?是?Elasticsearch?官方提供的一個(gè)?Java?客戶端庫,用于與?Elasticsearch?進(jìn)行交互,本文介紹JAVA操作elastic?search的詳細(xì)過程,感興趣的朋友一起看看吧
    2024-08-08
  • Maven倉(cāng)庫加載順序的實(shí)例解析

    Maven倉(cāng)庫加載順序的實(shí)例解析

    Maven倉(cāng)庫一般分為本地倉(cāng)庫和遠(yuǎn)程倉(cāng)庫。那么在實(shí)際開發(fā)中,在配置了多個(gè)倉(cāng)庫的情況下,他們之間的加載訪問順序是怎么樣的呢,本文就詳細(xì)的來介紹一下
    2021-12-12

最新評(píng)論