常規集羣部署時的分佈式session如何實現?

方法一:tomcat + redis

就是使用session的代碼跟以前一樣,基於tomcat原生的session支持即可,使用一個叫做Tomcat RedisSessionManager的配置插件,讓所有我們部署的tomcat都將session數據存儲到redis即可。

在tomcat的配置文件中,配置一下
在這裏插入圖片描述

搞一個類似上面的配置即可。

在這裏插入圖片描述
還可以用上面這種方式基於redis哨兵支持的redis高可用集羣來保存session數據,

方法二:tomcat + redisspring session + redis

分佈式會話的這個東西重耦合在tomcat中,如果我要將web容器遷移成jetty,難道你重新把jetty都配置一遍嗎?

因爲上面那種tomcat + redis的方式好用,但是會嚴重依賴於web容器,不好將代碼移植到其他web容器上去,尤其是你要是換了技術棧咋整?比如換成了spring cloud或者是spring boot之類的。

所以現在比較好的還是基於java一站式解決方案,spring了。人家spring基本上包掉了大部分的我們需要使用的框架了,spirng cloud做微服務了,spring boot做腳手架了,所以用sping session是一個很好的選擇。
在這裏插入圖片描述

  • 示例代碼如下在這裏插入圖片描述

給sping session配置基於redis來存儲session數據,然後配置了一個spring session的過濾器,這樣的話,session相關操作都會交給spring session來管了。接着在代碼中,就用原生的session操作,就是直接基於spring sesion從redis中獲取數據了。

實現分佈式的會話,有很多種很多種方式,我說的只不過比較常見的兩種方式,tomcat + redis早期比較常用;近些年,重耦合到tomcat中去,通過spring session來實現。

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