Dora
智能数据流导向机器人架构 (Agentic Dataflow-Oriented Robotic Architecture) – 一个 100% Rust 的实时机器人与 AI 应用框架。
为什么选择 Dora?
性能
- 比 ROS2 Python 快 10-17 倍 – 100% Rust 内核,>4KB 的消息使用零拷贝共享内存 IPC,4KB 到 4MB 负载下延迟保持平稳
- Apache Arrow 原生 – 端到端列式内存格式,零序列化开销;所有语言绑定共享
- Zenoh SHM 数据面 – 节点通过 Zenoh 共享内存直接发布,零拷贝数据传输;跨机自动网络回退
- 非阻塞事件循环 – Zenoh 发布卸载到排水任务;指标收集在后台运行
开发者体验
- 单一 CLI,完整生命周期 –
dora run用于本地开发,dora up/start用于分布式生产,构建、日志、监控、录制/回放等全部集成在一个工具中 - 声明式 YAML 数据流 – 以有向图定义流水线,通过类型化输入/输出连接节点,支持可选的类型注解和静态校验
- 多语言节点 – 使用 Rust、Python、C 或 C++ 编写节点,均为原生 API(非封装层);可在同一数据流中自由混用
- 可复用模块 – 将子图组合为独立的 YAML 文件,支持类型化输入/输出、参数与嵌套组合
- 热重载 – 无需重启数据流即可实时重载 Python 算子
Production Readiness
- 容错 – 按节点配置重启策略(never/on-failure/always),指数退避,健康监控,带可配置输入超时的断路器
- 默认分布式 – 同机节点之间使用本地共享内存,跨机器通信自动使用 Zenoh 发布/订阅,基于 SSH 的集群管理与标签调度
- Coordinator HA – persistent redb state store, daemon auto-reconnect, dataflow records survive coordinator restart (full running-dataflow reclaim across restart is partial; see open tracker)
- 动态拓扑 – 通过 CLI 在运行中的数据流上添加和删除节点,无需重启
- 可配置队列策略 – 每个输入支持
drop_oldest(默认)或backpressure,并附带丢弃消息的指标 - 软实时 – 可选
--rt标志启用 mlockall + SCHED_FIFO;每节点cpu_affinity绑核 - OpenTelemetry – 内置带轮转/路由的结构化日志、指标、分布式追踪
Debugging and Observability
- Record/replay – capture dataflow messages to
.drecfiles, replay offline at any speed with node substitution - 主题检查 –
topic echo打印实时数据,topic hzTUI 进行频率分析,topic info查看 schema 和带宽 - 资源监控 –
dora topTUI 显示所有机器上每个节点的 CPU、内存、队列深度、网络 I/O - 日志聚合 – 订阅
dora/logs即可接收所有节点的结构化日志消息,无需额外配置 - 追踪检查 –
trace list和trace view用于查看协调器的 span,无需外部基础设施
Ecosystem
- 通信模式 – 通过约定的元数据键内置 service (请求/应答)、action (目标/反馈/结果) 和 streaming (会话/片段/块) 模式
- ROS2 桥接 – 与 ROS2 主题、服务和动作双向互操作
- 进程内算子 – 在共享运行时中运行的轻量级函数,避免每节点的进程开销