本文重点介绍 RocketMQ 各组件间的元数据交互。基于5.1版本
RocketMQ 元数据交互概览如下图所示:
下边简要说下各组件的作用和元数据交互。
NameServer
NameServer 作用类似 DNS,将资源名称转为资源地址。
它的主要功能:
- 路由注册、路由发现
- 健康检测(心跳)
cluster、broker、topic、queue、健康检测这些信息数据结构如下图:
NameServer 之间不进行数据同步。
Broker
Broker 如其名字,是生产者和消费者之间的桥梁,是整个 MQ 的核心,负责消息存储、消费等。
数据交互:
- 启动时会向每个 NamServer 注册
- 定时任务向每个 NamServer 注册
- 心跳
注册时会将 broker 信息和 topic 信息发送给 NameServer。
Client(生产者、消费者)
定时向 NameServer 拉取,并更新本地路由信息