分佈式會話(session)

基概:Session 即服務器與客戶端保持整個通訊的會話基本信息

客戶端在第一次訪問服務端的時候,服務端會響應一個sessionId並且將它存入到本地cookie中,在之後的訪問會將cookie中的sessionId放入到請求頭中去訪問服務器,如果通過這個sessionid沒有找到對應的數據那麼服務器會創建一個新的sessionid並且響應給客戶端


問題:如圖 在單機環境時session是存儲在web容器中(即jvm內存中)而在分佈式集羣環境時則會產生session 共享的問題

解決:

springSession+redis  

思路分析:

會話信息存儲在服務器端Session對象當中,這種方式在分佈式會話場景下,相對
比較繁瑣一點,一般我們用SpringSession做分佈式會話,會話信息一般會選擇第三方
中間件進行存儲,比如:MongoDB,Redis,Mysql,這三種存儲方式分佈式會話框
架SpringSession都支持,已經提供springboot的集成,我們只需要做相關配置即可

比如我們一Redis作爲分佈式Session存儲服務
第一步:引入依賴
<!‐‐sessions 依賴‐‐>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring‐session‐data‐redis</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
<!‐‐redis 依賴‐‐>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐data‐redis</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>

第二步:配置
在application.yml配置redis與Session
spring:
redis:
host: 192.168.0.198
port: 6379
session:
# spring session使用存儲類型,springboot默認就是使用redis方式,如果不想用可以填n
one。
store‐type: redis

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章