dora dora dora

Agentic Dataflow-Oriented Robotic Architecture

100% Rust 实时机器人和 AI 应用框架。零拷贝共享内存 + Apache Arrow, 比 ROS2 快 10-17 倍。4 种通信模式,生产级容错,分布式部署。

10-17x 更快 | 4 种模式 | 4 种语言 | 零拷贝

10-17x

快于 ROS2

4

通信模式

4

编程语言

0

拷贝开销

核心能力

为什么选择 dora

10-17x

快于 ROS2

零拷贝性能

通过共享内存 IPC 和 Apache Arrow 列式格式,比 ROS2 快 10-17 倍。4KB 到 4MB 负载延迟持平,Zenoh SHM 数据平面。

4

种模式

4 种通信模式

不仅仅是发布/订阅。内置 Topic、Service(请求/回复)、Action(目标/反馈/结果)和 Streaming(会话/分段/数据块)模式。

4

种语言

多语言 SDK

用 Rust、Python、C 或 C++ 编写节点,原生 API 而非包装器。在单个数据流中自由混合语言,零互操作开销。

容错机制

按节点配置重启策略(never/on-failure/always)、指数退避、健康监控、熔断器、通过 redb 持久化协调器状态。

录制与回放

将数据流消息录制到 .drec 文件。以任意速度离线回放,支持节点替换,用于回归测试和离线调试。

集群管理

通过 SSH 进行分布式部署,支持标签调度、滚动升级和自动恢复。单一 CLI 管理本地开发和多机生产环境。

动态拓扑

通过 CLI 在运行中的数据流中添加和移除节点,无需重启。动态连接和断开节点端口,实时重配置。

全面可观测性

内置 OpenTelemetry,支持结构化日志、指标和分布式追踪。零配置追踪查看、实时 Topic 检查和资源监控 TUI。

智能体工程

由自主 AI 智能体驱动代码生成、审查、重构、测试和提交。

ROS2 与 MAVLink 桥接

双向 ROS2 桥接(实验性),支持 Arrow 原生转换和 QoS 映射;以及 MAVLink 2 桥接(TCP/UDP/串口),用于无人机/机器人互操作。

系统架构

为规模化而设计

四层架构:CLI 通过 WebSocket 编排 Coordinator, Coordinator 管理跨机器的 Daemon,每个 Daemon 运行 Node 和 Operator。 Zenoh 提供零拷贝数据平面。

dora-cli — 构建、运行、管理

dora-coordinator — WebSocket 控制

dora-daemon — 单机管理器

dora-runtime — Operator 引擎

zenoh — 零拷贝数据平面

通信模式

四种通信方式

不仅仅是发布/订阅。dora 通过预定义的元数据键提供 Topic、Service、Action 和 Streaming 模式。 无需修改 Daemon 或 YAML 配置。

Topic

即发即忘的发布/订阅,适用于传感器数据、周期性状态和事件

Service

带 UUID 关联的请求/回复。客户端发送请求,服务端返回一个响应

Action

长时间运行的目标任务,支持周期性反馈和取消

Streaming

带会话/分段/数据块元数据和队列刷新的连续数据流,支持实时中断

分布式

随处运行,全面扩展

同机节点使用本地共享内存,跨机器通信自动切换 Zenoh 发布/订阅。 基于 SSH 的集群管理,支持标签调度和滚动升级。

6013

WebSocket 控制平面

Coordinator 通过持久 WebSocket 连接管理所有 Daemon

SSH

集群部署

通过 dora cluster up 跨机器部署 — 无需 Kubernetes

0

零拷贝 IPC

本地节点使用共享内存,跨机器使用 Zenoh SHM — 零序列化开销

可观测性

全面洞察

内置 OpenTelemetry,支持结构化日志、指标和分布式追踪。 通过 CLI 监控整个集群。

实时监控

dora top

在终端 TUI 中查看所有机器上每个节点的 CPU、内存、队列深度、网络 I/O、重启次数和健康状态。

分布式追踪

dora trace list/view

零配置追踪查看。无需部署 Jaeger 或 Zipkin 即可查看跨节点的分布式追踪。

数据检查

dora topic echo/hz/info

打印实时数据、监控发布频率、检查 Schema 和带宽 — 全部在命令行完成。

录制与回放

捕获、回放、调试

将所有数据流消息录制到 .dora 文件。以任意速度离线回放, 支持节点替换,用于回归测试。

dora record

从任何运行中的数据流捕获实时消息到 .dora 文件。支持按节点选择性录制或全图录制。

dora replay

以任意速度回放录制数据 — 0.1x 用于逐步调试,10x 用于快速回归测试。

节点替换

在回放期间替换节点,使用录制的真实输入测试新逻辑。

时间旅行调试

录制一次,永久调试

在现场捕获数据,在实验室无限回放。逐步执行精确的消息序列, 替换单个节点以使用真实数据测试新算法, 无需部署到硬件即可运行回归测试套件。

离线硬件调试

无需运行物理硬件即可调试整个传感器到执行器的流水线。从录制中回放精确的相机帧、激光雷达扫描和 IMU 数据。

CI 回归测试

录制黄金数据集,在 CI 中回放。自动检测算法变更是否产生不同输出。与 dora replay --assert 集成。

时间戳精确回放

回放时保留原始时序关系。变速播放从 0.1x 慢动作到 100x 快进。

.dora 格式 变速回放 节点替换 离线模式 回归测试 CI 集成 数据检查 时间戳回放 选择性录制 多节点捕获

容错机制

为恢复而生

