喜马拉雅 Apache RocketMQ 消息治理实践

本文涉及的产品
云原生网关 MSE Higress,422元/月
可观测监控 Prometheus 版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
简介: 本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑。

作者:曹融,来自喜马拉雅,从事微服务和消息相关中间件开发。

1.png

本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑。


业务背景现状以及遇到的问题


1、消息队列概况


(1)在线场景:RabbitMQ,实例数9个;


(2)离线场景:Kafka,8个集群;


2、遇到的问题


在线场景缺乏治理:


• 业务混用,相互干扰,非核心对接积压过多触发集群限流;


• 节点负载不均衡,资源浪费严重;


• 资源和应用无关联,消息积压;


• 业务混用,相互干扰,非核心对接积压过多触发集群限流;


在线MQ集群改造方案


1、选型


(1)业务便捷性:易于开发、使用、维护,提高效率,如自带重试、自带死信、自带事务保障;


(2)性能:包容业务的不确定性,如抗短时突发流量、抗积压等;


(3)简单:架构适用于拆分小集群;Java语言易于排查问题和二次开发;社区活跃,使用的人多,方便排查问题;


2、治理方案


(1)集群划分方针:划分小集群,减少相互干扰,减少影响面;


(2)拆分方案:


2.png


如上图所示,对于公司和“钱”相关的业务及核心业务,不仅要给足资源,同时要保证较高的数据安全,在这里就使用了SYNC_MASTER;


  • 对于非核心业务,我们希望它的性价比高,使用尽量少的资源去支撑足够多的数据量,此处就使用了ASYNC_MASTER,伸缩性会更好;


  • 对于其它数据安全要求不高的业务,包括消息轨迹,我们使用单MASTER集群,保证了性能需要,资源使用也少;


  • 对于延时集群,专注于积压消息,pagecache利用率低,目前还没用做,未来考虑在云上采用按需购买的方式来使用;另外对于临时集群目前也没有涉及。


3、控制面管理


(1)统一消息治理后台;


3.png


对所有消息中间件的后台做了一个统一的管理后台,如上图。


(2)对RabbitMQ,仅维护,自动维护关联关系;


(3)对于RocketMQ,用于提升用户体验,比如发送/查询消息、一键接入demo、死信重发等;


4.png

消息管理界面


5.png

配置demo


6.png

死信重发


(4)PaaS化审批


我们对消息化的资源管理做了一个PaaS化的管理,对功能做了一些限制,开发和运维只能在测试环境下做申请和审批,审批通过后再同步到其它环境,然后创建资源、通知用户。


7.png

image.gif

4、统一接入SDK


(1)用户只关心用什么资源,不需要了解namesrv地址,减少出错概率;


8.png


(2)动态配置热生效,节约用户时间;


9.png


(3)收/发消息,失败重试,为中间件做兜底;


10.png


(4)熔断限流,为业务做兜底;


11.png


(5)灰度收消息(消息开关),满足业务特殊场景;


(6)集成公司其他功能,如调用链、全链路压测等;


5、多维度监控


  • 运维:整体情况,cluster 内 top 情况,所属物理机情况;


  • 资源:Topic 上下游 qps,lag 等;


  • 用户:实例消息收发均匀,延迟。


老集群迁移方案


1、人工迁移


场景:消息上下游均为自己的服务;


迁移流程:双收(RocketMQ&RabbitMQ)-> 双发-> 单发(RocketMQ)-> 单收;


需要注意的问题:业务重构,topic合并可能导致下游多tag消息倾斜,导致lag异常问题;


2、自动迁移


  • RabbitMQ <--> RocketMQ 相互镜像迁移;


  • 粒度: exchange < -- > topic;


  • 注意: 相同组的任务互斥;


(1)RabbitMQ -> RocketMQ的迁移方案:


  • 把RabbitMQ的exchange整体同步到topic,在abc.exchange加一个topic前缀为topic_abc.excange;


  • 把RabbitMQ的Routing key预设为RocketMQ的tag;


  • 通过migrator任务程序收集RabbitMQ的消息队列,按照不同的类型传递到RocketMQ;


12.png


(2)RocketMQ -> RabbitMQ的迁移方案:


方法类似,见下图:


13.png


(3)自动迁移的几种情况:


  • 消费者迁移,生产者不动:
    配置RabbitMQ -> RocketMQ 任务;


  • 生产者迁移,消费者不动:
    配置RocketMQ -> RabbitMQ 任务;


  • 生产者先不迁移,然后迁移了:
    先配置RabbitMQ -> RocketMQ 任务;
    迁移完毕后,关闭RabbitMQ -> RocketMQ 任务;

    配置RocketMQ -> RabbitMQ 任务。


以上就是本次分享的全部内容,点击此处即可查看活动视频回放,期待下次交流。



相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
207 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
2月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
208 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
4月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
3222 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
9月前
|
消息中间件 存储 监控
活动实践 | 快速体验云消息队列RocketMQ版
本方案介绍如何使用阿里云消息队列RocketMQ版Serverless实例进行消息管理。主要步骤包括获取接入点、创建Topic和订阅组、收发消息、查看消息轨迹及仪表盘监控。通过这些操作,用户可以轻松实现消息的全生命周期管理,确保消息收发的高效与可靠。此外,还提供了消费验证、下载消息等功能,方便用户进行详细的消息处理与调试。
|
9月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
320 119
|
11月前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
355 4
|
7月前
|
存储 安全 数据挖掘
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
天翼云基于 Apache Doris 成功落地项目已超 20 个,整体集群规模超 50 套,部署节点超 3000 个,存储容量超 15PB
401 2
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
321 113
|
7月前
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
224 2
|
7月前
|
存储 分布式数据库 Apache
小米基于 Apache Paimon 的流式湖仓实践
小米基于 Apache Paimon 的流式湖仓实践
184 0
小米基于 Apache Paimon 的流式湖仓实践

相关产品

  • 云消息队列 MQ
  • 推荐镜像

    更多