立即咨询

电话咨询

微信咨询

立即试用
商务合作

腾讯云消息队列TDMQ RabbitMQ版

腾讯云消息队列TDMQ RabbitMQ版,整合分布式消息队列服务与AMQP协议消息队列服务功能。支持跨系统异步通信、消息可靠投递及多场景协议适配,助力企业实现系统解耦与流量削峰,提升业务处理效率与架构稳定性。
立即咨询

 

 

icon腾讯云消息队列 TDMQ 产品系列介绍icon

消息队列 TDMQ 是什么?

分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性

提供丰富的产品形态,兼容社区主流协议,覆盖在线和离线场景,服务端和客户端场景,满足互联网、金融、教育、出行、交通等不同行业和场景的需求

业界趋势:
从2007年 RabbitMQ 开源以来,社区形成了Kafka、RocketMQ、RabbitMQ、Pulsar 为首的4大主流协议,每个产品有各自的特性、生态和适用场景
TDMQ 产品矩阵:
聚焦社区主流协议,开源兼容
覆盖在线 + 离线场景,服务端 + 客户端场景,提供丰富的产品形态

 

icon互联网高并发场景的普及icon
用户注册与异步处理
在电商领域,用户注册时,RabbitMQ 将发送邮件、短信等次要业务异步处理,核心业务快速响应,提升用户体验
某电商企业通过RabbitMQ解耦业务,系统响应时间缩短30%,注册成功率提升至99%以上
秒杀系统
秒杀场景下,RabbitMQ 缓冲高并发请求,避免后端数据库过载,同时异步通知用户抢购结果,保障系统稳定
某金融平台在秒杀活动中,利用 RabbitMQ 削峰,系统吞吐量提升5倍,未出现宕机情况
互联网社交
社交平台利用RabbitMQ实现消息推送、好友动态更新等异步操作,提升系统性能与用户体验
某社交应用借助RabbitMQ,消息推送延迟降低40%,用户活跃度提升20%

 

 

 

icon企业基于社区版自建 Pulsar 面临的挑战icon

RabbitMQ 是典型的易上手、难精通的产品,如果没有资深的运维团队,很容易踩坑

日益加重的研发和运维成本

01
集群维护的运维人员需要具备扎实的计算机功底(熟悉计算机网络、IO等)
02
对 RabbitMQ 的底层原理、各种配置参数项具有深刻理解
可以对服务端和客户端代码调优,规避常见问题
03
解决问题的研发人员,需要具备专业的经验和知识积累
内核层面的问题,具备排查定位修复能力
容灾层面,构建高可用解决方案
04
监控告警等运维基础设施,需要投入更多的人力、物力成本
需要时刻监控集群的健康状况,及时排除问题以保障业务的稳定运行

 

 

icon腾讯云 RabbitMQ:开箱即用的消息队列服务icon
01
消息队列 TDMQ RabbitMQ 版(TDMQ for RabbitMQ,简称 TDMQ RabbitMQ 版)是一款腾讯自主研发的消息队列服务,支持 AMQP 0-9-1 协议,完全兼容开源 RabbitMQ 的各个组件与概念,具有稳定、安全、灵活扩缩容等优势
02
TDMQ RabbitMQ 版拥有极为灵活的路由来适应各类业务的消息投递规则,能有缓冲上游流量压力的能力,保证消息系统的稳定运行
常用于系统间的异步通信和服务解耦,减轻不同服务之间的依赖,广泛应用于金融,政务、零售、物联网、社交等行业的分布式系统中
开箱即用
开源版无缝迁移,0代码修改
多种规格选择,一键部署
可根据业务需求自动化扩容,无需额外关注底层资源
常用插件管理
可观测性
监控指标,集群、节点、vHost、exchange、queue 等不同维度
消息查询,及时分析和定位问题
智能巡检,主动排查集群问题和隐患
高可用高可靠
支持多可用区部署,抵御机房级故障
默认开启镜像队列,提升数据可靠性
支持队列持久化
多场景适配
灵活路由,多种路由方式,支持自定义交换机组合
支持普通消息、广播消息、死信、延迟等特性

RabbitMQ是比较早期的开源消息队列产品,自建客户群体较大,广泛用于秒杀、流控、系统解耦场景,单机QPS在万级别

 

 

