前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终于有人将TDMQ讲明白了

终于有人将TDMQ讲明白了

作者头像
腾讯专有云
发布2022-06-24 18:05:54
5.3K0
发布2022-06-24 18:05:54
举报
文章被收录于专栏:腾讯专有云

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 感兴趣的开发者联系,我们将竭尽全力为您的业务系统保驾护航!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯专有云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档