騰訊萬億級分散式消息中間件TubeMQ正式開源
- 2019 年 10 月 4 日
- 筆記

TubeMQ是騰訊在2013年自研的分散式消息中間件系統,專註服務大數據場景下海量數據的高性能存儲和傳輸,經過近7年上萬億的海量數據沉澱,目前日均接入量超過25萬億條。較之於眾多明星的開源MQ組件,TubeMQ在海量實踐(穩定性+性能)和低成本方面有著比較好的核心優勢。
TubeMQ 捐贈 Apache 基金會
9月12日,Apache軟體基金會成立20周年之際,騰訊在ApacheCon宣布TubeMQ 開源。TubeMQ 啟動計劃捐贈 Apache 基金會的流程。


TubeMQ系統特點
1. 純Java實現語言
Tube MQ採用純Java語言開發,便於開發人員快速熟悉項目及問題處理;
2. 引入Master協調節點
相比Kafka依賴於Zookeeper完成元數據的管理和實現HA保障不同,Tube MQ系統採用的是自管理的元數據仲裁機制方式進行,Master節點通過採用內嵌資料庫BDB完成集群內元數據的存儲、更新以及HA熱切功能,負責Tube MQ集群的運行管控和配置管理操作,對外提供介面等;通過Master節點,Tube MQ集群里的Broker配置設置、變更及查詢實現了完整的自動化閉環管理,減輕了系統維護的複雜度;
3. 伺服器側消費負載均衡
Tube MQ採用的是服務側負載均衡的方案,而不是客戶端側操作,提升系統的管控能力同時簡化客戶端實現,更便於均衡演算法升級;
4. 系統行級鎖操作
對於Broker消息讀寫中存在中間狀態的並發操作採用行級鎖,避免重複問題;
5. Offset管理調整
Offset由各個Broker獨自管理,ZK只作數據持久化存儲用(最初考慮完全去掉ZK依賴,考慮到後續的功能擴展就暫時保留);
6. 消息讀取機制的改進
Tube MQ採用的是消息隨機讀取模式,同時為了降低消息時延又增加了記憶體快取讀寫,對於帶SSD設備的機器,增加消息滯後轉SSD消費的處理,解決消費嚴重滯後時吞吐量下降以及SSD磁碟容量小、刷盤次數有限的問題,使其滿足業務快速生產消費的需求;
7. 消費者行為管控
支援通過策略實時動態地控制系統接入的消費者行為,包括系統負載高時對特定業務的限流、暫停消費,動態調整數據拉取的頻率等;
8. 服務分級管控
針對系統運維、業務特點、機器負載狀態的不同需求,系統支援運維通過策略來動態控制不同消費者的消費行為,比如是否有許可權消費、消費時延分級保證、消費限流控制,以及數據拉取頻率控制等;
9. 系統安全管控
根據業務不同的數據服務需要,以及系統運維安全的考慮,Tube MQ系統增加了TLS傳輸層加密管道,生產和消費服務的認證、授權,以及針對分散式訪問控制的訪問令牌管理,滿足業務和系統運維在系統安全方面的需求;
10. 資源利用率提升改進
相比於Kafka,Tube MQ採用連接復用模式,減少連接資源消耗;通過邏輯分區構造,減少系統對文件句柄數的佔用,通過伺服器端過濾模式,減少網路頻寬資源使用率;通過剝離對Zookeeper的使用,減少Zookeeper的強依賴及瓶頸限制;
11. 客戶端改進
基於業務使用上的便利性以,我們簡化了客戶端邏輯,使其做到最小的功能集合,我們採用基於響應消息的接收品質統計演算法來自動剔出壞的Broker節點,基於首次使用時作連接嘗試來避免大數據量發送時發送受阻。
歡迎開源協同
我們熱烈歡迎大家參與到TubeMQ及項目各個模組的開源協同中來,如果在使用TubeMQ項目時遇到了問題,或者對改進TubeMQ項目有一個想法,歡迎提出你的issue!
TubeMQ 正式開源
Github 開源地址:
https://github.com/Tencent/TubeMQ
(點擊文末閱讀原文直接訪問)
請給 TubeMQ 一個 Star !
歡迎提出你的 issue 和 PR!
TubeMQ 中國鏡像地址:https://git.code.tencent.com/Tencent_Open_Source/TubeMQ
(登錄後才能訪問公開項目)

騰訊工蜂源碼系統為開源開發者提供完整、最新的騰訊開源項目中國鏡像
