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 的集群管理,支持标签调度和滚动升级。
WebSocket 控制平面
Coordinator 通过持久 WebSocket 连接管理所有 Daemon
集群部署
通过 dora cluster up 跨机器部署 — 无需 Kubernetes
零拷贝 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 文件。支持按节点选择性录制或全图录制。
以任意速度回放录制数据 — 0.1x 用于逐步调试,10x 用于快速回归测试。
在回放期间替换节点,使用录制的真实输入测试新逻辑。
时间旅行调试
录制一次,永久调试
在现场捕获数据,在实验室无限回放。逐步执行精确的消息序列, 替换单个节点以使用真实数据测试新算法, 无需部署到硬件即可运行回归测试套件。
离线硬件调试
无需运行物理硬件即可调试整个传感器到执行器的流水线。从录制中回放精确的相机帧、激光雷达扫描和 IMU 数据。
CI 回归测试
录制黄金数据集,在 CI 中回放。自动检测算法变更是否产生不同输出。与 dora replay --assert 集成。
时间戳精确回放
回放时保留原始时序关系。变速播放从 0.1x 慢动作到 100x 快进。
容错机制
为恢复而生
按节点配置重启策略、指数退避、健康监控和持久化协调器状态。 即使单个节点故障,数据流也能持续运行。
重启策略
按节点选择 never、on-failure 或 always。在 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 序列化 |
应用场景
为真实工作负载而生
自主机器人
感知、规划和控制节点通过零拷贝共享内存连接。无需重写现有节点即可添加新传感器或执行器。
AI 流水线
将摄像头、目标检测、LLM 推理和动作节点串联为单一数据流。Python 用于 AI 模型,Rust 用于实时控制。
语音助手
流式 ASR、LLM 生成和 TTS,通过队列刷新实现实时中断。Action 模式支持长时间对话。
分布式仿真
在集群上运行仿真节点。以任意速度录制和回放场景,无需物理硬件即可进行回归测试。
工业自动化
PLC 接口、传感器融合和控制逻辑,配合容错机制。指数退避和健康监控保障生产线持续运行。
研究与原型开发
用 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 和容错机制,无需重写现有节点。