真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

在SpringBoot中怎么使用SpringSession解決分布式會話共享問題

本篇內容介紹了“在SpringBoot中怎么使用Spring Session解決分布式會話共享問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

10余年的青云譜網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整青云譜建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯從事“青云譜網站設計”,“青云譜網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

前言

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

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

Session共享的問題

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

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

  1.  利用Servlet容器提供的插件功能,自定義HttpSession的創(chuàng)建和管理策略,并通過配置的方式替換掉默認的策略。不過這種方式有個缺點,就是需要耦合Tomcat/Jetty等Servlet容器的代碼。這方面其實早就有開源項目了,例如memcached-session-manager,以及tomcat-redis-session-manager。暫時都只支持Tomcat6/Tomcat7。

    2.  配置Nginx的負載均衡算法為ip_hash,這樣每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,有效解決了動態(tài)網頁存在的Session共享問題

    3.  如果你使用Shiro管理Session,可以用Redis來實現Shiro 的SessionDao接口,這樣Session便歸Redis保管。

    4.  設計一個Filter,利用HttpServletRequestWrapper,實現自己的 getSession()方法,接管創(chuàng)建和管理Session數據的工作。Spring-Session就是通過這樣的思路實現的。

在Spring Boot中 集成 Spring Session

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

1、引入Maven依賴(本示例使用dependencyManagement,如果你沒有使用它請?zhí)砑?version>標簽)     

             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,如何配置?看這里。

我們來驗證一下~

在SpringBoot中怎么使用Spring Session解決分布式會話共享問題

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

Cookies 也正常創(chuàng)建,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查看,發(fā)現Redis中也已保存相關數據。

“在SpringBoot中怎么使用Spring Session解決分布式會話共享問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯網站,小編將為大家輸出更多高質量的實用文章!


網頁題目:在SpringBoot中怎么使用SpringSession解決分布式會話共享問題
當前鏈接:http://weahome.cn/article/gceijc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部