TDMQ 是腾讯云基于 Apache Pulsar 开源项目开发的消息队列产品,主打金融等行业应用,适用于对消息通讯要求高可靠、强一致的场景。TDMQ 在保障高可靠性的同时,还能保障消息读写的高吞吐量,而且提供丰富的消息类型,确保不同的业务场景都能有效覆盖。
产品亮点介绍
计算存储分离架构
TDMQ 基于计算存储分离架构实现,把 Broker 组件简化成只负责计算任务的无状态组件,而存储工作委托给基于 Apache BookKeeper 实现的 Bookie 组件。传统的消息队列中间件普遍由 Broker 组件同时负责处理消息生产消费请求以及落盘持久化两种操作,前者依赖 CPU运算能力,后者依赖磁盘 IO,难以达到两种资源的最大化利用。在云计算时代,可以看到像虚拟机支持挂载云硬盘,MapReduce 和 HDFS 解耦,以及 K8S 中对存储显式声明等应用了计算存储分离架构的案例,计算存储分离已经成为当代的架构最佳实践之一。
计算存储分离架构为 TDMQ 带来很大的产品优势,解决了传统消息队列架构在业务洪峰容易出现热点的问题,实现了生产和消费的极致高性能,而且支持计算和存储节点独立扩容,以下逐一说明。
分片机制解决热点问题
在以 Kafka 为代表的传统消息队列架构中,某一个 Topic (对应某种类型业务)会映射到一组固定的 Broker 点上,如果业务在某一个时间点出现流量高峰就会产生热点。这个时候如果通过扩容解决热点问题又需要进行繁琐的 rebalance 操作,因此在高并发场景下,传统消息队列架构下出现热点是一个难以克服的问题。
受益于 Broker 和 Bookie 的解耦,TDMQ Broker 在处理消息后,对分区的数据再次进行分片条带化写入,确保存储节点均衡利用从而避免热点的产生。
存储层读写分离保障性能
TDMQ 能够高效支持百万级消息生产消费以及海量消息堆积,单集群 QPS 超过10万,同时在时耗方面有保护机制来保证低延迟,帮助您轻松满足业务性能需求。底层的实现受益于消息落盘读写分离的设计,充分利用服务器多块磁盘,并避免高并发场景下读写操作相互阻塞。
详细展开一个消息的落盘过程可分成以下阶段:
- 同步写入 Journal 队列
- 以 Write Ahead Log 形式批量写入 Journal 磁盘
- 将写入成功的条目存储到内存 memtable
- 返回消息写入成功(此时只是 WAL 写入完成,落盘工作并未全部完成)
- 消息从内存异步持久化到 Ledger 磁盘,完成落盘操作
- 写入索引文件,用作提升查询 Ledger 磁盘的性能
持久化设计的优势在于,保障高速生产消费的同时还能避免生产(写)和消费(读)操作相互阻塞:
- 写操作和读操作依赖不同的磁盘,确保 IO 压力可被分摊
- 写请求落盘 Journal 磁盘后返回,不需要等待 Ledger 磁盘的写入,确保生产的吞吐量
- 近期消息的读取可从内存 memtable 快速返回,不依赖磁盘
- 远期消息的读取通过索引文件,相对快速从 Ledger 磁盘查询返回
计算存储节点独立扩容
TDMQ 的计算和存储节点可以独立扩容,有效提升资源的利用率和降低硬件成本。比如有大量的生产者和消费者对计算性能要求很高的场景,可以按需添加 Broker 节点。如有大量消息堆积,存储不足时,只需添加新的 Bookie 存储节点即可。
两种节点的扩容的操作也是非常的便捷。由于 TDMQ Broker 是无状态的,因此直接增加新的节点即可分摊集群压力,而 TDMQ Bookie 节点的负载由 Broker 的分片机制控制,因此新增的 Bookie 节点会分摊原有节点的负载,不需要额外的手动操作。
针对高可靠业务场景
的强大产品能力
多副本强一致
TDMQ 采用 Apache BookKeeper 一致性协议实现多副本强一致性,每个消息数据都会同步写到不同后端节点上。当节点出故障时,后台数据复制机制能够对数据快速迁移,保证用户数据备份可用。
标准且灵活的高可用方案
TDMQ 在腾讯内外都有丰厚的客户基础,已沉淀出标准成熟的双可用区, 双可用区 仲裁,三可用区的高可用部署和容灾方案,同时产品层面支持总副本数,同步写入副本数,跨 AZ 写入副本数等参数可配置能力,能根据客户的机房条件和业务需求采用不同配置方案,实现既标准且灵活的高可用容灾能力。
丰富的消息类型
TDMQ 支持顺序消息,延迟消息,定时消息,事务消息和消息广播等多种丰富的消息类型,支持可灵活配置的自动重试机制和死信队列机制,充分满足复杂的业务场景。
精细化的运维能力
消息轨迹
TDMQ 消息轨迹能为用户记录消息从生产端到 TDMQ 服务端,最后到消费端的整个过程。
消息队列的使用过程涉及生产者,队列服务和消费者三方,而且大多数场景是异步操作,定位问题比较困难。在生产端消息由哪个 IP 发送?是否发送成功?在服务端消息是否已持久化?在消费端消息被哪个消费者消费了?是否消费成功?具体什么时候消费?通过 TDMQ 消息轨迹能力,定位消息生产消费问题需要的信息一览无遗。
安全&信创合规
TDMQ 与腾讯云专有云平台深度集成,支持后端组件日志统一管理,监控指可视化,自定义告警,操作可追溯,管控 API 开放集成等运维能力,满足国家等保3级要求。除此以外,TDMQ 还可以在 X86/ARM 芯片架构,国际和国内的主流操作系统下正常运行,支持 "一云多芯" 混部模式,满足信创项目的要求。
案例分享
腾讯计费平台千亿级别流水大盘
某电商客户秒杀场景
电商场景的特价、秒杀等活动,可以在业务处理上利用消息队列做服务分级,优先处理资金、库存的计算,对于积分、活动回馈、消息通知等可以转移至 TDMQ 的队列中做缓冲处理。
开源回馈
腾讯非常重视开源的生态建设,也期望自身产品演进对开源有促进的作用。目前腾讯和 Pulsar 社区有着非常密切的合作,TDMQ 的核心研发人员中有多位 Pulsar 的委员会成员,持续为开源社区贡献代码。
最后,欢迎对消息队列 TDMQ 感兴趣的开发者联系,我们将竭尽全力为您的业务系统保驾护航!