---
title: 数据流
---

# 数据流

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](../protocols/kafka) 

## 主题过滤器绑定

Stream 支持绑定一个或者多个主题过滤器（Topic Filter）, 
自动捕获匹配的消息并进行持久化存储。
可以根据业务需求，将发送到不同主题的消息按需存储到不同的 Stream 中。
也支持随时调整和更新一个 Stream 绑定的主题过滤器。

示例：

- 一个 Stream 绑定过滤器：`factory/+/+/telemetry`
- 则所有产线/设备的遥测数据均会被捕获并按序保存到该 Stream 中

::: tip 混合架构
绑定主题过滤器的 Stream 非常适合"先以 MQTT 接入设备，再以 Kafka 生态做消费分析"的混合架构。设备侧无需任何改造，应用侧也无需搭建另一套 Kafka 集群，即可用 Kafka 消费者处理和分析设备消息。
:::

## 典型用例

- **IoT 数据分析**：将设备遥测数据沉淀到 Stream，供实时计算或离线数仓消费。
- **合规与审计**：对关键业务事件进行留存，满足追溯与合规要求。
- **离线处理与回放**：消费者宕机或维护期间不丢数据，恢复后可从指定 offset 回放。
- **跨团队数据共享**：多个业务团队可基于同一 Stream 按各自节奏消费数据。
- **事件溯源**：将业务状态变更作为不可变事件序列存入 Stream，支持状态重建与审计追踪。


## 注意事项

- **Retention 策略**：根据业务需求配置消息保留时间，避免不必要的数据占用过多存储资源
- **分区数规划**：分区数决定最大消费并行度；建议根据预期吞吐量与消费者数量合理设置
