91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot開發案例 分布式集群共享Session詳解

發布時間:2020-09-02 00:14:01 來源:腳本之家 閱讀:186 作者:小柒 欄目:編程語言

前言

在分布式系統中,為了提升系統性能,通常會對單體項目進行拆分,分解成多個基于功能的微服務,如果有條件,可能還會對單個微服務進行水平擴展,保證服務高可用。

那么問題來了,如果使用傳統管理 Session 的方式,我們會遇到什么樣的問題?

案例

這里拿下單舉例,用戶小明在天貓上相中了一個的娃娃,覺得不錯,果斷購買,選尺寸,挑身高,然后確認選擇,趕緊提交訂單,然后就跳轉到了登錄頁面!小明表示很郁悶,大寫的問號???

  • 小明進入娃娃頁面,此時請求通過代理服務發送到業務系統一。
  • 小明選尺寸,挑身高,此操作并沒有對后端服務發送請求。
  • 小明提交訂單,此時請求通過代理服務發送到業務系統二,然鵝,二系統此時并沒有查詢到小明的登錄信息,就被無情的跳轉到登錄頁了。

方案

SpringBoot開發案例 分布式集群共享Session詳解

HttpSession 默認使用內存來管理 Session,通常服務端把用戶信息存儲到各自的 Jvm 內存中。所以小明下單的時候找不到登錄信息,那么我么何不把用戶信息集中存儲!?

為了測試效果,這里我們搭建一個演示案例,項目涉及 SpringBoot、spring-session、redis、nginx 等相關組件。

pom.xml引入依賴:

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

配置 redis 參數,軟件自行安裝:

## redis
#session存儲類型
spring.session.store-type=redis
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=3000

簡單的用戶登錄實現,省略部分代碼:

@RequestMapping(value="login",method=RequestMethod.POST)
public Result login(String username,String password,HttpServletRequest request,HttpServletResponse response) throws Exception {
    SysUser user = userService.getUser(username);
    if(user==null) {
      return Result.error("用戶不存在");
    }else {
      if(user.getPassword().equals(password)) {
        request.getSession().setAttribute("user", user);
        return Result.ok();
      }else {
        return Result.error("密碼錯誤");
      }
    }
}

配置代理實現,基于 Nginx:

server {
    listen    80;
    server_name blog.52itstyle.vip;
    location / {
      proxy_pass http://192.168.1.2:8080; 
    }
    location /cart {
       proxy_pass http://192.168.1.3:8080$request_uri;
    }
    location /order {
       proxy_pass http://192.168.1.4:8080$request_uri;
    }
 }

配置成功后登錄系統,在 redis 中查詢用戶信息:

127.0.0.1:6379> keys *
1) "spring:session:expirations:1562577660000"
2) "spring:session:sessions:1076c2bd-95b1-4f23-abd4-ab3780e32f6f"
3) "spring:session:sessions:expires:1076c2bd-95b1-4f23-abd4-ab3780e32f6f"

小結

這樣,小明就可以開心的買娃娃了!

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平山县| 弥渡县| 永兴县| 鸡东县| 德州市| 兰坪| 白朗县| 锦屏县| 衡山县| 洞头县| 轮台县| 湘潭市| 西丰县| 阿拉善盟| 东阳市| 庄河市| 竹山县| 离岛区| 泰州市| 图木舒克市| 浏阳市| 昌邑市| 米泉市| 阳高县| 雷山县| 织金县| 三明市| 美姑县| 安龙县| 德钦县| 鹿邑县| 九江市| 西丰县| 宝坻区| 东阳市| 右玉县| 萨迦县| 丰城市| 健康| 阳东县| 阿克|