RsFlow 高性能流处理引擎完整介绍。
一、基础定位
RsFlow(仓库别名 ArkFlow)是一款纯 Rust 开发的轻量级高性能单机流处理引擎,主打低延迟、低内存占用、极简部署,对标轻量版 Kafka Streams / Logstash,区别于 Flink、Spark 这类重分布式大数据流计算框架。
- 仓库:
github.com/chenquan/arkflow,Crate 包名rsflow - 运行时:基于 Tokio 异步多线程 runtime + flume 无锁高性能通道
- 内存模型:底层集成 Apache DataFusion + Arrow 列式内存,支持流 SQL
- 发行:提供 Rust 二进制、Python 绑定包
pip install rsflow
二、核心技术优势(高性能根源)
- Rust 无 GC 零开销并发 无 JVM/GC 停顿,内存手动管控,百万级消息吞吐下延迟稳定微秒~毫秒级,资源占用远低于 Java 系流引擎。
- Arrow 列式内存 + DataFusion 流 SQL 消息统一转为 Arrow 格式做计算,向量化执行过滤、聚合、关联,JSON/Protobuf 自动序列化转换,SQL 直接对流实时查询。
- 无锁消息通道 flume 多生产者多消费者无锁队列,流水线算子链式执行,减少数据拷贝。
- 模块化插件架构 Source/Processor/Sink 完全解耦,通过 YAML 配置编排流水线,无需编码即可搭建实时链路。
- 轻量化部署 单二进制文件运行,无依赖,支持容器 / 边缘设备 / 网关部署;内置 Prometheus 指标监控。
三、完整核心功能
1. 多数据源 Source(输入)
- 消息队列:Kafka、MQTT
- 网络:HTTP 推送、TCP/UDP 字节流
- 文件:本地日志文件、目录轮询
- 内置生成器:测试模拟定时数据流
2. 内置 Processor 处理器(核心计算)
- 数据格式:JSON 解析 / 序列化、Protobuf 编解码
- SQL 实时计算:where 过滤、聚合、字段投影、多流 join(DataFusion 驱动)
- 批处理聚合:批量攒包输出,削峰填谷
- 数据转换:字段提取、类型转换、时间戳解析、正则过滤
- 流批混合:实时流 + 小批量混合处理模式
3. 多输出 Sink(落地)
Kafka、MQTT、HTTP 接口、本地文件、标准输出控制台、时序库扩展
4. 配套运维能力
- 全链路指标:吞吐量、延迟、失败计数、批大小(Prometheus 暴露)
- 日志分级、流量限流、重试机制、异常丢弃 / 死信转发
- 多流水线并行隔离,独立线程池配置
四、整体架构分层
数据源层 Source → 消息通道队列 → 处理流水线 Pipeline
└── 多线程算子链(JSON解析 → SQL计算 → 批聚合)
└── 输出 Sink
单进程多流水线隔离,每条流水线独立配置线程数、批大小、窗口策略;数据全程 Arrow 列式存储减少序列化开销。
五、最简配置示例(config.yaml)
logging:
level: info
streams:
# 一条流处理流水线
- input:
type: generate # 模拟测试数据源
context: '{"sensor":"temp01","val":25,"ts":1786000000}'
interval: 100ms
batch_size: 20
pipeline:
thread_num: 4
processors:
# json转arrow列式
- type: json_to_arrow
# 实时SQL过滤计算
- type: sql
query: "SELECT sensor, val, ts FROM flow WHERE val > 20"
# 转回JSON输出
- type: arrow_to_json
output:
type: stdout # 控制台输出
六、编译与运行
1. Rust 源码构建
git clone https://github.com/chenquan/arkflow.git cd arkflow cargo build --release ./target/release/arkflow -c config.yaml
2. Python 快速使用
pip install rsflow
七、适用场景 & 与主流流引擎对比
适合 RsFlow 的场景
- 边缘端 / 网关实时数据清洗(物联网 MQTT 设备数据)
- 轻量级日志 ETL,替代 Logstash(更低资源消耗)
- 单机 Kafka 数据实时转换、过滤、简单聚合
- 微服务内部实时消息流转、指标实时计算
- 低资源服务器、容器轻量化实时处理
不适合场景
- 大规模分布式跨节点流计算(无集群、无 checkpoint 分布式状态)
- 超大状态、复杂事件会话窗口、 Exactly-Once 事务语义(Flink/Kafka Streams 更合适)
横向对比简表
| 引擎 | 语言 | 分布式 | 延迟 | 资源占用 | SQL | 部署复杂度 |
|---|---|---|---|---|---|---|
| RsFlow | Rust | 单机 | 微秒级 | 极低 | 支持 (DataFusion) | 单二进制,极简 |
| Apache Flink | Java/Scala | 分布式集群 | 毫秒 | 高 (JVM) | 完整流 SQL | 集群运维重 |
| Kafka Streams | Java | 分布式 | 毫秒 | 中 (JVM) | ksqlDB | 依赖 Kafka 集群 |
| Logstash | Java | 单机 | 毫秒 | 高 | 弱 | JVM 重依赖 |
八、优缺点总结
优点
- 极致性能:Rust + Arrow 列式,低延迟低内存
- 开箱即用:YAML 配置零代码开发实时流水线
- 轻量化:单文件,适配边缘、容器、网关
- SQL 友好:内置标准 SQL 对流数据实时查询
- 扩展简单:Async Trait 自定义 Source/Processor/Sink
局限
- 仅单机运行,不支持分布式集群、跨节点扩容
- 缺少分布式状态、Checkpoint、Exactly-Once 一致性保障
- 生态规模小,社区与生产实践少于 Flink/Kafka Streams
- 复杂大窗口、多流长 Join 能力较弱
九、典型生产落地方案
- 物联网边缘网关:MQTT 设备上报 → RsFlow 清洗过滤 → Kafka 云端存储
- 日志轻量化 ETL:容器标准输出采集 → RsFlow 字段清洗过滤 → Elasticsearch
- 实时指标采集:业务服务 HTTP 打点推送 → SQL 实时聚合 → 时序数据库 Prometheus/InfluxDB
