Skip to content

RobustMQ 整体架构

概述

RobustMQ 是一个用 Rust 构建的下一代高性能多协议消息队列,专为云原生和 AI 原生环境设计。本文档全面介绍了 RobustMQ 的整体架构、设计原则和核心组件。

设计理念

RobustMQ 基于以下核心设计原则构建:

  • AI 就绪:针对 AI 工作流优化,提供微秒级延迟
  • 云原生:容器优先设计,支持 Kubernetes
  • 多协议统一:单一平台支持 MQTT、Kafka 和 AMQP
  • 计算存储分离:无状态计算层支持 Serverless
  • 可插拔存储:灵活存储后端适应不同使用场景

高层架构

RobustMQ 架构

RobustMQ 采用分布式分层架构,职责分离清晰:

1. 协议层(多协议计算层)

  • MQTT Broker:处理 MQTT 3.x/4.x/5.x 协议
  • Kafka Broker:提供 Kafka 兼容的流处理能力
  • AMQP Broker:支持 AMQP 0.9.1/1.0 企业级消息传递
  • 协议隔离:每个协议使用专用端口以获得最佳性能

2. Broker 服务器层

  • 无状态设计:所有 broker 节点都是无状态的,支持水平扩展
  • 负载均衡:客户端在 broker 节点间自动分布
  • 协议转换:将不同协议转换为内部消息格式
  • 连接管理:处理数百万并发连接

3. 元数据服务层(调度中心)

  • Raft 共识:使用 Raft 算法进行高可用元数据管理
  • 集群协调:节点发现、健康检查和故障转移
  • 主题管理:主题路由、分区和负载均衡
  • 控制器线程:协议特定的集群调度控制器

4. 存储适配层

  • 抽象层:可插拔存储接口
  • 协议转换:将内部消息转换为存储格式
  • 批处理:针对高吞吐量场景优化
  • 一致性保证:支持 WAL(预写日志)

5. 存储层

  • 内存存储:为实时应用提供微秒级延迟
  • SSD 存储:为高频访问提供毫秒级延迟
  • 对象存储:为成本效益的长期存储提供秒级延迟
  • 分布式存储:支持 S3、HDFS 和其他分布式后端

核心组件

Broker 服务器 (src/broker-server/)

协调所有协议 broker 并提供统一服务管理的主入口点。

主要职责:

  • 服务协调和生命周期管理
  • 内部通信的 gRPC 服务接口
  • 集群服务管理和健康监控
  • 性能指标收集和报告

核心文件:

  • cluster_service.rs:集群服务管理
  • grpc.rs:gRPC 服务接口
  • common.rs:共享工具和配置

元数据服务 (src/meta-service/)

负责集群协调和元数据存储的元数据管理中心。

主要职责:

  • 使用 Raft 共识进行集群元数据存储
  • 节点管理和健康监控
  • 故障检测和自动恢复
  • 主题路由和负载均衡决策

核心模块:

  • core/:核心缓存和控制器逻辑
  • raft/:Raft 共识算法实现
  • storage/:元数据存储引擎
  • controller/:协议特定控制器

日志服务器 (src/journal-server/)

负责消息持久化和检索的持久化存储层。

主要职责:

  • 消息持久化和索引
  • 存储引擎抽象
  • 数据复制和一致性
  • 针对不同访问模式的性能优化

核心特性:

  • WAL(预写日志)保证一致性
  • 可插拔存储后端
  • 高效索引和查询
  • 数据压缩和优化

协议 Broker

MQTT Broker (src/mqtt-broker/)

  • 协议支持:MQTT 3.1.1、3.1 和 5.0
  • 传输:TCP (1883)、SSL/TLS (1884)、WebSocket (8083)、WebSocket SSL (8084)
  • 特性:QoS 级别、保留消息、遗嘱消息、共享订阅
  • 性能:百万级并发连接

Kafka Broker (src/kafka-broker/)

  • 协议支持:Kafka 2.8+ 兼容
  • 传输:TCP (9092)
  • 特性:主题分区、消费者组、偏移量管理
  • 使用场景:大数据流处理、AI 训练管道

AMQP Broker (src/amqp-broker/)

  • 协议支持:AMQP 0.9.1 和 1.0
  • 传输:TCP (5672)
  • 特性:交换机、队列、路由、确认机制
  • 使用场景:企业集成、微服务通信

存储适配器 (src/storage-adapter/)

为不同存储后端提供统一接口。

支持的存储类型:

  • 内存:内存存储提供超低延迟
  • 本地文件:基于文件的存储,适用于开发和小规模部署
  • RocksDB:嵌入式键值存储,高性能
  • S3:对象存储,适用于云部署
  • HDFS:分布式文件系统,适用于大数据场景

通用组件

网络服务器 (src/common/network-server/)

  • 连接管理:高效的连接池和管理
  • 协议解析:高性能协议解析
  • 安全:TLS/SSL 支持和身份验证
  • 监控:连接指标和健康检查

