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...

相关推荐
计算机毕业设计木哥4 分钟前
计算机毕业设计 基于Python+Django的医疗数据分析系统
开发语言·hadoop·后端·python·spark·django·课程设计
Victor3565 分钟前
Redis(52)Redis哨兵模式下如何进行版本升级?
后端
cyforkk9 小时前
Spring Boot @RestController 注解详解
java·spring boot·后端
canonical_entropy10 小时前
可逆计算:一场软件构造的世界观革命
后端·aigc·ai编程
重庆穿山甲10 小时前
从0到1:用 Akka 持久化 Actor + Outbox + RocketMQ 做到“订单-库存最终一致”
后端
我不只是切图仔12 小时前
我只是想给网站加个注册验证码,咋就那么难!
前端·后端
专注VB编程开发20年12 小时前
CSS 的命名方式像是 PowerShell 的动词-名词结构,缺乏面向对象的层级关系
开发语言·后端·rust
野犬寒鸦12 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode