session共享問題以及解決

2021-08-11 07:41:37 字數 677 閱讀 2563

1. 通過組播的方式進行集群間的共享,

優點:web容器自身支援,配置簡單,適合小型**。

缺點:當一台機器的上的session變更後會將變更的資料以組播的形式分發給集群間的所有節點,對網路和所有的web容器都是存在開銷。集群越大浪費越嚴重。不能做到線性的擴充套件。

2. 利用共享儲存來共享session資料

所有的web伺服器都把session資料寫到共享儲存介質上,也都要來這台伺服器獲取session資料,通過這樣的方式來實現session資料的共享。

優點:網路開銷較小。

缺點:受制於儲存裝置的依賴,如果儲存裝置down掉,就無法工作了,要做好主備同步等一些容災措施。另外,當訪問量過大時,磁碟的io也是乙個非常大的問題。

3.利用memcache或則redis來儲存共享session資料

所有web伺服器都把session寫入到或則redis,也都從memcache或則redis來獲取。

優點:memcache或則redis本身就是乙個分布式快取,便於擴充套件。網路開銷較小,幾乎沒有io。效能也更好。

缺點:受制於memcache的容量(除非你有足夠記憶體儲存),如果使用者量突然增多cache由於容量的限制會將一些資料擠出快取,另外memcache故障或重啟session會完全丟失掉。

4.完全用cookie

5.還有就是session共享容易造成廣播風暴

session共享問題

http協議是無狀態的 第一次訪問會生成jsessionid儲存在tomcat的concurrentmap裡伺服器,把jsessionid寫到客戶端的cookie裡面。關於cookie和session的聯絡 cookie中會包含哪些資訊 名字 值 過期時間 路徑 域 cookie會帶到http請求偷...

session共享問題

1,spring session使用的場景?httpsession是通過servlet容器進行建立和管理的,在單機環境中。通過http請求建立的session資訊是儲存在web伺服器記憶體中,如tomcat jetty。假如當使用者通過瀏覽器訪問應用伺服器,session資訊中儲存了使用者的登入資訊...

併發session共享問題

讓負載均衡器能夠根據每次的請求的會話標識來進行請求的 這樣就能保證每次都能落到同一臺伺服器上面,這種方式稱為session sticky方式。如下圖 存在問題 1.如果這一台web伺服器宕機或者重啟了,伺服器上的會話資料會丟失,使用者需要重新登陸等。2.會話標識是應用層的資訊,那麼負載均衡器要將同乙...