数据流
FlowMQ 提供"数据流(Stream)"能力,用于将消息以追加写(append-only)日志的形式进行持久化存储,从而支持在线处理、离线分析、审计留存与回放消费等场景。
什么是 FlowMQ Stream
FlowMQ Stream 可以理解为一个具备以下特征的持久化日志:
- 追加写:新消息只会追加到末尾,不会覆盖历史记录。
- 不可变:一旦写入,消息内容不被修改。
- 分区有序:在同一分区(Partition)内,消息按写入顺序排列。
- 持久:消息写入后均被持久化存储,支持重放与离线消费。
基于对象存储的持久化
FlowMQ Stream 的数据持久化构建在对象存储系统之上,除了支持各公有云提供的对象存储服务,也支持兼容 S3 协议的各种私有部署的对象存储系统,比如 Ceph, MinIO 等。
FlowMQ 这种基于对象存储的持久化,相比基于磁盘的存储方案,具有以下优势:
- 更低的存储成本:对象存储单价通常远低于块存储,尤其在高吞吐、长期保留与历史回放等方面成本优势显著
- 高可靠:由底层对象存储保证数据的持久性,比如 AWS S3 提供高达 11 个 9 的持久性保证
- 更灵活:相比预分配本地盘或 EBS,容量规划更灵活
Kafka 兼容
FlowMQ 提供完整的 Kafka 协议和 API 兼容,可直接把 Stream 当作 Kafka Topic 来使用,具体可参考用 Kafka 客户端访问 FlowMQ
主题过滤器绑定
Stream 支持绑定一个或者多个主题过滤器(Topic Filter), 自动捕获匹配的消息并进行持久化存储。 可以根据业务需求,将发送到不同主题的消息按需存储到不同的 Stream 中。 也支持随时调整和更新一个 Stream 绑定的主题过滤器。
示例:
- 一个 Stream 绑定过滤器:
factory/+/+/telemetry - 则所有产线/设备的遥测数据均会被捕获并按序保存到该 Stream 中
混合架构
绑定主题过滤器的 Stream 非常适合"先以 MQTT 接入设备,再以 Kafka 生态做消费分析"的混合架构。设备侧无需任何改造,应用侧也无需搭建另一套 Kafka 集群,即可用 Kafka 消费者处理和分析设备消息。
典型用例
- IoT 数据分析:将设备遥测数据沉淀到 Stream,供实时计算或离线数仓消费。
- 合规与审计:对关键业务事件进行留存,满足追溯与合规要求。
- 离线处理与回放:消费者宕机或维护期间不丢数据,恢复后可从指定 offset 回放。
- 跨团队数据共享:多个业务团队可基于同一 Stream 按各自节奏消费数据。
- 事件溯源:将业务状态变更作为不可变事件序列存入 Stream,支持状态重建与审计追踪。
注意事项
- Retention 策略:根据业务需求配置消息保留时间,避免不必要的数据占用过多存储资源
- 分区数规划:分区数决定最大消费并行度;建议根据预期吞吐量与消费者数量合理设置