iconRabbitMQ 产品形态icon
简单的计费项
必选:计算 + 存储
可选:公网带宽
在购买集群时可按需选择节点规格和节点数
灵活细分的版本和规格
托管版+serverless版,更全面的规格,适用不同规模业务场景

 

 

 

icon【1.1 开箱即用】分钟级一键创建集群,按需选择规格信息icon

 

 

 

icon【1.2 开箱即用】根据业务需求平滑扩容icon

1. 选择升配后的变更配置类型、节点规格、节点数、部署方式

2. 选择变配时间

 

 

icon【2.1 可观测性】清晰全面的集群信息管理界面icon

查看集群信息

【集群列表】

基本信息

筛选操作

全面监控管理

【Vhost列表】

基本信息

筛选操作

Exchange、Queue和路由关系绑定管理

 

 

 

icon【2.2 可观测性】完善的监控指标,告警规则最佳实践icon
完善的监控指标
【集群】:基本信息:连接、通道、队列、消费者;堆积消息、公网出入带宽
生产消费:生产确认率、生产消息tps;消息未确认数量;消费确认速率;重投递速率;消息丢弃率
【节点】:CPU、内存、磁盘利用率
【Vhost】:生产消费
【Queue】:生产消费
【Exchange】:生产消费
告警规则最佳实践
【必须】CPU,内存,磁盘利用率
【必须】堆积消息数,未确认消息数量,重投递速率,消息丢弃速率
【建议】连接数量,通道数量,队列数量,消费者数量,生产速率,消费速率
 

 

 

icon【3.1 智能巡检】自动化运维,极致排障体验icon
 
 
查看巡检结果
高中低风险,展示集群健康状况和结论
 
查看巡检报告
详细巡检报告,包括巡检时间、资源ID、巡检结论、巡检项说明、详细巡检结果

 

 

icon【4.1 插件管理】灵活插件管控icon

在集群管理下的集群详情页顶部,选择插件管理页签,进入插件管理页面

 

 

 

icon【5.1 开源管控】提供社区管控体验icon

直通RabbitMQ社区

控制台直通RabbitMQ社区版

输入用户名及密钥即可访问

 

 

 

icon【6.1】消息查询icon

1.  开启 trace 插件

2. 指定集群->VHost->Queue,也可进一步指定 Routing Key、用户、信息的headers 和 body,进一步缩小查询范围

3. 查看消息详情:元数据、消息体

 

 

 

icon【7.1】产品化迁移上云能力icon

1、开源rabbitMQ控制台,通过“Download broker definitions”导出 Vhost 的元数据

2、创建迁移任务,指定Vhost,导入JSON元数据文件

 

 

iconRabbitMQ 模型架构icon

Connection:生产者、消费者连接到RabbitMQ Broker的TCP连接

Channel:建立在Connection之上的虚拟连接,RabbitMQ处理的每个AMQP命令都是通过channel完成的

Vhost:用作逻辑隔离,不同 Vhost 之间的 Exchange 和 Queue 相互隔离,互不干扰

Exchange(X):接收来自生产者的消息并将消息路由到 Queue 的组件

Queue:存储消息的缓冲区,供消费者消费消息

生产者(P):向Exchange发送消息

消费者(C):从Queue拉取消息进行消费

 

 

 

iconRabbitMQ 的架构演进总结icon
总结
架构从「队列模型」往「日志模型」过渡演进
目前 Quorum 在业界案例不多,不推荐核心业务场景使用
RabbitMQ 社区不在国内运营,Erlang语言小众,国内新特性跟进慢
版本演进历史:
3.0 引入CQv1,实现了当前架构,兼容AMQP 0.9
3.1 引入镜像队列,支持多副本,开始广泛流行
3.6 引入定时消息插件,优化多副本批量同步机制
3.8 引入Quorum Queue特性,作为实验特性
3.9 引入Stream  支持流计算,独立特行和Kafka竞争
3.10 引入CQv2,重构存储模型,优化小消息写入性能
3.11 推荐生产使用 Quorum Queue用于生产
3.12 继续完善 Quorum Queue,原生支持MQTT插件
3.13 支持MQTT 5.0 ,完善Stream Filter,完全切换到CQv2
4.x 计划移除镜像队列特性,全部基于Quorum Queue实现业务特性  
 
 
 
 
 
 

 

 

icon镜像队列与容灾部署架构,两种容灾模式可选icon

可以选择两种集群部署模式,均可以支持对单可用区容灾,rabbitmq 镜像队列不像 ZK 一样强一致,只要保证有一个副本就可以提供读写服务,并且保证有一个可用区故障时,不会导致数据丢失

 

 

 

