RobustMQ 整体架构
概述
RobustMQ 是一个用 Rust 构建的下一代高性能多协议消息队列,专为云原生和 AI 原生环境设计。本文档全面介绍了 RobustMQ 的整体架构、设计原则和核心组件。
设计理念
RobustMQ 基于以下核心设计原则构建:
- AI 就绪:针对 AI 工作流优化,提供微秒级延迟
- 云原生:容器优先设计,支持 Kubernetes
- 多协议统一:单一平台支持 MQTT、Kafka 和 AMQP
- 计算存储分离:无状态计算层支持 Serverless
- 可插拔存储:灵活存储后端适应不同使用场景
高层架构
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、监控集成
数据流架构
消息发布流程
- 客户端连接:客户端连接到相应的 broker(MQTT/Kafka/AMQP)
- 协议解析:Broker 解析协议特定的消息格式
- 消息验证:验证消息格式和权限
- 主题解析:元数据服务解析主题路由信息
- 存储写入:日志服务器将消息持久化到存储
- 确认:向客户端发送确认
消息消费流程
- 订阅:客户端订阅主题/分区
- 负载均衡:元数据服务在 broker 间分布订阅
- 消息检索:日志服务器从存储检索消息
- 协议转换:将内部格式转换为客户端协议
- 消息投递:向订阅客户端投递消息
- 确认:处理客户端确认和偏移量管理
性能特征
延迟
- 内存存储:微秒级延迟
- 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 架构的全面概述。有关特定组件的更详细信息,请参考各个组件的文档。