跳至主要內容

流编程

LincZero大约 3 分钟

流编程

FAQ

有没有类似设计的类型库,不限于ts语言

有一些类似设计的库,它们的目标是为了构建可扩展的、模块化的数据处理流程。这些库通常被称为数据流(dataflow)或流程图(flow-based)库。以下是一些在不同编程语言中的实现:

  1. NoFlo (JavaScript/TypeScript): NoFlo 是一个流程图编程框架,用于在 JavaScript 和 TypeScript 中构建可扩展的、模块化的数据处理流程。NoFlo 使用图形图表(graph)表示数据流动,并使用组件(components)对数据进行处理。NoFlo 的组件类似于我们之前讨论的节点。
    • GitHub: https://github.com/noflo/noflo
    • 网站: https://noflojs.org/
  2. Luigi (Python): Luigi 是一个用于构建复杂数据管道的 Python 库。Luigi 使用任务(Task)表示数据处理流程的每个节点,并定义输入(input)和输出(output)数据类型。Luigi 用于构建有向无环图(DAG)来表示数据处理流程,并确保任务正确地执行。
    • GitHub: https://github.com/spotify/luigi
    • 网站: https://luigi.readthedocs.io/en/stable/
  3. Apache NiFi (Java): Apache NiFi 是一个用于构建数据流系统的 Java 应用。NiFi 使用处理器(Processor)表示数据处理节点,并提供丰富的处理器库以支持各种数据处理需求。NiFi 允许用户通过拖放方式在 Web UI 中构建数据流,并提供数据处理过程中的实时监控和可视化。
    • GitHub: https://github.com/apache/nifi
    • 网站: https://nifi.apache.org/
  4. Cpp-Taskflow (C++): Cpp-Taskflow 是一个用于构建并行任务流的 C++ 库。它使用有向无环图 (DAG) 来表示任务之间的依赖关系,并允许用户灵活地定义任务以及任务之间的数据流。Cpp-Taskflow 使用现代 C++(C++17 及以上)编写,具有高性能和易用性。
    • GitHub: https://github.com/taskflow/taskflow
    • 网站: https://taskflow.github.io/
  5. C++ Actor Framework (C++ CAF): CAF 是一个用于构建并发应用的 C++ 库。它提供了一种基于 Actor 模型的编程方式,允许用户创建多个 Actor,并定义 Actor 之间的消息传递。虽然 CAF 不是专为数据处理流程设计的,但你可以使用 Actor 模型来构建模块化的数据处理流程。
    • GitHub: https://github.com/actor-framework/actor-framework
    • 网站: https://actor-framework.org/

这些库和框架都有相似的设计理念,即将数据处理过程分解为多个节点,并通过定义节点的输入和输出类型来构建可扩展的、模块化的数据处理流程。你可以根据自己的需求和使用的编程语言选择合适的库来实现数据处理流程。

其实还有Flowhub、Node-RED

这个 “模块化的数据处理流程” 有专门的术语名称吗(中英)

模块化的数据处理流程在计算机科学中通常被称为 Dataflow Programming(数据流编程)或 Flow-Based Programming(FBP,基于流的编程)。这两个术语有时可以互换使用,它们都强调通过将数据处理过程划分为多个可重用、可连接的组件(或节点)来构建应用程序。

在中文中,这个概念通常被称为 "数据流编程" 或 "基于流的编程"。这种编程范式强调数据在处理过程中的流动性,以及组件(或节点)之间的连接。这些组件可以灵活地组合和重组,以构建复杂的数据处理流程。

参考

一本关于基于流编程 (FBP) 的web书open in new window(这个十分推荐)

其实一般来说我的需求 有向无环图(DAG)就能满足,不过上面这本书介绍的好像是可以有环的