按节点配置重启策略、指数退避、健康监控和持久化协调器状态。 即使单个节点故障,数据流也能持续运行。

重启策略

按节点选择 neveron-failurealways。在 YAML 中配置最大重试次数和时间窗口。

协调器持久化

通过 redb 持久化状态。重启协调器后,所有 Daemon 自动重连并恢复先前状态。

优雅降级

单个节点故障被隔离。其余数据流在故障节点恢复期间继续正常处理。

性能表现

在关键处极致高效

亚毫秒延迟,共享内存,零拷贝 Arrow 缓冲,四种通信模式。 继承 dora 的全部性能,同时提供完整的编排能力。

维度 dora 1.0 dora 0.x ROS2
延迟 (SHM) ~500us p50 1-10ms
拷贝开销 零 (Arrow) CDR 序列化
通信模式 4 4
容错机制 内置 基础
录制/回放 内置 rosbag
集群管理 内置 手动
动态拓扑 支持 部分支持
可观测性 OpenTelemetry ROS2 日志
编程语言 Rust/Py/C/C++ C++/Py

对比

dora vs dora vs ROS2

dora 基于 dora 的零拷贝数据平面构建,新增了生产部署所需的编排、 容错和可观测性能力。

维度 dora 1.0 dora 0.x ROS2
定义 数据流框架 机器人中间件
延迟 (SHM) ~500us p50 1-10ms
通信模式 4 (Topic/Service/Action/Stream) 4
容错机制 内置重启策略 基础
录制/回放 内置 (.drec) rosbag
集群管理 SSH + 标签 手动
动态拓扑 支持 部分支持
可观测性 OpenTelemetry ROS2 日志
编程语言 Rust/Py/C/C++ C++/Py
零拷贝 Arrow + Zenoh SHM CDR 序列化

应用场景

为真实工作负载而生

01

自主机器人

感知、规划和控制节点通过零拷贝共享内存连接。无需重写现有节点即可添加新传感器或执行器。

零拷贝 SHM 热插拔节点 多语言
02

AI 流水线

将摄像头、目标检测、LLM 推理和动作节点串联为单一数据流。Python 用于 AI 模型,Rust 用于实时控制。

YOLO + LLM GPU 调度 Arrow 缓冲
03

语音助手

流式 ASR、LLM 生成和 TTS,通过队列刷新实现实时中断。Action 模式支持长时间对话。

Streaming 模式 队列刷新 亚秒延迟
04

分布式仿真

在集群上运行仿真节点。以任意速度录制和回放场景,无需物理硬件即可进行回归测试。

录制/回放 集群部署 变速回放
05

工业自动化

PLC 接口、传感器融合和控制逻辑,配合容错机制。指数退避和健康监控保障生产线持续运行。

容错机制 健康检查 滚动升级
06

研究与原型开发

用 YAML 定义数据流,自由混合语言,快速迭代。录制一次真实数据,离线回放用于算法开发。

YAML 数据流 离线回放 快速迭代

快速开始

5 分钟开始

安装 CLI,定义 YAML 数据流,开始处理数据。

# 安装 dora CLI
cargo install dora-cli

# 本地运行数据流
dora run dataflow.yml

# 查看状态
dora list

# 查看日志
dora logs

常见问题

FAQ

dora 1.0 有哪些新功能?

+

dora 1.0 是一次重大发布,在 dora 的零拷贝内核之上新增了 Service(请求/回复)、Action(目标/反馈/结果)和 Streaming 通信模式、基于 WebSocket 的协调器、容错机制(自动重启和状态持久化)、录制/回放、集群管理、动态拓扑和全面的可观测性。dora 0.x 仅支持 Topic 发布/订阅和 TCP 协调器。

dora 和 ROS2 有什么区别?

+

dora 通过零拷贝共享内存和 Apache Arrow 比 ROS2 Python 快 10-17 倍。使用简单的 YAML 定义数据流而非代码生成,支持 Rust/Python/C/C++ 且无需 IDL 文件,并提供内置的集群管理、录制/回放和完整生命周期的单一 CLI。

支持哪些编程语言?

+

dora 为 Rust、Python(通过 PyO3)、C 和 C++(通过 CXX bridge)提供原生 API。所有语言共享相同的 Apache Arrow 数据格式,零序列化开销,可在单个数据流中自由混合语言。

支持哪些通信模式?

+

dora 支持四种模式:Topic(即发即忘的发布/订阅)、Service(带 UUID 关联的请求/回复)、Action(带周期性反馈和取消支持的长时间运行目标)和 Streaming(带会话/分段/数据块元数据和队列刷新的连续数据)。

dora 1.0 可以用于生产环境吗?

+

dora 1.0 目前处于候选发布阶段(1.0.0-rc1),面向生产环境设计:包含容错机制(可配置重启策略)、通过 redb 持久化协调器状态、用于调试的录制/回放、OpenTelemetry 可观测性、带集群管理的分布式部署,以及在所有平台上进行格式化、代码检查、测试和端到端检查的全面 CI。作为候选发布版本,部分能力仍在完善中——例如协调器重启后对运行中数据流的恢复目前是部分支持——建议在依赖它之前先针对自己的工作负载进行验证。

能从 dora 0.x 升级到 1.0 吗?

+

现有的基于 Topic 的数据流基本向后兼容。核心的发布/订阅模型相同,YAML 数据流定义遵循相同的结构。你可以逐步采用新功能如 Service、Action 和容错机制,无需重写现有节点。

5 分钟构建你的第一个数据流

安装 CLI,用 YAML 定义节点,开始处理数据。