news 2026/8/25 13:15:16

rocketMQ proxy架构分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rocketMQ proxy架构分析

介绍

proxy 模块是 RocketMQ 5.x 的 无状态代理组件 ,核心思路是:对外提供 gRPC 协议(面向多语言客户端),对内把请求翻译成 Remoting 协议访问 Broker/Namesrv,并原生支持 pop 消费模型。它有两种部署模式(见 README.md ):

  • Cluster 模式 :Proxy 作为独立集群,通过 RPC 与 Broker 通信(存算分离)。
  • Local 模式 :Proxy 与 Broker 同进程部署。

两种模式通过 ServiceManagerFactory 切换 Local / Cluster 两套实现。

各模块作用

一、remoting / activity(Remoting 协议入口的活动处理器)
remoting 包负责实现 自定义 Remoting 协议 的接入(区别于 gRPC),入口是MultiProtocolRemotingServer,让老版 RocketMQ 4.x 客户端也能连到 Proxy。

activity 子包里的类都实现 NettyRequestProcessor ,是 按请求码路由的具体业务处理单元 :

作用
AbstractRemotingActivity基类。统一构造 ProxyContext 、执行 RequestPipeline (鉴权等)、统一异常→响应码映射、回写响应
ClientManagerActivity处理心跳/注册/注销:把 producer/consumer 的 channel 注册进 MessagingProcessor ,维护 RemotingChannelManager
ConsumerManagerActivity消费者管理类:查消费者列表/连接、锁/解锁 MQ、offset 查询更新等
SendMessageActivity发送消息(含 batch/消费端回退),并做 topic 消息类型校验、事务消息订阅注册
PopMessageActivitypop 拉取消息,超时时间基于 pollTime 计算
PullMessageActivity传统 pull 拉取
AckMessageActivity / ChangeInvisibleTimeActivityACK 确认 / 修改消息不可见时间(延迟重投)
GetTopicRouteActivity获取 topic 路由
TransactionActivity结束事务(commit/rollback)

其它子包:

  • pipeline : RequestPipeline 责任链,用于鉴权等前置处理。
  • protocol :协议协商、SSL/TLS 多协议握手。
  • channel : RemotingChannel 及其管理。
  • common : RemotingConverter 协议转换。

二、service / relay(中转/透传服务)


ProxyRelayService 负责把 运维/管理类请求 (消费进度查询、消费详情、事务状态回查)转发到 Broker,或从 Broker 侧直接回写给客户端。

  • AbstractProxyRelayService :实现 processCheckTransactionState ,回查事务状态时先落一条 TransactionData ,再转发。
  • LocalProxyRelayService :Local 模式,直接用 BrokerController 的 RemotingServer 把结果写回客户端(如 getConsumerRunningInfo 、 consumeMessageDirectly )
  • ClusterProxyRelayService :Cluster 模式, 尚未实现 ( not implement yet )。

辅助类: ProxyChannel 、 ProxyRelayResult 、 RelayData 用于承载中转结果。

三、service / transaction(事务消息支持)

TransactionService 负责事务消息的 订阅登记、事务数据管理、结束事务请求构造 。

  • AbstractTransactionService :维护 TransactionDataManager ,实现事务数据的新增/取出、生成 EndTransactionRequestHeader 。
  • ClusterTransactionService :Cluster 模式核心。通过 心跳 把事务生产者的 group 注册到对应 Broker(否则 Broker 不认这个事务 group),并维护 brokerAddr → brokerName 映射。内含 TxHeartbeatServiceThread 定时扫描发送心跳。
  • LocalTransactionService :Local 模式 空实现 (因为 producer channel 已直接进 Broker 的 producerManager ,无需 Proxy 额外处理)。
  • 数据类: TransactionData 、 TransactionDataManager 、 EndTransactionRequestData 。

四、service 其他子包

子类

作用

message消息收发底层操作:send/pop/pull/ack/changeInvisibleTime/offset/lock 等,封装成对 Broker 的 RPC
route路由服务:Caffeine 缓存路由、 MessageQueueSelector (读写队列选择,含故障延迟 MQFaultStrategy )
metadata元数据:topic 消息类型、订阅组配置
receiptpop 消费的 ReceiptHandle 管理
channelSimpleChannel / InvocationChannel 管理(Local 模式进程内通道抽象)
clientProxy 侧的客户端: ClusterConsumerManager 、 ProxyClientRemotingProcessor
admin运维管理:创建/更新 topic、订阅组等
sysmessage系统消息同步:Cluster 多 Proxy 间通过系统 topic 广播消费者心跳,保证任一 Proxy 都能看到全量在线消费者

