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

相关推荐
小杨4042 分钟前
springboot框架项目应用实践五(websocket实践)
spring boot·后端·websocket
浪九天3 分钟前
Java直通车系列28【Spring Boot】(数据访问Spring Data JPA)
java·开发语言·spring boot·后端·spring
bobz9651 小时前
IKEv1 和 IKEv2 发展历史和演进背景
后端
大鹏dapeng1 小时前
Gone v2 goner/gin——试试用依赖注入的方式打开gin-gonic/gin
后端·go
tan180°1 小时前
版本控制器Git(1)
c++·git·后端
GoGeekBaird2 小时前
69天探索操作系统-第50天:虚拟内存管理系统
后端·操作系统
_丿丨丨_2 小时前
Django下防御Race Condition
网络·后端·python·django
JohnYan2 小时前
工作笔记 - btop安装和使用
后端·操作系统
我愿山河人间2 小时前
Dockerfile 和 Docker Compose:容器化世界的两大神器
后端
掘金码甲哥2 小时前
golang倒腾一款简配的具有请求排队功能的并发受限服务器
后端