Kestra 简介:开源编排和调度平台

22-11-03 banq

公司建立数据管道以准备数据成分、提取见解并在内部和外部各方之间分发调查结果。处理各种海量数据的能力已成为推动业务成功的关键因素。然而,构建和管理数据流并不简单。您必须考虑从不同来源提取数据的时间表和计划。当您最终将原始数据或转换后的数据保存到数据仓库中时,您必须考虑转换、建模和聚合。它很容易成为一项复杂的任务。

为了可靠地运行数据编排和调度,您应该清楚地意识到业务需要一个灵活且易于使用的平台这一事实。

让我们尝试一下,了解更多关于Kestra(一种开源数据编排器)的信息,以了解它如何以及是否可以简化数据流和开发流程。找出主要优点和功能!

包括腾讯、宝马、华为、乐华梅林等大型企业都在使用该平台。Kestra 是开源软件,因此您可以开始尝试并研究以检查编排工具是否适合您的用例,而无需担心试用期。使用开源工具的另一个优点是它可以在任何云服务、本地甚至本地磁盘上进行测试。Kestra 有一个容器化的镜像,可以轻松上手。

Kestra 有两个大概念,每个概念都由较小的组件组​​成 :

Flow流

flow是按命名空间分组的简单任务列表。它存储当前流flow中发生的所有操作。流包含以下组件。

  • 任务:任务是流中的一个动作。任务可以接受输入、执行作业或生成输出。Kestra 中有两种类型的任务。
  • 可流动任务:可流动任务处理工作流状态并启动新任务。他们负责流程的逻辑,这使您可以构建复杂的工作流程,例如分支和并行任务。
  • 可运行任务:可运行任务是实际的计算作业。它可以是任何类型的作业,例如运行脚本、API 调用、文件系统操作、数据库查询等等。
  • 命名空间:命名空间类似于文件系统的文件夹。它用于定义层次结构中的流。
  • 输入:输入是发送到流的参数。您可以在字符串、整数、文件等中传递各种参数。
  • 修订:当您修改时,它会生成一个新的修订。它是一个增量数字,每次更改后都会更新。
  • 监听器:监听器是一类任务,可以监听当前流,并且可以在当前流之外执行任务。
  • 触发器:触发器作为来自外部事件的流的启动器。
  • 模板:模板是可以跨不同流程引用的任务列表。



执行executions
下面的高级概念是执行executions。执行是正在处理或已经完成的流程。

  • 任务运行:这是一个正在运行或已经运行并链接到其状态的任务(输出见下文)。
  • 尝试:单个任务运行可以进行一次或多次尝试。通常,任务运行只会有一次尝试。但是,当任务失败时,它可以添加重试。
  • 输出:任务运行可以产生可以传递给其他任务的输出数据。
  • 指标:任务可以创建可用于跟踪任务状态的指标数据。
  • 状态:状态用于定义任务运行或执行的状态。



灵活的flow定义
在 Kestra 中,可以在 YAML 文件中定义流flow,该文件可用于在不同环境中重现流。由于 YAML 是基础设施即代码服务的常用文件格式,而且使用起来很简单。这会产生很大的不同,因为您可以对流程中的所有更改进行源代码控制,并在构建流程时实现团队协作。在 YAML 中使用 Kestra 的流定义,您可以控制它并应用不同的逻辑。

  • 顺序:您可以按顺序运行任务。
  • 并行:可以同时执行任务。
  • 循环:您可以根据先前任务的输出多次重复任务。
  • 切换:可以根据当前状态分支出流。
  • 暂停:您可以在完成任务后暂停。
  • 触发器:您可以根据事件或其他人的流程结束来启动流程


广泛的 Kestra 插件

Kestra 插件使其具有高度的通用性,并允许您与不同的系统、数据库、服务和软件进行交互。当您评估作业编排工具时,这是最重要的因素之一,因为编排软件不是为了执行例如繁重的数据处理或计算密集型作业而构建的。相反,它将这些工作分配给外部资源。
当您想要转换数据并将其持久化到存储中时,您需要能够在关系数据库、NoSQL、数据仓库甚至云文件系统中连接和运行查询的插件。Kestra 在该领域拥有广泛的覆盖面,包括所有流行的关系和非关系数据库。此外,它还可以与 Redshift、Snowflake 和 Big Query 等流行的数据仓库解决方案以及 AWS S3、GCP、Google Drive 等云文件存储进行通信。
如果您想运行编排的 DevOps 任务,您也可以这样做。您可以使用 Python、Bash 和 Node 中的自定义代码启动 Docker 映像或控制 Kubernetes,以实现高级管道。您可以访问其他现代堆栈,例如 dbt、Soda、Singer 和 Debezium。除了他们支持的所有插件之外,您还可以构建自己的插件!

Kestra 带有一个直观且成熟的用户界面。在基于 Web 的 UI 上,用户可以编辑配置、运行流程并实时监控所有历史和当前执行。

Kestra 支持Terraform集成。使用它,您可以部署流程并在不同的环境(例如开发、UAT、阶段或生产)中重现相同的流程。在 YAML 中定义流、任务和流逻辑的能力使具有 CI/CD 部署的成员之间能够进行可扩展的团队合作。

查看 Kestra Github存储库