腾讯开源万亿级分布式消息中间件TubeMQ

2019 年 9 月 16 日

腾讯开源万亿级分布式消息中间件TubeMQ

TubeMQ是腾讯在 2013 年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,经过近 7 年上万亿的海量数据沉淀,目前日均接入量超过 25 万亿条。较之其它开源 MQ 组件,TubeMQ 的优势在海量实践(稳定性+性能)和低成本方面。9 月 12 日,腾讯在 ApacheCon 宣布 TubeMQ 开源。


TubeMQ 系统特点:


  1. 纯Java实现语言


Tube MQ 采用纯 Java 语言开发,便于开发人员快速熟悉项目及问题处理;


  1. 引入Master协调节点


相比 Kafka 依赖于 Zookeeper 完成元数据的管理和实现 HA 保障不同,Tube MQ 系统采用的是自管理的元数据仲裁机制方式进行,Master 节点通过采用内嵌数据库 BDB 完成集群内元数据的存储、更新以及 HA 热切功能,负责 Tube MQ 集群的运行管控和配置管理操作,对外提供接口等;通过 Master 节点,Tube MQ 集群里的 Broker 配置设置、变更及查询实现了完整的自动化闭环管理,减轻了系统维护的复杂度;


  1. 服务器侧消费负载均衡


Tube MQ 采用的是服务侧负载均衡的方案,而不是客户端侧操作,提升系统的管控能力同时简化客户端实现,更便于均衡算法升级;


  1. 系统行级锁操作


对于 Broker 消息读写中存在中间状态的并发操作采用行级锁,避免重复问题;


  1. Offset管理调整


Offset 由各个 Broker 独自管理,ZK 只作数据持久化存储用(最初考虑完全去掉 ZK 依赖,考虑到后续的功能扩展就暂时保留);


  1. 消息读取机制的改进


Tube MQ 采用的是消息随机读取模式,同时为了降低消息时延又增加了内存缓存读写,对于带 SSD 设备的机器,增加消息滞后转 SSD 消费的处理,解决消费严重滞后时吞吐量下降以及 SSD 磁盘容量小、刷盘次数有限的问题,使其满足业务快速生产消费的需求;


  1. 消费者行为管控


支持通过策略实时动态地控制系统接入的消费者行为,包括系统负载高时对特定业务的限流、暂停消费,动态调整数据拉取的频率等;


  1. 服务分级管控


针对系统运维、业务特点、机器负载状态的不同需求,系统支持运维通过策略来动态控制不同消费者的消费行为,比如是否有权限消费、消费时延分级保证、消费限流控制,以及数据拉取频率控制等;


  1. 系统安全管控


根据业务不同的数据服务需要,以及系统运维安全的考虑,Tube MQ 系统增加了 TLS 传输层加密管道,生产和消费服务的认证、授权,以及针对分布式访问控制的访问令牌管理,满足业务和系统运维在系统安全方面的需求;


  1. 资源利用率提升改进


相比于 Kafka,Tube MQ 采用连接复用模式,减少连接资源消耗;通过逻辑分区构造,减少系统对文件句柄数的占用,通过服务器端过滤模式,减少网络带宽资源使用率;通过剥离对 Zookeeper 的使用,减少 Zookeeper 的强依赖及瓶颈限制;


  1. 客户端改进


基于业务使用上的便利性以,我们简化了客户端逻辑,使其做到最小的功能集合,我们采用基于响应消息的接收质量统计算法来自动剔出坏的 Broker 节点,基于首次使用时作连接尝试来避免大数据量发送时发送受阻。


Github 开源地址


https://github.com/Tencent/TubeMQ


TubeMQ 国内镜像地址:https://git.code.tencent.com/Tencent_Open_Source/TubeMQ


原文链接


https://mp.weixin.qq.com/s/HfZaqvfGLc7xH8wsjP341Q


2019 年 9 月 16 日 11:464579
用户头像
Tina InfoQ高级编辑

发布了 356 篇内容, 共 186.7 次阅读, 收获喜欢 853 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营 - 第七周作业

一个节点

极客大学架构师训练营

第三周作业

孤星

架构师训练营第 1 期第七周作业

Leo乐

极客大学架构师训练营

架构师训练营第 1 期第七周总结

Leo乐

极客大学架构师训练营

第三章学习笔记

博博

第三章课后作业

博博

设计模式

小黄鱼

极客大学架构师训练营

架构师训练营—第七周学习总结

Geek_shu1988

极客大学架构师训练营

7.7 第七周课后练习

张荣召

Week3总结

lggl

作业

把打胜仗的决心作为信仰

吴晨曦

创业

Week3小结

幸福小子

设计模式

架构师训练营第七周课程笔记及心得

Airs

架构师训练营第三周作业

Sandman

第三章总结

孤星

架构师训练营—第七周作业

Geek_shu1988

性能优化一第七周作业「架构师训练营第 1 期」

天天向善

架构师训练营第 1 期 -第七周作业

睁眼看世界

极客大学架构师训练营

第七周作业

icydolphin

极客大学架构师训练营

Navicat无法连接MySQL怎么办?

MySQL从删库到跑路

MySQL navicat 3306端口

Week3作业一

幸福小子

单例模式

架构一期第七周作业

Airs

性能测试中并发量与响应时间和吞吐量的关系

天天向上

极客大学架构师训练营

week07作业

追风

架构师一期

第七周作业总结

Geek_ce484f

极客大学架构师训练营

架构师训练营第七周学习总结

Gosling

极客大学架构师训练营

查理·芒格商业投资原则检查清单

Z

投资 商业 原则 清单

架构师训练营 - 第七周总结

一个节点

极客大学架构师训练营

架构课第三周学习总结

路路

极客大学架构师训练营

架构课第三周作业

路路

极客大学架构师训练营

第七周作业

Geek_ce484f

极客大学架构师训练营

腾讯开源万亿级分布式消息中间件TubeMQ-InfoQ