我用 Rust 构建了一个可视化流程引擎——这就是我放弃 Node.js 的原因

发布日期:2026-04-02 10:03:41   浏览量 :0
发布日期:2026-04-02 10:03:41  
0

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

问题所在

我使用 Node-RED 和 n8n 已有多年。它们都是出色的工具,但每次遇到复杂的工作流——包含数百个节点、实时数据、高吞吐量时,总会反复出现同样的问题:

  • 持续负载下内存膨胀
  • 缺乏真正的插件隔离(一个有问题的插件会导致整个系统崩溃)
  • 编辑器中基于 WebSocket 的 JSON 通信成为瓶颈
  • 部署包过于臃肿,依赖大量 npm 包

我一直在思考:如果从零开始构建一个工作流引擎,并将性能与安全性作为首要设计目标,会怎样?

于是我开发了 z8run —— 一个用 Rust 编写的开源可视化工作流引擎。

z8run 是什么?

z8run 是 n8n 和 Node-RED 的自托管替代方案。它提供拖放式可视化编辑器、REST API、WebSocket 实时同步以及插件系统——但整个后端均采用编译后的 Rust 语言编写。

核心理念是:以可视化方式构建、连接并自动化任何任务,同时不牺牲性能或安全性。

主要特性

  • 单文件二进制程序 —— 无需运行时依赖。下载即用,一步到位。
  • Rust + Tokio 异步运行时 —— 可处理数千个并发工作流
  • WebAssembly 插件沙箱 —— 可使用 Rust、Go、C 或任何能编译为 WASM 的语言编写插件。插件在隔离的沙箱中运行,并具备受控的能力(如网络访问、文件系统操作、内存限制等)
  • 二进制 WebSocket 协议 —— 头部仅 11 字节,而非冗长的 JSON。即使处理大型工作流,编辑器依然保持流畅响应
  • AES-256-GCM 凭据保险库 —— 您的 API 密钥和机密信息在存储时已加密,不会以明文形式保存在配置文件中
  • 内置 23 种节点,涵盖 6 大类别,其中包括 10 种 AI 节点

架构设计

z8run 是一个结构清晰的 Rust 工作区,包含多个专注功能的 crate:

z8run/
├── z8run-core       # 工作流引擎、有向无环图(DAG)验证、调度器
├── z8run-protocol   # 二进制 WebSocket 协议
├── z8run-storage    # SQLite / PostgreSQL 持久化存储
├── z8run-runtime    # WASM 插件沙箱(基于 wasmtime)
└── z8run-api        # REST 与 WebSocket 服务器(基于 Axum)

工作流是有向无环图(DAG)。调度器通过拓扑排序将其编译为并行执行计划——彼此无依赖关系的节点可并发执行。

对比分析

特性 z8run Node-RED n8n
编程语言 Rust Node.js Node.js
支持 WASM 插件
内置 AI 节点数量 10 社区提供 有限
通信协议 二进制协议 JSON JSON
凭据保险库 AES-256-GCM 需单独配置 内置
单文件部署
许可证 Apache-2.0 / MIT Apache-2.0 可持续使用许可

最大的区别在于插件模型。在 Node-RED 中,一个行为异常的插件可能导致整个进程崩溃;而在 z8run 中,插件运行于 wasmtime 沙箱内,并需显式授权能力。您可以决定插件是否可以访问网络、文件系统,以及允许使用的内存量。

内置节点

z8run 开箱即用,提供 23 种节点:

  • 输入类:HTTP 输入、

    免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部