日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

在共享dll中使用mfc_在SpringBoot中使用Spring Session解决分布式会话共享问题

發布時間:2023/12/19 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在共享dll中使用mfc_在SpringBoot中使用Spring Session解决分布式会话共享问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:簡單的土豆

來源:www.jianshu.com/p/e4191997da56

前言

如果你正在使用Java開發Web應用,想必你對HttpSession非常熟悉,但我們知道HpptSession默認使用內存來管理Session,如果將應用橫向擴展將會出現Session共享問題。

Spring Session提供了一套創建和管理Servlet HttpSession的方案,以此來解決Session共享的問題,更為重要的是在Spring Boot中使用它極其簡單。

Session共享的問題

HttpSession是通過Servlet容器創建和管理的,像Tomcat/Jetty都是保存在內存中的。如果我們將Web應用橫向擴展搭建成分布式的集群,然后利用LVS或Nginx做負載均衡,那么來自同一用戶的Http請求將有可能被負載分發到兩個不同的實例中去,如何保證不同實例間Session共享成為一個不得不解決的問題。

最簡單的解決方法就是把Session數據保存到內存以外的一個統一的地方,例如Memcached/Redis中。那么問題又來了,如何替換掉Servlet容器創建和管理HttpSession的實現呢?

  • 利用Servlet容器提供的插件功能,自定義HttpSession的創建和管理策略,并通過配置的方式替換掉默認的策略。不過這種方式有個缺點,就是需要耦合Tomcat/Jetty等Servlet容器的代碼。這方面其實早就有開源項目了,例如memcached-session-manager,以及tomcat-redis-session-manager。暫時都只支持Tomcat6/Tomcat7。
  • 配置Nginx的負載均衡算法為ip_hash,這樣每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,有效解決了動態網頁存在的Session共享問題
  • 如果你使用Shiro管理Session,可以用Redis來實現Shiro 的SessionDao接口,這樣Session便歸Redis保管。
  • 設計一個Filter,利用HttpServletRequestWrapper,實現自己的 getSession()方法,接管創建和管理Session數據的工作。Spring-Session就是通過這樣的思路實現的。
  • 在Spring Boot中 集成 Spring Session

    Spring Session 支持使用Redis、Mongo、JDBC、Hazelcast來存儲Session,這里以Redis為例。

    1、引入Maven依賴(本示例使用dependencyManagement,如果你沒有使用它請添加標簽)

    ????????????????????org.springframework.boot????????????spring-boot-starter-data-redis????????????????????????????org.springframework.session????????????spring-session????????

    2、配置你的Spring Application,將你的application.properties加入以下配置。

    spring.session.store-type=redis

    僅此兩步,便集成完畢,整個過程完全無痛、無感~

    注意:如果你的Redis服務器不是使用本地默認配置(localhost:6379),需要配置你的Redis,如何配置?看這里。

    我們來驗證一下~

    果然,Http Session已被Spring Session進行包裝,我們可以依舊使用Http Session的API來進行編程。

    Cookies 也正常創建,Key為SESSION。

    127.0.0.1:6379>?keys?*1)?"spring:session:sessions:083706a8-b2d8-480c-8b88-eafc798e7269"2)?"spring:session:sessions:expires:083706a8-b2d8-480c-8b88-eafc798e7269"3)?"spring:session:expirations:1490263320000"

    使用redis-cli查看,發現Redis中也已保存相關數據。

    參考

    https://link.jianshu.com/?t=http://docs.spring.io/spring-session/docs/current/reference/html5/

    總結

    以上是生活随笔為你收集整理的在共享dll中使用mfc_在SpringBoot中使用Spring Session解决分布式会话共享问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。