|
|
|
@@ -4,31 +4,31 @@ |
|
|
|
|
|
|
|
`节点`和`操作符`都需要一种方法来感知需要关注的事件发生——例如新数据到达或停止命令。它们是如何接收这些重要通知的? |
|
|
|
|
|
|
|
这就是 **`事件流`** 发挥作用的地方。 |
|
|
|
这就是 **`Event Stream` 事件流** 发挥作用的地方。 |
|
|
|
|
|
|
|
## 节点(或操作员)的收件箱 |
|
|
|
## 节点(或操作符)的收件箱 |
|
|
|
|
|
|
|
想象一下,一个节点或操作员就像一个坐在办公桌前准备处理任务的微型办公室职员。他们不会随意开始工作;他们需要被告知新任务何时到来以及任务是什么 。 |
|
|
|
想象一下,一个节点或操作符就像一个坐在办公桌前准备处理任务的微型办公室职员。他们不会随意开始工作;他们需要被告知新任务何时到来以及任务是什么 。 |
|
|
|
|
|
|
|
`事件流`就像是节点或操作员的收件箱或通知源 。它是一个连续的消息流,告知工蜂完成工作所需的一切信息。 |
|
|
|
`事件流`就像是节点或操作符的收件箱或通知源 。它是一个连续的消息流,告知工蜂完成工作所需的一切信息。 |
|
|
|
|
|
|
|
无论您的代码是作为独立节点进程运行还是作为运行时节点内的操作员运行,它都会通过其专用`事件流`接收信息。 |
|
|
|
无论您的代码是作为独立节点进程运行还是作为运行时节点内的操作符运行,它都会通过其专用`事件流`接收信息。 |
|
|
|
|
|
|
|
## 事件流中包含哪些类型的消息? |
|
|
|
|
|
|
|
事件流不仅仅用于传入数据。它包含不同类型的消息, `dora` 称之为 **“事件”** 。这些事件会告诉您的节点或操作员数据流和系统中正在发生的事情。 |
|
|
|
事件流不仅仅用于传入数据。它包含不同类型的消息, `dora` 称之为 **“事件”** 。这些事件会告诉您的节点或操作符数据流和系统中正在发生的事情。 |
|
|
|
|
|
|
|
以下是您通常会在信息流中发现的主要事件类型: |
|
|
|
|
|
|
|
- **INPUT:** 这是最常见的事件。它表示新数据已到达节点(或算子)定义的某个输入。该事件将包含数据本身,并告知您数据来自哪个输入。这就是节点和算子接收需要处理的数据的方式。 |
|
|
|
- **InputClosed:** 此事件表示节点(或算子)的某个输入源已关闭或断开连接。如果正在为此输入生成数据的节点/算子完成其工作或崩溃,则可能会发生这种情况。您的代码可能需要对此做出反应,例如在关键输入丢失时优雅地关闭。 |
|
|
|
- **STOP:** 此事件是来自 `dora 运行时`的命令,告知 `Node` 或 `Operator` 关闭。当您使用 `dora CLI` 停止数据流,或者数据流自然结束时(例如,所有输入都关闭,没有其他工作要做)时,就会发生这种情况。您的代码应该监听此事件并干净地退出。 |
|
|
|
- **RELOAD:** 此事件表示节点或操作员应重新加载其配置或逻辑(如果支持热重载)。这是一项高级功能,允许在不完全重启的情况下更改数据流。 |
|
|
|
- **RELOAD:** 此事件表示节点或操作符应重新加载其配置或逻辑(如果支持热重载)。这是一项高级功能,允许在不完全重启的情况下更改数据流。 |
|
|
|
- **ERROR:** 表示事件流本身发生了不可恢复的错误。 |
|
|
|
|
|
|
|
## 节点和操作员如何监听流 |
|
|
|
## 节点和操作符如何监听流 |
|
|
|
|
|
|
|
您的节点或操作员代码使用您选择的语言的 `dora API 绑定`与事件流进行交互(我们将在第 6 章:API 绑定中介绍 API)。 |
|
|
|
您的节点或操作符代码使用您选择的语言的 `dora API 绑定`与事件流进行交互(我们将在第 6 章:API 绑定中介绍 API)。 |
|
|
|
|
|
|
|
典型的模式是进入一个循环,反复向事件流询问“下一个”事件。然后,代码检查事件的类型及其详细信息,以决定采取什么操作。 |
|
|
|
|
|
|
|
@@ -108,6 +108,6 @@ print("Node stopping gracefully.") |
|
|
|
|
|
|
|
`事件流` 是 `dora` 中的一个基本概念。它是节点和操作符接收其运行所需的所有信息的重要通信渠道,包括传入数据 ( `INPUT` )、输入源关闭信号 ( `InputClosed` ) 以及系统命令( `STOP` 、 `RELOAD` )。通过监听此事件流,您的节点和操作符代码可以动态地响应数据流的状态。`dora` 运行管理这些事件流,并根据数据流蓝图将事件传递给相应的节点和操作符。 |
|
|
|
|
|
|
|
现在您已经了解了节点和操作员如何接收通知,让我们仔细看看 `INPUT` 事件中经常包含的 **`DataMessage/Arrow Data 数据`** 本身 。 |
|
|
|
现在您已经了解了节点和操作符如何接收通知,让我们仔细看看 `INPUT` 事件中经常包含的 **`DataMessage/Arrow Data 数据`** 本身 。 |
|
|
|
|
|
|
|
**内容编写** : **`李扬`** |
|
|
|
内容编写 : **`李扬`** |