# Flownode

> Flownode 概览，一个为数据库提供 Flow 计算能力的组件，包括 batching mode、已废弃的 streaming mode 和核心组件。

# Flownode

## 简介

`Flownode` 为数据库提供 Flow 计算能力。
`Flownode` 管理 `flow`，这些 `flow` 是从 `source` 接收数据并将数据发送到 `sink` 的任务。

`Flownode` 支持 `standalone`（单机）和 `distributed`（分布式）两种模式。在 `standalone` 模式下，`Flownode` 与数据库运行在同一进程中。在 `distributed` 模式下，`Flownode` 运行在单独的进程中，并通过网络与数据库通信。

一个 flow 有两种执行模式：
- **批处理模式 (Batching Mode)**: 持续数据聚合当前使用的模式。它在离散的、微小的时间窗口上周期性地执行用户定义的 SQL 查询。聚合和 TQL 查询使用此模式。更多详情，请参阅[批处理模式](./batching_mode.md)。
- **流处理模式 (Streaming Mode，已废弃)**: 原始的模式，数据在到达时即被处理。该模式保留用于兼容旧 workload，不推荐新 workload 使用。

## 组件

`Flownode` 包含了执行一个 flow 所需的所有组件。所涉及的具体组件取决于执行模式。在较高的层面上，关键部分包括：

- **Flow Manager**: 一个负责管理所有 flow生命周期的中心组件。
- **Task Executor**: flow 逻辑执行的运行时环境。在批处理模式下，它是一个 `BatchingTask`；在已废弃的流处理模式下，这通常是一个 `FlowWorker`。
- **Flow Task**: 代表一个独立的、单个的数据流，包含将数据从 source 转换为 sink 的逻辑。
