Browse Source

docs: add dataflow parameters detail

main
LyonRust 5 months ago
parent
commit
aa9fc6a739
1 changed files with 19 additions and 19 deletions
  1. +19
    -19
      docs/guide/topics/dataflow.mdx

+ 19
- 19
docs/guide/topics/dataflow.mdx View File

@@ -116,7 +116,7 @@
```
* **参数详解**
* **类型**: `Option<RuntimeNode>` / `Option<SingleOperatorDefinition>`
* **含义**: 定义在运行时节点内部署的一个或多个轻量级**操作符**。它的存在标志着该节点是一个算子宿主。
* **含义**: 定义在运行时节点内部署的一个或多个轻量级**操作符**。它的存在标志着该节点是一个操作符宿主。
* **限制条件**: 与 `path` 字段**互斥**;`operators` 和 `operator` 自身也**互斥**。


@@ -273,13 +273,13 @@ pub struct Node {
### `env: Option<BTreeMap<String, EnvValue>>`
* **作用**: 为节点进程(包括构建和运行阶段)设置环境变量。

#### 运行时与算子配置 (Runtime & Operator Configuration)
#### 运行时与操作符配置 (Runtime & Operator Configuration)

### `operators: Option<RuntimeNode>`
* **作用**: **定义运行时节点的关键**。包含一个或多个算子(Operator)的定义。如果一个 `Node` 定义了 `operators` 字段(而没有 `path` 字段),它就成为一个运行时节点。
* **作用**: **定义运行时节点的关键**。包含一个或多个操作符(Operator)的定义。如果一个 `Node` 定义了 `operators` 字段(而没有 `path` 字段),它就成为一个运行时节点。

### `operator: Option<SingleOperatorDefinition>`
* **作用**: `operators` 字段的便利版。当一个运行时节点只包含**一个**算子时,可以使用此字段来简化 YAML 配置。它和 `operators` 是互斥的。
* **作用**: `operators` 字段的便利版。当一个运行时节点只包含**一个**操作符时,可以使用此字段来简化 YAML 配置。它和 `operators` 是互斥的。

#### 数据流连接 (Dataflow Connectivity)

@@ -318,7 +318,7 @@ pub struct Node {
这份最新的 `Node` 定义展示了一个成熟且高度灵活的设计方案:

1. **声明式与配置驱动**: 整个数据流图完全通过 YAML 文件进行声明式定义。`Node` 结构体是这个声明的核心,它是一个纯粹的数据容器,可以被 `serde` 完美地解析。
2. **隐式模式切换**: 通过检查 `path` 与 `operators`/`operator` 字段的存在与否,`dora` 能够智能地推断出节点是应作为独立进程运行,还是作为轻量级算子的宿主运行。这种设计使得 YAML 语法非常直观和扁平。
2. **隐式模式切换**: 通过检查 `path` 与 `operators`/`operator` 字段的存在与否,`dora` 能够智能地推断出节点是应作为独立进程运行,还是作为轻量级操作符的宿主运行。这种设计使得 YAML 语法非常直观和扁平。
3. **构建与源码集成**: 通过 `git` 和 `build` 字段,`dora` 将节点的源码管理和构建过程无缝集成到其工作流中,极大地提升了项目的可移植性和可复现性。
4. **清晰的关注点分离**:
* **身份 (who)**: `id`, `name`, `description`
@@ -396,44 +396,44 @@ nodes:
- resized_image

# --------------------------------------------------------------------------
# 节点 3: 运行时节点 (Runtime Node) - 托管多个算子
# 职责: 作为宿主进程,运行两个轻量级算子
# 节点 3: 运行时节点 (Runtime Node) - 托管多个操作符
# 职责: 作为宿主进程,运行两个轻量级操作符
# 特点: 使用 operators 字段,没有 path 字段。
# --------------------------------------------------------------------------
- id: processing_hub
name: "AI & Data Processing Hub"
description: "这是一个运行时节点,它本身不执行逻辑,而是为其内部的算子提供运行环境。"
description: "这是一个运行时节点,它本身不执行逻辑,而是为其内部的操作符提供运行环境。"

# 注意:没有 path, args, build 等字段,因为它不是一个独立的进程节点。
# 算子定义:
# 操作符定义:
operators:
# 运行时内的第一个算子
# 运行时内的第一个操作符
- id: yolo_detector
name: "YOLOv8 Detection Operator"
description: "对输入的图片运行目标检测算法。"
# 算子的实现代码
# 操作符的实现代码
python: path/to/yolo_operator.py
# 算子的输入
# 操作符的输入
inputs:
image: frame_resizer/resized_image
# 算子的输出
# 操作符的输出
outputs:
- detections # 检测结果
- metadata # 附加元数据

# 运行时内的第二个算子 (设想中的 Rust 算子)
# 运行时内的第二个操作符 (设想中的 Rust 操作符)
- id: aggregator
name: "Data Aggregator Operator"
description: "聚合来自多个源的数据。"
# 设想中的 Rust 共享库算子
# 设想中的 Rust 共享库操作符
shared_library: path/to/libaggregator.so
# 算子的输入
# 操作符的输入
inputs:
# 可以订阅来自其他算子或其他节点的数据
# 可以订阅来自其他操作符或其他节点的数据
yolo_meta: yolo_detector/metadata
camera_log: video_capture/log_stream
# 算子的输出
# 操作符的输出
outputs:
- summary_report

@@ -447,7 +447,7 @@ nodes:
description: "接收所有处理结果并将其打印到控制台。"
path: examples/python-dataflow/nodes/logger.py
# 输入: 演示如何订阅来自不同节点和算子的多个数据流
# 输入: 演示如何订阅来自不同节点和操作符的多个数据流
inputs:
detections_input: processing_hub/yolo_detector/detections
report_input: processing_hub/aggregator/summary_report


Loading…
Cancel
Save