icon网络分区与恢复手段icon
网络分区定义:
同一个集群的节点网络不通,就会认为其他节点已关闭,选择自己为主节点提供读写服务,当网络恢复后,就会出现无法决定谁是主节点的问题,俗称“脑裂”。
网络分区恢复手段:
集群默认的恢复手段为 ignore 模式,必须人为判断选主,并重启从节点,重新加入到集群中才能恢复正常服务
腾讯云默认集群只能奇数节点,生产集群建议至少三个节点,并且配置为 autoheal 模式,当出现脑裂时,可以根据节点数和连接数,自动选择出新的主节点,自动解决网络分区问题

 

icon其他可靠性&可恢复性的控制参数icon

元数据&消息持久化: durable queue? persistent message? lazy queue?

队列选主机制: HA mirror promotion on failure?on shutdown?when-synced?  always?

副本同步机制:HA mode?HA params?HA sync mode?all?exactly?automatic?manual?

消息确认机制:Producer Confirm?Consumer Confirm?DeliveryMode? 队列类型:Classic? Quorum ? Stream?  

 

 

 

iconRabbitMQ 的运维难点——开源&黑盒&腾讯云解决之道icon
运维难点
RabbitMQ Erlang 语言小众,国内学习者少 RabbitMQ 社区不在国内运营,国内高阶人才少 RabbitMQ 社区参数多,文档简略,难理解
腾讯云解决之道
腾讯云MQ研发团队专门研习 RabbitMQ 内核源码 并做分享
腾讯云MQ测试团队针对每个参数做故障演练并出具报告
腾讯云MQ测试团队针对每个规格出具详细性能测试报告
腾讯云对接混沌平台,用户可以主动对集群进行故障演练
提供一键压测功能,用户可以贴合自己业务场景做性能压测,并出具标准性能压测报告
开源优势
RabbitMQ 入门简单,部署成本低
RabbitMQ 生态完善,被集成场景
AMQP 协议成熟,多语言SDK丰富多

 

 

iconRabbitMQ 客户端和服务端最佳实践icon
客户端最佳实践:
发送方设置合理的发送超时时间(默认580S 或 30S)
发送者和消费者拆分单独的物理连接
不要频繁创建和关闭连接,尽可能复用
设置合理的连接超时时间和连接自动恢复
设置合理心跳时间,自动剔除无效连接(建议10~30S)
消费方代码设置合理的异常处理策略,否则会导致无限重试
消费方设置合理的并发线程数,默认是1,建议范围(3~20)
消费方设置合理的prefetch个数,默认是1,建议范围(3~10)
消费方控制unack数量,占用内存和性能下降严重(建议不要超过10000)
服务端最佳实践:
合理控制单机群规模,按业务和场景合理拆分
控制单个集群的队列数和连接数
副本数控制在3个以内,否则性能快速下降
及时消费,队列消息不要堆积太多消息(ttl 或queue limit)
控制unack数量,占用内存和数据下降严重
发送者和消费者拆分单独的物理连接
不要频繁创建和关闭连接,尽可能复用
合理规划Policy,避免参数误用
仅开启必要的插件,谨慎使用高阶特性,比如定时消息,优先级队列,持久队列等
定时消息不要集中到某一时间点触发,否则会占用大量内存导致OOM

 

 

icon腾讯云全面调优和专家经验沉淀icon

RabbitMQ是典型的易上手,难精通的产品,如果没有资深的运维团队,很容易踩坑 腾讯云在RabbitMQ经过多年众多客户核心场景的打磨和锤炼,沉淀了大量的运维和优化经验

操作系统层面
优化10+操作系统默认参数,避免默认参数限流和,网络抖动性能差等问题
网络层面
优化网络心跳,长连接,buffer大小等参数,避免网络连接泄漏和毛刺等问题
Broker调优
默认开启镜像队列,智能巡检累计沉淀17+规则(不断完善中),帮客户主动发现问题
客户代码调优
主动巡检和推荐报警规则模版和专家咨询服务,帮客户调优代码问题

 

 

iconRabbitMQ 应用场景icon
 
