Dora-rs 是一个用于构建低延迟、可组合、分布式数据流应用程序的框架。本文概述 Dora 框架的系统架构、执行模型和主要功能,并详细介绍各个模块的细节。

请添加图片描述

Dora 概述

Dora-rs(面向数据流的机器人架构)是一个基于 Rust 的框架,支持跨多种语言和机器创建高效的数据流应用程序。
它遵循声明式数据流范式,将任务拆分到独立的进程中,从而创建一个抽象层,使应用程序模块化且易于配置。

系统架构

Dora 由几个核心组件组成,它们协同工作以定义、分发和执行数据流。
控制平面:控制平面管理数据流的生命周期,并协调其在机器之间的执行。
执行平面: 执行平面负责在各个​​机器上运行数据流节点 (Node)。

添加图片注释,不超过 140 字(可选)

Dora 核心组件

1. coordinator 是一个中央编排服务:

•管理数据流的生命周期
•跟踪可用的Dameon
•将 node 分配到合适的机器
•在Dameon之间路由通信
•收集和分发日志
dora-coordinator 维护 Dameon 连接和正在运行的数据流的注册表,使其能够就node 部署位置以及如何管理整个系统做出明智的决策。

2. daemon 在 Dora 网络中的每台机器上运行:

•在其机器上生成和管理 nodes
•监控 node 健康状况并向dora-coordinator报告状态
•处理nodes间的通信
•管理本地资源,例如共享内存
dora-daemon将特定于机器的细节从dora-coordinator中抽象出来,从而提供统一的执行环境,不受底层硬件的限制。

3. runtime负责执行各个node和算子:

•加载并执行算子代码
•管理算子之间的数据流
•实现 node 生命周期
•提供特定语言的绑定
dora-runtime 可以执行不同类型的 nodes,包括自定义独立进程和进程内算子,并支持多种编程语言。

4. cli 提供与 Dora 交互的用户界面:

•启动和停止数据流
•监控数据流状态
•显示日志
•生成可视化效果
•创建项目模板

Dora 核心组件之间关系

添加图片注释,不超过 140 字(可选)

Node 类型

添加图片注释,不超过 140 字(可选)

Custom Node:通过 Node API 与 Dora 通信的外部可执行文件
Runtime Node:在 Dora Runtime 中托管 operator 的节点

Node 的输入输出

节点通过输入和输出进行通信:
输出:节点生成的数据,由 DataId 标识
输入:节点消费的数据,由 DataId 标识并映射到源

输入映射可以分为以下两种类型:

1.用户映射:将输入映射到另一个节点的输出

inputs:
image:
source: camera
output: frame

2.定时器映射:按指定间隔生成周期性事件

inputs:
tick:
interval: 1000# milliseconds

Node 执行

Node 的执行遵循以下常规生命周期:
•Spawn:守护进程创建进程或加载Node代码
•Configure:配置Node的输入、输出和其他参数
•Ready: Node向守护进程发出就绪信号
•Start:所有Node就绪,开始数据处理
•Process: Node接收输入并产生输出
•Stop:指示Node停止(正常或强制停止)

Node之间通信

Dora 通过不同的机制实现 Node 间的高效通信,具体机制取决于Node的位置:

1. 本地通信(同一台机器):

•使用共享内存(通过共享内存服务器 crate)
•为大数据传输提供零拷贝访问
•处理队列管理

2. 远程通信(不同机器):

•使用 Zenoh 协议实现高效的数据分发
•支持包括点对点在内的多种路由模式
•处理网络发现和连接管理

Daemon 会根据连接 node 的位置自动选择合适的通信机制,使整个过程对用户透明。

Node 通信方法选择

定义数据流时,每个Node都会指定其通信方法首选项。

Dameon会根据配置确定适当的方法:

添加图片注释,不超过 140 字(可选)

Node-到-Dameon 的通信

所有 Node 到 Dameon 的通信都遵循请求-应答模式,无论使用何种传输机制。

通信的建立

1.Node 通过所选协议连接到 Dameon
2.Node 发送包含其数据流 ID 和Node ID 的注册请求
3.Dameon 验证版本兼容性
4.如果成功,则建立双向通信通道

添加图片注释,不超过 140 字(可选)

共享内存通信

为了获得最佳性能,当Node位于同一台机器上时,Dora 会使用共享内存。

共享内存区

每个Node都会创建四个共享内存区域如下

•控制区域 - 用于常规控制消息
•事件区域 - 用于Node间的数据事件
•删除区域 - 用于内存管理事件
•事件关闭区域 - 用于处理事件流闭包

添加图片注释,不超过 140 字(可选)

跨-机器的 Node 通信

•不同机器Node通过各自的Dameon进行通信,这些Dameon使用 TCP 连接。

Dameon-Coordinator 之间的通信

Coordinator 负责协调不同机器上的 Dameon 之间通信。

添加图片注释,不超过 140 字(可选)

。。。。。。待续。。。。。。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