喜马拉雅|喜马拉雅 Apache RocketMQ 消息治理实践( 二 )



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

(5)灰度收消息(消息开关) , 满足业务特殊场景;
(6)集成公司其他功能 , 如调用链、全链路压测等;
5、多维度监控
运维:整体情况 , cluster 内 top 情况 , 所属物理机情况; 资源:Topic 上下游 qps , lag 等; 用户:实例消息收发均匀 , 延迟 。 老集群迁移方案 1、人工迁移
场景:消息上下游均为自己的服务;
迁移流程:双收(RocketMQRabbitMQ)-双发-单发(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;
(2)RocketMQ -RabbitMQ的迁移方案:
方法类似 , 见下图:

(3)自动迁移的几种情况:
消费者迁移 , 生产者不动:配置RabbitMQ -RocketMQ 任务; 生产者迁移 , 消费者不动:配置RocketMQ -RabbitMQ 任务; 生产者先不迁移 , 然后迁移了:先配置RabbitMQ -RocketMQ 任务;迁移完毕后 , 关闭RabbitMQ -RocketMQ 任务; 配置RocketMQ -RabbitMQ 任务 。
作者:曹融 , 来自喜马拉雅 , 从事微服务和消息相关中间件开发 。
本文为阿里云原创内容 , 未经允许不得转载 。