Function Stream 是一个基于 Rust 构建的高性能、事件驱动的流处理框架。它提供了一个模块化的运行时,用于编排编译为 WebAssembly (WASM) 的 Serverless 风格处理函数,支持使用 Go、Python 和 Rust 编写函数。
- 事件驱动的 WASM 运行时:以接近原生的性能和沙箱隔离的方式执行多语言函数(Go、Python、Rust)。
- 持久化状态管理:内置支持基于 RocksDB 的状态存储,用于有状态流处理。
- SQL 驱动的 CLI:使用类 SQL 命令进行作业管理和流检测的交互式 REPL。
function-stream/
├── src/ # 核心运行时、协调器、服务器、配置
├── protocol/ # Protocol Buffers 定义
├── cli/ # SQL REPL 客户端
├── conf/ # 默认运行时配置
├── docs/ # 项目文档 (中/英)
├── examples/ # 示例处理器
├── python/ # Python API、客户端和运行时 (WASM)
├── scripts/ # 构建和环境自动化脚本
├── Makefile # 统一构建系统
└── Cargo.toml # 工作区清单
- Rust 工具链:Stable >= 1.77 (通过 rustup 安装)。
- Python 3.9+:构建 Python WASM 运行时所需。
- Protoc:Protocol Buffers 编译器(用于生成 gRPC 绑定)。
- 构建工具:cmake, pkg-config, OpenSSL headers (用于 rdkafka)。
我们提供了一个自动化脚本来设置 Python 虚拟环境 (.venv)、安装依赖项并编译必要的子模块。
make env以 release 模式启动控制平面。如果缺少 Python WASM 运行时,构建系统将自动编译它。
cargo run --release --bin function-stream在单独的终端中,启动 SQL REPL:
cargo run -p function-stream-cli -- --host 127.0.0.1 --port 8080项目使用标准的 Makefile 来处理编译和分发。产物生成在 dist/ 目录中。
| 命令 | 描述 |
|---|---|
make |
make build 的别名。编译 Rust 二进制文件和 Python WASM 运行时。 |
make build |
构建完整版本(Rust + Python 支持)。 |
make build-lite |
构建精简版本(仅 Rust,无 Python 依赖)。 |
要创建生产就绪的归档文件(.tar.gz 和 .zip),请使用 dist 目标。
make dist输出:
dist/function-stream-<version>.tar.gzdist/function-stream-<version>.zip
对于不包含 Python WASM 运行时的轻量级分发:
make dist-lite输出:
dist/function-stream-<version>-lite.tar.gzdist/function-stream-<version>-lite.zip
解压发布包后,您将看到以下结构:
function-stream-<version>/
├── bin/
│ ├── function-stream # 编译后的二进制文件
│ ├── cli # 编译后的 CLI 二进制文件
│ ├── start-server.sh # 生产环境启动脚本
│ └── start-cli.sh # CLI 启动脚本
├── conf/
│ └── config.yaml # 默认配置
├── data/ # 运行时数据(例如 WASM 缓存)
└── logs/ # 日志目录(运行时创建)
我们提供了一个强大的 Shell 脚本来管理服务器进程,能够处理环境注入、守护进程化和配置覆盖。
用法:
./bin/start-server.sh [选项]选项:
| 选项 | 描述 |
|---|---|
-d, --daemon |
在后台运行服务器(守护进程模式)。 |
-c, --config <path> |
指定自定义配置文件路径。 |
-D <KEY>=<VALUE> |
注入环境变量(例如 -D RUST_LOG=debug)。 |
示例:
-
前台模式 (Docker / 调试) — 在当前 Shell 中运行服务器。适用于容器化环境 (Kubernetes/Docker) 或调试。
./bin/start-server.sh
-
守护进程模式 (生产) — 在后台运行服务器,将 stdout/stderr 重定向到
logs/。./bin/start-server.sh -d
-
自定义配置 — 使用特定配置文件启动。
./bin/start-server.sh -d -c config/config.yml
| 命令 | 描述 |
|---|---|
make clean |
深度清理。删除 target/、dist/、.venv/ 和所有临时产物。 |
make env-clean |
仅删除 Python 虚拟环境和 Python 产物。 |
make test |
运行 Rust 测试套件。 |
| 文档 | 描述 |
|---|---|
| 服务端配置与运维指南 | 服务端配置与运维操作 |
| Function 任务配置规范 | 任务定义规范 |
| SQL CLI 交互式管理指南 | 交互式管理指南 |
| Function 管理与开发指南 | 管理与开发指南 |
| Python SDK 开发与交互指南 | Python SDK 指南 |
运行时行为由 conf/config.yaml 控制。您可以使用环境变量覆盖配置位置:
export FUNCTION_STREAM_CONF=/path/to/custom/config.yamlLicensed under the Apache License, Version 2.0. See LICENSE for details.