ArkFlow - 高性能Rust流处理引擎,提供强大的数据流处理能力,支持多种输入输出源和处理器

ArkFlow

该项目目前正在积极的开发中,欢迎大家体验!

高性能Rust流处理引擎,提供强大的数据流处理能力,支持多种输入输出源和处理器。

特性

  • 高性能:基于Rust和Tokio异步运行时构建,提供卓越的性能和低延迟
  • 多种数据源:支持Kafka、MQTT、HTTP、文件等多种输入输出源
  • 强大的处理能力:内置SQL查询、JSON处理、Protobuf编解码、批处理等多种处理器
  • 可扩展:模块化设计,易于扩展新的输入、输出和处理器组件

安装

从源码构建

bash 复制代码
# 克隆仓库
git clone https://github.com/chenquan/arkflow.git
cd arkflow

# 构建项目
cargo build --release

# 运行测试
cargo test

快速开始

  1. 创建配置文件 config.yaml
yaml 复制代码
logging:
  level: info
streams:
  - input:
      type: "generate"
      context: '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }'
      interval: 1s
      batch_size: 10

    pipeline:
      thread_num: 4
      processors:
        - type: "json_to_arrow"
        - type: "sql"
          query: "SELECT * FROM flow WHERE value >= 10"
        - type: "arrow_to_json"

    output:
      type: "stdout"
  1. 运行ArkFlow:
bash 复制代码
./target/release/arkflow --config config.yaml

配置说明

ArkFlow使用YAML格式的配置文件,支持以下主要配置项:

顶级配置

yaml 复制代码
logging:
  level: info  # 日志级别:debug, info, warn, error

streams:       # 流定义列表
  - input:      # 输入配置
      # ...
    pipeline:   # 处理管道配置
      # ...
    output:     # 输出配置
      # ...

输入组件

ArkFlow支持多种输入源:

  • Kafka:从Kafka主题读取数据
  • MQTT:从MQTT主题订阅消息
  • HTTP:通过HTTP接收数据
  • 文件:从文件读取数据
  • 生成器:生成测试数据
  • SQL:从数据库查询数据

示例:

yaml 复制代码
input:
  type: kafka
  brokers:
    - localhost:9092
  topics:
    - test-topic
  consumer_group: test-group
  client_id: arkflow
  start_from_latest: true

处理器

ArkFlow提供多种数据处理器:

  • JSON:JSON数据处理和转换
  • SQL:使用SQL查询处理数据
  • Protobuf:Protobuf编解码
  • 批处理:将消息批量处理

示例:

yaml 复制代码
pipeline:
  thread_num: 4
  processors:
    - type: json_to_arrow
    - type: sql
      query: "SELECT * FROM flow WHERE value >= 10"
    - type: arrow_to_json

输出组件

ArkFlow支持多种输出目标:

  • Kafka:将数据写入Kafka主题
  • MQTT:将消息发布到MQTT主题
  • HTTP:通过HTTP发送数据
  • 文件:将数据写入文件
  • 标准输出:将数据输出到控制台

示例:

yaml 复制代码
output:
  type: kafka
  brokers:
    - localhost:9092
  topic: output-topic
  client_id: arkflow-producer

示例

Kafka到Kafka的数据处理

yaml 复制代码
streams:
  - input:
      type: kafka
      brokers:
        - localhost:9092
      topics:
        - test-topic
      consumer_group: test-group

    pipeline:
      thread_num: 4
      processors:
        - type: json_to_arrow
        - type: sql
          query: "SELECT * FROM flow WHERE value > 100"
        - type: arrow_to_json

    output:
      type: kafka
      brokers:
        - localhost:9092
      topic: processed-topic

生成测试数据并处理

yaml 复制代码
streams:
  - input:
      type: "generate"
      context: '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }'
      interval: 1ms
      batch_size: 10000

    pipeline:
      thread_num: 4
      processors:
        - type: "json_to_arrow"
        - type: "sql"
          query: "SELECT count(*) FROM flow WHERE value >= 10 group by sensor"
        - type: "arrow_to_json"

    output:
      type: "stdout"

许可证

ArkFlow 使用 Apache License 2.0 许可证。

项目地址:github.com/chenquan/ar...

相关推荐
东林牧之几秒前
Django+celery异步:拿来即用,可移植性高
后端·python·django
超浪的晨1 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
Pomelo_刘金1 小时前
用 DDD 把「闹钟」需求一点点捏出来
架构·rust·领域驱动设计
AntBlack1 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉
Pomelo_刘金1 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust
双力臂4041 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
midsummer_woo3 小时前
基于spring boot的医院挂号就诊系统(源码+论文)
java·spring boot·后端
Olrookie4 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql
沸腾_罗强4 小时前
Bugs
后端
一条GO4 小时前
ORM中实现SaaS的数据与库的隔离
后端