如何通過J2Cache實現分散式session儲存
做 Java Web 開發的人多數都會需要使用到 session (會話),我們使用 session 來儲存一些需要在兩個不同的請求之間共享資料。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它們會在記憶體中儲存 session 資料。這樣做會有兩個不足:
1.服務重啟後 session 資料丟失
2.應用做叢集部署的時候,不同的節點無法共享 session 資料
我們以使用比例最高的 Tomcat 為例,針對第二個問題 Tomcat 提供了叢集 session 複製的解決方案,詳情請看官方文件。看完文件你會發現 Tomcat 自帶的方法配置非常複雜,而且它沒有解決第一個問題 —— 服務重啟導致 session 資料丟失的問題。
現在還有另外一種方案就是使用 memcached 或者是 redis 來儲存 session 資料,於是就有了這麼一些開源專案:
- https://www.oschina.net/p/tomcat-redis-session-manager
- https://www.oschina.net/p/redis-manager
- https://www.oschina.net/p/memcached-session-manager
這些開源專案使用和配置都比較簡單,而且對應用完全透明,只需要在 server.xml 中配置好 Manager 即可。例如:
但是這幾個開源專案都有一個最根本的問題沒法解決,當存放在 session 中的資料量比較大,而且讀取 session 資料非常頻繁時會導致 memcached 或者是 redis 吞吐量受頻寬限制使得效能變得非常差。逼迫你必須通過 memcached 或者 redis 的擴容和叢集來解決問題,大大的增加了硬體投入的成本和運維的成本。
——–
那麼用 J2Cache 的 session-manager 模組就可以有效解決前面提到的所有問題。J2Cache 在 redis 的基礎上引入了記憶體快取的概念,可以確保服務重啟後 session 資料不會丟失,其次極大的降低了 redis 的資料吞吐量,保證在高併發情況下依然有很好的效能表現。
與前面提到的幾個開源專案不同,J2Cache 的 session manager 採用 Filter 方式實現,支援各種 Java 的 Web 容器服務。
使用方法:
1. Web 專案新增 J2Cache 的 session-manager 模組依賴:
2. 在 web.xml 中配置 Filter:
3. 啟動應用,即可開啟分散式 session 儲存。
當重啟 Web 應用時,記憶體中的 session 資料為空,會自動從 redis 中讀取重啟前儲存的 session 資料。所有節點又通過 redis 進行 session 資料的共享,當有 session 資料更新時會通過 Redis Pub/Sub 來通知其他節點重新從 Redis 中讀取資料,確保不同節點的 session 資料是一致的。
本文來自雲棲社群合作伙伴“開源中國”
本文作者:王練
相關文章
- vertica 如何實現儲存過程?儲存過程
- 通過redis實現session共享RedisSession
- 分散式系統Session 實現方式分散式Session
- python如何分散式儲存檔案?Python分散式
- HDFS分散式儲存分散式
- Redis 分散式儲存Redis分散式
- Filecoin分散式儲存,能否實現區塊鏈3.0時代?分散式區塊鏈
- 許可權處理 - 用redis實現分散式session~ (cookie && session )Redis分散式SessionCookie
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- 儲存過程與儲存函式儲存過程儲存函式
- Hive 如何方便地實現儲存過程?Hive儲存過程
- 分散式儲存系統可靠性如何估算?分散式
- 分散式儲存轉崗記分散式
- Gartner:浪潮儲存進入分散式儲存前三分散式
- 哪些企業需要分散式式儲存?分散式
- MySQL的物理儲存結構和session過程MySqlSession
- 分散式系統中資料儲存方案實踐分散式
- 分散式日誌儲存架構程式碼實踐分散式架構
- 分散式儲存glusterfs詳解【轉】分散式
- GlusterFS企業分散式儲存【轉】分散式
- 什麼是HDFS 分散式儲存分散式
- 實時流處理與分散式儲存過程中對檔案的操作分散式儲存過程
- EMQ X 與 HStreamDB 整合實踐:通過規則引擎實現資料儲存MQ
- CEPH分散式儲存搭建(物件、塊、檔案三大儲存)分散式物件
- SpringSession系列-分散式 session 實現方案及 SpringSession 功能分析SpringGseSession分散式
- 如何藉助分散式儲存 JuiceFS 加速 AI 模型訓練分散式UIAI模型
- 區塊鏈資訊儲存是如何實現安全儲存區塊鏈
- Redis如何實現分散式鎖Redis分散式
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- 分散式系統中的資料儲存方案實踐分散式
- 【融雲分析】從過剩儲存資源到分散式時序資料庫的長儲存分散式資料庫
- 杉巖分散式儲存解決方案分散式
- 004.MinIO-DirectPV分散式儲存部署分散式
- GlusterFS分散式儲存學習筆記分散式筆記
- Ceph分散式儲存技術解讀分散式
- Bayou複製分散式儲存系統分散式
- Etcd 使用場景:通過分散式鎖思路實現自動選主分散式