指标 (src/common/metrics/)

  • Prometheus 集成:全面的指标收集
  • 自定义指标:应用特定的性能指标
  • 实时监控:实时性能仪表板
  • 告警:可配置的告警规则

安全 (src/common/security/)

  • 身份验证:多种身份验证机制
  • 授权:基于角色的访问控制
  • 加密:端到端加密支持
  • 审计日志:安全事件日志

部署架构

一体化部署

  • 使用场景:开发、测试和小规模生产
  • 组件:所有服务在单个进程中
  • 优势:部署和管理简单
  • 限制:单点故障,扩展性有限

微服务部署

  • 使用场景:需要高可用性的生产环境
  • 组件:独立服务,专用资源
  • 优势:高可用性、独立扩展、故障隔离
  • 复杂性:部署和管理更复杂

云原生部署

  • 使用场景:Kubernetes 环境
  • 组件:容器化服务,K8s Operator
  • 优势:自动扩展、服务发现、滚动更新
  • 特性:Helm 图表、CRD、监控集成

数据流架构

消息发布流程

  1. 客户端连接:客户端连接到相应的 broker(MQTT/Kafka/AMQP)
  2. 协议解析:Broker 解析协议特定的消息格式
  3. 消息验证:验证消息格式和权限
  4. 主题解析:元数据服务解析主题路由信息
  5. 存储写入:日志服务器将消息持久化到存储
  6. 确认:向客户端发送确认

消息消费流程

  1. 订阅:客户端订阅主题/分区
  2. 负载均衡:元数据服务在 broker 间分布订阅
  3. 消息检索:日志服务器从存储检索消息
  4. 协议转换:将内部格式转换为客户端协议
  5. 消息投递:向订阅客户端投递消息
  6. 确认:处理客户端确认和偏移量管理

性能特征

延迟

  • 内存存储:微秒级延迟
  • SSD 存储:毫秒级延迟
  • 对象存储:秒级延迟

吞吐量

  • 并发连接:百万级支持
  • 消息速率:高吞吐量消息处理
  • 带宽:针对高带宽场景优化

可扩展性

  • 水平扩展:添加节点增加容量
  • 自动扩展:基于 Kubernetes 的自动扩展
  • 负载分布:自动负载均衡

安全架构

身份验证

  • 用户名/密码:传统身份验证
  • 基于证书:X.509 证书身份验证
  • OAuth 2.0:现代身份验证协议
  • LDAP/AD:企业目录集成

授权

  • 主题级别:细粒度主题访问控制
  • 操作级别:读/写权限控制
  • 基于资源:特定资源权限
  • 基于时间:临时访问授权

加密

  • 传输加密:TLS/SSL 传输中数据加密
  • 存储加密:静态数据加密
  • 端到端:应用级加密
  • 密钥管理:安全密钥轮换和管理

监控和可观测性

指标

  • 系统指标:CPU、内存、磁盘、网络使用率
  • 应用指标:消息速率、延迟、错误率
  • 业务指标:主题使用、客户端连接
  • 自定义指标:应用特定指标

日志

  • 结构化日志:JSON 格式日志
  • 日志级别:可配置日志级别
  • 日志聚合:集中式日志收集
  • 日志分析:实时日志分析

追踪

  • 分布式追踪:端到端请求追踪
  • 性能分析:延迟分解分析
  • 依赖映射:服务依赖可视化
  • 错误跟踪:错误传播跟踪

开发和运维

开发

  • Rust 生态:利用 Rust 的性能和安全性
  • 异步运行时:基于 Tokio 的异步编程
  • 测试:全面的单元和集成测试
  • 文档:广泛的 API 和用户文档

运维

  • Docker 支持:容器化部署
  • Kubernetes:原生 K8s 支持和 Operator
  • 监控:Prometheus 和 Grafana 集成
  • 备份/恢复:数据备份和恢复程序

未来路线图

短期(2025)

  • MQTT 生产就绪:完整的 MQTT 5.0 支持
  • 性能优化:进一步降低延迟
  • 云集成:增强云提供商集成

中期(2026)

  • Kafka 增强:完整的 Kafka 兼容性
  • AI 管道支持:优化的 AI 训练数据管道
  • 高级特性:模式注册表、消息转换

长期

  • Apache 基金会:成为 Apache 顶级项目的目标
  • 生态增长:丰富的工具和集成生态系统
  • 全球采用:全球企业采用

结论

RobustMQ 代表了新一代消息队列系统,从零开始为现代云原生和 AI 原生应用设计。其分层架构、多协议支持和可插拔存储使其适用于广泛的使用场景,从 IoT 设备到大规模 AI 训练管道。

计算和存储的分离,结合 Rust 的性能特征,使 RobustMQ 能够提供微秒级延迟,同时保持高可用性和可扩展性。这使其成为需要实时性能和可靠消息投递的应用的理想选择。


本文档提供了 RobustMQ 架构的全面概述。有关特定组件的更详细信息,请参考各个组件的文档。