电商秒杀
通过 RabbitMQ 实现异步解耦,用户购买的消息可以同时被下游的库存、订单、支付等多个系统消费,解决系统间的强耦合问题
用户下单时,将所有订单放入队列,下单模块依据自身的处理速度,从队列中获取订单进行“下单扣库存”操作,确保系统不会在高并发场景下崩溃,并允许我们异步处理购买请求
此外,RabbitMQ 的优先级队列功能为 VIP 用户提供优先处理权,更好地用于限量商品的抢单场景
金融交易累
RabbitMQ 可以用于处理交易请求、实时市场数据推送和金融报告生成等。例如,当用户发起交易请求时,我们可以将请求发送到RabbitMQ 队列中,然后由后台工作进程进行处理。这样可以确保交易请求得到及时处理,同时避免系统在高并发场景下崩溃
我们还可以将实时市场数据推送到 RabbitMQ,然后将其路由到所有订阅该数据的客户端
 
社交娱乐
RabbitMQ 可以用于实现实时消息推送、事件通知和异步任务处理。例如,当用户发送聊天消息时,我们可以将消息发送到 RabbitMQ,然后将其路由到所有订阅该聊天室的用户
我们还可以将一些耗时任务(如图像处理、通知推送等)发送到RabbitMQ 队列中,以便后台工作进程进行处理
直播活动
RabbitMQ 可以用于实现实时消息推送、弹幕系统和礼物赠送等功能。例如,当用户发送弹幕消息时,我们可以将消息发送到 RabbitMQ,然后将其路由到所有观看直播的用户
我们还可以将礼物赠送请求发送到 RabbitMQ 队列中,以便后台工作进程进行处理,例如更新礼物榜单、通知主播等
游戏
在游戏应用中,RabbitMQ 可以用于实现实时游戏事件、多人协作和排行榜更新等功能。例如,当游戏中发生实时事件(如玩家移动、战斗等)时,我们可以将事件发送到RabbitMQ,然后将其路由到所有参与游戏的玩家
我们还可以将排行榜更新请求发送到RabbitMQ队列中,以便后台工作进程进行处理

 

icon应用场景1:秒杀场景icon

秒杀,是电商系统中一个非常常见的场景。解决方案比较多。使用RabbitMQ是一个比较好的做法

如果是复杂的扣减库存(如涉及商品信息本身或牵连其他系统),则建议使用数据库进行库存数量的扣减,可以使用异步的方式来应对这种高并发的库存更新

①在用户下单时,不立刻生成订单,而是将所有订单依次放入队列

②下单模块依据自身的处理速度,从队列中依次获取订单进行“下单扣库存”操作

③在订单生成成功后,用户即可进行支付操作了。 这种方式是针对“秒杀”场景的,依据“先到先得”原则来保证公平公正,所有用户都可以抢购,然后等待订单处理,最后生成订单(如果库存不足,则生成订单失败)

 

 

icon应用场景2:优先级消息icon

在消费消息时,如果消息的重要程度不同,重要性高的消息希望被优先消费,这时可以使用RabbitMQ优先级队列的能力,让优先级高的消息优先被消费

比如系统中有订单催付的场景,客户在商城下的订单,系统会及时将订单推送给客户。如果在设定的时间内未付款那么就会给客户推送一条短信提醒。商家会分大客户和小客户,比如大客户的订单催收消息需要优先处理,其他的小客户的催收相对优先级会低一些。使用RabbitMQ 的优先级队列可以很好的支持这个场景,让优先级高的消息不会积压太久。如果发现是大客户的订单给一个相对比较高的优先级,优先被处理;否则就是默认优先级

 

 

icon应用场景3:延迟消息场景icon

实际业务系统中,有发送延迟消息的需求。如果自己实现延迟逻辑,可靠性和延迟精度很难得到保障。使用消息中间件,如RabbitMQ可以很好的处理此类需求。延迟消息的使用场景有:

订单系统中,用户下单后有30分钟时间进行支付。如果30分钟内没有支付成功,那么这个订单将进行异常处理。这里可以使用RabbitMQ延迟消息能力来处理这些超时订单

物联网系统中,用户希望通过手机遥控智能设备在指定的时间工作,这时就可以将指令发到延迟队列,当指令设定的时间到了,再将控制指令推送到智能设备

 

 

icon应用场景4:消息广播icon

很多业务系统需要将信息广播给下游的系统。如果通过RPC的方式,耦合比较重,对上游业务系统的压力也比较大。此时,可以使用RabbitMQ的Fanout Exchange来处理此类需求。可以使用的场景:

大型多人在线游戏(MMO)可以将其用于排行榜更新或其他全局事件

