腾讯云消息队列 TDMQ(Tencent Distributed Message Queue,下文中简称TDMQ)是一款基于 Apache 顶级开源项目 Pulsar 自研的金融级分布式消息中间件。其计算与存储分离的架构设计,使得它具备极好的云原生和 Serverless 特性,用户按量使用,无需关心底层资源。它拥有原生 Java 、 C++、Python、GO 等多种 API,同时支持 kafka 协议以及 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。TDMQ 目前已应用在腾讯计费绝大部分场景,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。
TDMQ 的服务(Broker)和存储(Bookie)分离,整体架构采用云原生无状态设计,用户可以按量使用和按需扩展,体验更加 Serverless 化,用户对底层资源无感知。
高性能低延迟
TDMQ 能够高效支持百万级消息生产和消费,海量消息堆积且消息堆积容量不设上限,支撑了腾讯计费所有场景;性能方面,单集群 QPS 超过10万,同时在时耗方面有保护机制来保证低延迟,帮助您轻松满足业务性能需求。
百万级 Topic
TDMQ 计算与存储架构的分离设计,使得 TDMQ 可以轻松支持百万级消息主题。相比于市场上其他 MQ 产品,整个集群不会因为 Topic 数量增加而导致性能急剧下降。
丰富的消息类型
TDMQ 提供丰富的消息类型,涵盖普通消息、顺序消息(全局顺序 / 分区顺序)、分布式事务消息、定时消息,满足各种严苛场景下的高级特性需求。
消费者数量无限制
不同于 Kafka 的消息消费模式,TDMQ 的消费者数量不受限于 Topic 的分区个数,并且会按照一定的算法均衡每个消费者的消息量,业务可按需启动对应的消费者数量。
多协议接入
TDMQ API 支持 Java、C++、Go 等多语言以及HTTP 协议,可扩展更多语言的接入,还支持原生 Kafka API 协议的接入。用户利用消息队列的基础功能进行消息的生产和消费,无需修改代码即可完成到 TDMQ 迁移。
异步解耦
交易引擎作为腾讯计费最核心的系统,每笔交易订单数据需要被几十几个下游业务系统关注,包括物品批价、道具发货、积分、流计算分析等等,多个系统对消息的处理逻辑不一致,单个系统不可能去适配每一个关联业务。此时,TDMQ 可实现高效的异步通信和应用解耦,确保主站业务的连续性。
削峰填谷
企业不定时举办的一些营销活动,新品发布上线,节日抢红包等等,往往都会带来临时性的流量洪峰,这对后端的各个应用系统考验是十分巨大的,如果直接采用扩容方式应对又会带来一定的资源浪费。TDMQ 此时便可以承担一个缓冲器的角色,将上游突增的请求集中收集,下游可以根据自己的实际处理能力来消费请求消息。

顺序收发

分布式事务一致性
计费的交易链路通常比较长,出错或者超时的概率比较高,借助 TDMQ 的自动重推和海量堆积能力来实现事物补偿,以及支付 Tips 通知和交易流水推送可以通过 TDMQ 来实现最终一致性。
如果有多个数据中心存在,需要在多个数据中心之间消费,那么 TDMQ 可以非常方便实现数据中心之间的同步。