ServiceManager 是这些服务的聚合门面,统一暴露 MessageService / TopicRouteService / TransactionService / ProxyRelayService / MetadataService / AdminService 等。

五、processor(核心编排层)

MessagingProcessor 是 统一的业务门面 ,gRPC 和 Remoting 两个入口最终都调用它。它负责:消息发送/消费编排、队列选择、事务结束、客户端(producer/consumer)注册管理、ReceiptHandle 管理等,内部再委托给 ServiceManager。

其子包:

  • channel : RemoteChannel (跨 Proxy 的远程通道抽象及序列化)。
  • validator :topic 消息类型校验器。
  • TransactionProcessor 、 ProducerProcessor 、 ConsumerProcessor 等是分领域的具体实现。

六、grpc(gRPC 协议入口)

GrpcServer 提供 gRPC 服务, v2 子包是基于 rocketmq-apis (protobuf)的 MessagingService 实现, interceptor 做鉴权/上下文/异常处理。 AbstractMessingActivity 是 gRPC 侧各 Activity 的基类(含 topic/group 校验)。

七、common / config / metrics(基础支撑)

  • common : ProxyContext 、 ReceiptHandleGroup 、 ProxyException 等公共模型。
  • config : ConfigurationManager 、 ProxyConfig 配置加载。
  • metrics : ProxyMetricsManager 监控指标。

一句话总结 : remoting/activity 是 Remoting 协议的业务入口, processor 是统一编排门面, service 是真正干活的后端(消息/路由/事务/中转/元数据等),三者构成「协议接入 → 编排 → 后端服务」三层结构; relay 管管理类请求的中转, transaction 管事务消息在 Proxy 侧的心跳注册与事务数据维护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 13:10:44

商业计划书最容易被忽略的加分项:清晰的图表表达

你好,我是小索奇。 本文围绕“商业计划书最容易被忽略的加分项:清晰的图表表达”展开,重点说明如何用流程图、结构图和数据图提升内容表达效率。本文重点:明确问题、拆分逻辑、选择图表类型,并用清晰段落帮助读者快速获…

作者头像 李华
网站建设 2026/8/25 13:10:24

2026年靠谱冠层光合工具哪家好?这份实用测评指南帮你甄选

凌晨5点的麦田里,你还在扛着几十斤的同化箱蹲点测光合?好不容易密封好,一阵风刮来数据全乱;折腾一天测10个样本,数据还没法代表整个冠层的真实光合效率?2026年做冠层光合研究,选对工具能让你少走…

作者头像 李华
网站建设 2026/8/25 13:06:21

8英寸产能被AI挤占 2026年“选芯“逻辑正在重写

一、三重挤压:一颗MCU的涨价逻辑 如果说2025年的关键词是"复苏",那么2026年上半年,消费电子行业的主旋律只有两个字——成本。 从去年第四季度开始,晶圆代工产能告急,MCU芯片全线涨价5%15%。紧接着&#xff…

作者头像 李华
网站建设 2026/8/25 12:59:32

2026百度网盘下载慢怎么办?教你用PanDownload在线解析一键提速

在日常使用网络存储工具保存和获取文件时,很多人都会遇到传输进度缓慢、等待时间过长的问题。这种情况不仅影响工作效率,也十分影响使用心情。其实导致传输速度不理想的因素有很多,通过一些简单实用的排查和调整,就可以有效改善传…

作者头像 李华
网站建设 2026/8/25 12:55:35

2020拯救者R7000自己动手清灰换硅脂

自电脑买来以后就还没清过灰,电脑是大二那年买的,现在已经工作了(入职前想着现在电脑这么贵清一清灰在凑合用几年哈哈哈哈),本来想着去专业的地方去清,但是看网上说会有给你简单处理的情况,所以…

作者头像 李华
网站建设 2026/8/25 12:53:55

Redis 深度内核解析与高性能运维调优指南

文章目录🚀 Redis 深度内核解析与高性能运维调优指南📑 文章摘要🌳 核心基础:底层结构与物理模型📌 2.1 内存对象与多态编码的物理布局📌 2.2 Reactor 线程模型与 I/O 多路复用🌲 核心原理&…

作者头像 李华