体育新闻网站可以使用扇形交换机向客户端近乎实时的分发比分信息

分布式系统使用它来广播各种状态和配置更新

群聊可以使用它在参与者之间分发消息

 

 

 

icon应用场景5:灵活路由场景icon

随着微服务架构的流行,服务拆分得较细,服务的数据会以消息的形式,使用精心设计的分发策略发送到不同的队列中去。这时可以充分地利用RabbitMQ灵活的消息路由的能力,将消息分发到目标Queue中。可以使用的场景:

日志处理场景,可以将日志按类型投递到不同的Queue。比如Error单独一个处理队列,优先处理

电商物流系统的物流信息按地域分发给不同的消费端进行处理

复杂路由场景

 

 

 

icon迁移方案:双写双读模式icon
01
初始状态读写均在旧集群,新集群就绪,完成RabbitMQ的元数据迁移
02
上线新的消费端到新集群,开启双读模式
03
 上线新的生产端,将流量逐步灰度切换到新集群,开启双写双读模式
04
停掉旧集群生产流量,暂时保留旧集群消费端,进入到单写双读模式
05
等待旧集群上的数据消费完后,确认没有积压消息后再下线旧的消费服务,完成迁移过程

 

 

icon客户案例:垂类社交Top1 核心IM服务icon
项目背景
业务概述:
垂类Top1社交平台,为全球最大垂直社群提供包括在线交友、视频直播和健康在内的便捷和安全的服务
系统架构:
业务模块微服务化,RabbitMQ作为服务消息总线,承载服务间异步调用和即时消息通信,提升整体扩展性的同时,对RabbitMQ有较高要求
可用性,平台基础服务
时效性,消息堆积超时,服务将降级丢弃
稳定性,日均千万DAU,峰值集中在两个小时
解决方案
同城多可用区部署,保障99.99%高可用性
日均千万DAU,平稳支撑,零故障
 
 

 

 

icon客户案例:垂类金融Top1 核心金融服务icon
 
项目背景
业务概述:
为用户提供市场数据、财经资讯、投资社区、投资知识等服务;并通过集团旗下持牌券商,向客户提供港股、美股、A股通、新加坡股及澳股的股票交易和清算,融资融券,及财富管理等服务
系统架构:
核心业务,券商系统涉及交易、清结算、风控等多个服务模块,需要支持多种金融产品的交易,如股票、债券、期货、期权等。每种产品都有不同的交易规则和流程,包括下单、撮合、结算等,强依赖RabbitMQ 提供可靠的消息传递机制,将流程中服务解耦并异步处理
随着系统规模和复杂度的膨胀,对RabbitMQ管理提出挑战
集群数量庞大,运维管理成本高
实例规格多样,匹配资源难度大
可靠性、稳定性要求极高
解决方案
自建RabbitMQ集群迁移数量100+
满足金融级稳定性要求
 

 

 

 

产品推荐

耳目达系列产品套餐方案
耳目达系列产品,告别喂喂喂,会议不用喊。
免费试用
查看详情
合合信息制造业解决方案
合合信息制造业解决方案通过智能文字识别、图像处理、自然语言处理等技术,为制造企业提供从供应链管理、风险控制到数据分析的全方位服务。该方案旨在帮助企业优化生产流程、提高效率、降低成本,并实现数字化转型。通过启信宝等产品,企业能够进行精准的市场分析、供应商评估和风险预警,从而提升竞争力和市场响应速度。
免费试用
查看详情
ITC智慧图书馆解决方案
ITC智慧图书馆解决方案建立在信息化网络和服务器等硬件平台上,实现图书馆各项服务功能,包括应用软件和配套硬件设备。各个应用系统遵循一定的标准和规范,实现互相关联、功能互补、数据交换及共享, 提供智慧图书馆的数字化服务和应用;现如今人们更多关注的是图书馆内外信息交换、安全性、舒适性、 便利性和节能性等;itc专为图书馆提供整体的声光电视讯一站式解决方案。
免费试用
查看详情
数达安全数安卫士V5
数达安全数安卫士V5,面向中小型组织的所有数据库系统,用单台设备加全功能系统插件的方式满足数据安全防护与合规要求。提供数据资产分类分级、审计、访问控制、动态脱敏、数据外发水印与脱敏、数据存储加密和数据销毁等全生命周期的全面数据安全防护能力。
免费试用
查看详情