Skip to content

系统架构

mq9 由两部分组成:多语言 SDK(Agent 和工程师直接使用)与 Broker(负责注册中心、消息存储和路由的所有逻辑)。

mq9 系统架构


SDK 层

SDK 是 Agent 和服务与 mq9 交互的唯一接口。它将基于 NATS 的协议封装为类型化、符合各语言习惯的 API——Agent 无需直接发送原始 NATS 请求。

官方提供六种语言 SDK:

语言包名安装
Pythonmq9pip install mq9
JavaScript / TypeScriptmq9npm install mq9
Gogithub.com/robustmq/mq9/gogo get github.com/robustmq/mq9/go
Rustmq9cargo add mq9
Javaio.mq9:mq9Maven / Gradle
C#mq9dotnet add package mq9

六种语言暴露完全相同的 API 接口。新增协议操作时,六种语言同步更新,不存在语言间的接口差异。

传输层: 所有 SDK 均通过 NATS 协议在 $mq9.AI.* Subject 上与 Broker 通信。任何能够建立到 4222 端口 TCP 连接的环境都可以接入。


Broker

Broker 是一个单一二进制,无需任何外部运行时依赖。它处理三个核心职责:

协议与路由

接收所有 SDK 请求(通过 NATS),路由到对应的内部处理器:注册中心操作(AGENT.REGISTERAGENT.DISCOVER 等)或消息操作(MSG.SENDMSG.FETCHMSG.ACK 等)。

Agent 注册中心

维护 AgentCard 索引。支持对能力描述的全文关键词搜索和语义向量搜索。基于 TTL 的自动过期机制会清除失活的注册记录。

可靠异步通信

管理持久化邮箱。将消息存储在服务端,按优先级排序(critical > urgent > normal),追踪消费组位点,并执行消息级和邮箱级 TTL。


集群模式

单个 Broker 节点可承载数百万并发 Agent 连接。当吞吐量或可用性要求提高时,Broker 可水平扩展。

mq9 集群拓扑

集群的核心特性:

  • 所有节点均为活跃节点 — 无主备之分。Agent 可以连接任意节点。
  • 一致性路由 — 元服务(基于 Raft)负责集群成员管理、数据放置决策和 Leader 选举。
  • 无感知水平扩容 — 新增 Broker 节点后立即加入集群,无需停机,SDK 侧无需重连。
  • API 不变 — SDK 的连接地址指向集群(或其前置负载均衡器)。无论是单节点还是二十节点,API 完全相同。

何时扩容

场景方案
开发 / 测试单节点(docker run robustmq/robustmq
生产环境,中等负载单节点 + 持久化存储卷
高吞吐 / 高可用要求3+ 节点集群 + 负载均衡器
数据主权 / 多地域各地域独立部署;联邦发现(路线图)

存储

Broker 的存储层可插拔:

后端适用场景
Memory开发、测试——无持久化
RocksDB生产环境——持久化、低延迟本地存储
S3 分层大规模部署的冷数据归档(路线图)

存储与计算解耦。在集群模式下,存储层可独立于 Broker 节点进行扩容。


部署

单节点(开发环境)

bash
docker run -d --name mq9 -p 4222:4222 -v mq9-data:/data robustmq/robustmq:latest

单节点(生产环境)

bash
docker run -d \
  --name mq9 \
  -p 4222:4222 \
  -p 9090:9090 \
  -v /data/mq9:/data \
  --restart unless-stopped \
  robustmq/robustmq:latest
  • 端口 4222 — mq9/NATS 协议(SDK 连接)
  • 端口 9090 — Prometheus 指标

集群部署

多节点配置请参考 RobustMQ 集群部署指南。SDK 的 server 参数接受逗号分隔的节点地址列表或负载均衡器地址——从单节点迁移到集群无需修改任何代码。