vivo鲁班RocketMQ如何实施消息服务的灰度发布策略?

2026-05-23 04:400阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4271个文字,预计阅读时间需要18分钟。

一、方案背景+RocketMQ(以下简述MQ)方案以RocketMQ作为消息中间件,在事务管理、异步解耦、削峰填谷、数据同步等应用场景中具有广泛的使用。

二、业务系统进行灰度发布时,Dubbo与HTTP的调用可基于业务在业务系统灰度发布过程中,Dubbo和HTTP的调用可根据业务需求灵活调整。

一、方案背景

RocketMQ(以下简称MQ)作为消息中间件在事务管理,异步解耦,削峰填谷,数据同步等应用场景中有着广泛使用。当业务系统进行灰度发布时,Dubbo与HTTP的调用可以基于业界通用的灰度方式在我们的微服务治理与网关平台来实现,但MQ已有的灰度方案都不能完全解决消息的隔离与切换衔接问题,为此,我们在鲁班MQ平台(包含根因分析、资源管理、订阅关系校验、延时优化等等的扩展)增加了MQ灰度功能的扩展实现。

二、RocketMQ技术特点

为什么MQ的灰度方案迟迟没有实现呢?我们先来回顾一下RocketMQ的几个核心技术点。

2.1 存储模型的简述

(图2.1 MQ的存储模型)

CommitLog:消息体实际存储的地方,当我们发送的任一业务消息的时候,它最终会存储在commitLog上。MQ在Broker进行集群部署(这里为也简洁,不涉及主从部分)时,同一业务消息只会落到集群的某一个Broker节点上。而这个Broker上的commitLog就会存储所有Topic路由到它的消息,当消息数据量到达1个G后会重新生成一个新的commitLog。

Topic:消息主题,表示一类消息的逻辑集合。每条消息只属于一个Topic,Topic中包含多条消息,是MQ进行消息发送订阅的基本单位。属于一级消息类型,偏重于业务逻辑设计。

Tag:消息标签,二级消息类型,每一个具体的消息都可以选择性地附带一个Tag,用于区分同一个Topic中的消息类型,例如订单Topic, 可以使用Tag=tel来区分手机订单,使用Tag=iot来表示智能设备。

阅读全文

本文共计4271个文字,预计阅读时间需要18分钟。

一、方案背景+RocketMQ(以下简述MQ)方案以RocketMQ作为消息中间件,在事务管理、异步解耦、削峰填谷、数据同步等应用场景中具有广泛的使用。

二、业务系统进行灰度发布时,Dubbo与HTTP的调用可基于业务在业务系统灰度发布过程中,Dubbo和HTTP的调用可根据业务需求灵活调整。

一、方案背景

RocketMQ(以下简称MQ)作为消息中间件在事务管理,异步解耦,削峰填谷,数据同步等应用场景中有着广泛使用。当业务系统进行灰度发布时,Dubbo与HTTP的调用可以基于业界通用的灰度方式在我们的微服务治理与网关平台来实现,但MQ已有的灰度方案都不能完全解决消息的隔离与切换衔接问题,为此,我们在鲁班MQ平台(包含根因分析、资源管理、订阅关系校验、延时优化等等的扩展)增加了MQ灰度功能的扩展实现。

二、RocketMQ技术特点

为什么MQ的灰度方案迟迟没有实现呢?我们先来回顾一下RocketMQ的几个核心技术点。

2.1 存储模型的简述

(图2.1 MQ的存储模型)

CommitLog:消息体实际存储的地方,当我们发送的任一业务消息的时候,它最终会存储在commitLog上。MQ在Broker进行集群部署(这里为也简洁,不涉及主从部分)时,同一业务消息只会落到集群的某一个Broker节点上。而这个Broker上的commitLog就会存储所有Topic路由到它的消息,当消息数据量到达1个G后会重新生成一个新的commitLog。

Topic:消息主题,表示一类消息的逻辑集合。每条消息只属于一个Topic,Topic中包含多条消息,是MQ进行消息发送订阅的基本单位。属于一级消息类型,偏重于业务逻辑设计。

Tag:消息标签,二级消息类型,每一个具体的消息都可以选择性地附带一个Tag,用于区分同一个Topic中的消息类型,例如订单Topic, 可以使用Tag=tel来区分手机订单,使用Tag=iot来表示智能设备。

阅读全文