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

相关推荐
caihuayuan54 小时前
升级element-ui步骤
java·大数据·spring boot·后端·课程设计
Kookoos5 小时前
ABP vNext + EF Core 实战性能调优指南
数据库·后端·c#·.net·.netcore
揣晓丹6 小时前
JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码
java·vue.js·spring boot·后端·开源
豌豆花下猫8 小时前
Python 3.14 新特性盘点,更新了些什么?
后端·python·ai
caihuayuan59 小时前
Vue生命周期&脚手架工程&Element-UI
java·大数据·spring boot·后端·课程设计
明月看潮生9 小时前
青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备
开发语言·青少年编程·rust·编程与数学
明月与玄武11 小时前
Spring Boot中的拦截器!
java·spring boot·后端
菲兹园长12 小时前
SpringBoot统一功能处理
java·spring boot·后端
muxue17812 小时前
go语言封装、继承与多态:
开发语言·后端·golang
开心码农1号12 小时前
Go语言中 源文件开头的 // +build 注释的用法
开发语言·后端·golang