使用RabbitMQ使得Tomcat Sessions 變得更加雲化
Clustering Cloud-friendly Tomcat Sessions with RabbitMQ: Part I | TomcatExpert
雲架構的流行,使得水平伸縮成為王者( horizontal scalability is king),而傳統的Tomcat叢集是透過廣播叢集,也就是讓一臺機器上的Session廣播到其他機器上,這樣的壞處就是大量Session中資料在伺服器之間不停被複制複製,增加伺服器負擔,伺服器越多,複製越厲害,Tomcat的伺服器也就不能無限任意增加,水平伸縮很差。
該文作者透過引入RabbitMQ訊息系統,用來控制tomcat的Session無限複製,也就是設計一種Session管理器:使得任何一個使用者請求都可以被隨機分配到任何一臺tomcat伺服器上。
作者對Session管理器要求是:
1.輕量,Terracotta雖然號稱可以幫助session複製,可惜重量。作者沒有選擇。
2.Reliable 可靠
3.Scalable 可伸縮
4.No single point of failure 無單點風險
5.Asynchronous (for speed and efficiency) 非同步
6.Easy to configure易於配置
7.Zero (or nearly so) maintenance 零維護。
Session管理器的工作原理如下:當一個tomcat伺服器被要求載入使用者的session, 它首先將session的ID傳到雲端儲存中CloudStore(使用 Redis 或其他 NoSQL 資料庫), 檢查內部的session ID列表. 如果發現存在這個ID, 就知道這是一個已經啟用的session,然後檢查內部Map看看其是否已經存在當前伺服器本地了,如果沒有,發出"load"訊息給相應佇列queue. 當前使用者請求的執行緒就堵塞等待Session在本地載入複製。
雲架構的流行,使得水平伸縮成為王者( horizontal scalability is king),而傳統的Tomcat叢集是透過廣播叢集,也就是讓一臺機器上的Session廣播到其他機器上,這樣的壞處就是大量Session中資料在伺服器之間不停被複制複製,增加伺服器負擔,伺服器越多,複製越厲害,Tomcat的伺服器也就不能無限任意增加,水平伸縮很差。
該文作者透過引入RabbitMQ訊息系統,用來控制tomcat的Session無限複製,也就是設計一種Session管理器:使得任何一個使用者請求都可以被隨機分配到任何一臺tomcat伺服器上。
作者對Session管理器要求是:
1.輕量,Terracotta雖然號稱可以幫助session複製,可惜重量。作者沒有選擇。
2.Reliable 可靠
3.Scalable 可伸縮
4.No single point of failure 無單點風險
5.Asynchronous (for speed and efficiency) 非同步
6.Easy to configure易於配置
7.Zero (or nearly so) maintenance 零維護。
Session管理器的工作原理如下:當一個tomcat伺服器被要求載入使用者的session, 它首先將session的ID傳到雲端儲存中CloudStore(使用 Redis 或其他 NoSQL 資料庫), 檢查內部的session ID列表. 如果發現存在這個ID, 就知道這是一個已經啟用的session,然後檢查內部Map看看其是否已經存在當前伺服器本地了,如果沒有,發出"load"訊息給相應佇列queue. 當前使用者請求的執行緒就堵塞等待Session在本地載入複製。
[該貼被banq於2010-06-22 10:55修改過]
相關文章
- 讓你工作變得更加有趣
- Lombok - 使用註解讓你的JavaBean變得更加簡潔LombokJavaBean
- 職場真言——讓你變得更加“專業”薦
- SmartRules讓MindManager的互動圖變得更加智慧
- 新的 Docker 資料中心管理套件使容器化變得更加井然有序Docker套件
- 想讓你的程式碼變得更加優雅嗎?
- 如何讓遊戲世界變得更加真實?“自由”就夠了遊戲
- SellCell:晶片短缺讓iPhone 13系列智慧機變得更加保值晶片iPhone
- centos/linux下的使得maven/tomcat能在普通使用者是使用CentOSLinuxMavenTomcat
- ColorOS11安卓系統:在不斷升級最佳化中變得更加優秀ROS安卓
- 使Mybatis開發變得更加輕鬆的增強工具 — OurbatisMyBatis
- 智慧公廁,讓廁所變得更加環保、節能、智慧
- “沉浸式互動”讓遊戲變得更加迷人,玩家能更深層次的獲得快感遊戲
- 為什麼Web前端變的越來越複雜,變得更加難學了Web前端
- 分享5款讓生活和工作變得更加高效的軟體
- 配置tomcat,使得一臺主機執行多個tomcat容器Tomcat
- 自動駕駛如何變得更加安全?區塊鏈可能成為關鍵自動駕駛區塊鏈
- 先利其器 讓江民防毒軟體變得更加實用(轉)防毒
- 資料科學家已死?AutoML使得資料科學更加普及化 - enterpriseai資料科學TOMLAI
- tomcat啟動:Exception loading sessions from persistent storageTomcatExceptionSession
- Ulysses for Mac(讓寫作變得更加簡單) v33免啟用版Mac
- 有了木匠機器人,傢俱製作將變得更加安全簡單機器人
- 是什麼樣的步驟,使得你的ios程式碼變得如此容易閱讀?大咖分享iOS
- Android安全防護之旅---幾行程式碼讓Android應用變得更加安全Android行程
- 白皮書釋出 | 看 NVIDIA BlueField DPU 如何讓資料中心變得更加環保
- windows8系統下如何修改開始介面背景讓桌面變得更加美麗Windows
- Kill SessionsSession
- 瞄準邊緣計算,K3S讓Kubernetes部署變得更加輕量化
- 無卡號+動態碼:Apple Card將使信用卡盜刷變得更加艱難APP
- 華納雲:如何實現tomcat自動化部署Tomcat
- [譯]為什麼在使用了類之後會使得組合變得愈發困難(軟體編寫)(第九部分)
- SESSIONS, PROCESSES, TRANSACTIONSSession
- Sessions & Processes parameterSession
- limit active sessionsMITSession
- 怎樣給檔案命名才能顯得更加專業
- Go Rabbitmq 使用GoMQ
- RabbitMQ基本使用MQ
- laravel rabbitmq 使用LaravelMQ