Workflows 概览

Workflows 是一个全代管式编排平台,可按您定义的顺序执行服务,即工作流。这些工作流可以组合使用如下服务:托管在 Cloud Run 或 Cloud Functions 上的自定义服务、Cloud Vision AI 和 BigQuery 等 Google Cloud 服务,以及任何基于 HTTP 的 API。

通过将 Workflows 整合到解决方案中,您可以端到端地将服务依赖项设为显式且可观察。指定应用、运维或业务流程的工作流为流程提供了可靠来源或规范叙事。

Workflows 采用无服务器模式,可按需纵向扩容,空闲期间不会产生任何费用。由于工作流不包含代码或库依赖项,因此不需要安全补丁程序。部署工作流后,您可以可靠地执行工作流,而无需维护。工作流可以保留状态、重试、轮询或等待长达一年的时间。

Workflows 符合这些认证和标准

下图展示了使用 Workflows 编排服务的示例:

使用 Workflows 编排服务

关键使用场景

Workflows 支持许多使用场景。以下是一些示例:

服务编排 通过组合服务来创建解决方案 - 跨多个系统执行一系列操作,并等待所有操作完成。可以由事件驱动。例如:
  • 将新上传的文件发送到 Cloud Vision AI,然后将标记写入 Firestore
  • 调用 Cloud Functions 函数并将结果发送到 Cloud Run 服务
批量作业 对多项执行操作 - 对一组项或批量数据执行操作。通常会安排。例如:
  • 每天发送客户电子邮件
  • 准备并运行 BigQuery 或机器学习作业
  • 生成报告
业务流程 自动执行业务线工作流 - 对业务流程中的步骤(包括条件、操作和人机协同事件)进行编码。例如:
  • 从请求到履单跟踪订单
  • 自动执行资源请求(含批准)
IT 流程自动化 代管式执行服务操作 - 轻松编写 Google Cloud 服务操作序列的脚本。例如:
  • 预配新的租户项目或基础架构
  • 按计划或通过事件触发器关停资源

核心概念

工作流由使用 Workflows 语法描述的一系列步骤组成,可以使用 YAML 或 JSON 编写。这是工作流的定义。如需详细了解 Workflows 语法,请参阅语法参考文档

工作流创建完毕后即会进行部署,这样工作流便可以执行。了解如何在 Google Cloud 控制台中或使用 Google Cloud CLI 创建和更新工作流。您还可以使用首选 IDE 或源代码编辑器,并设置自动补全和语法验证来创建工作流。

执行是指单次运行工作流定义中包含的逻辑。尚未执行的工作流不会产生费用。所有工作流都将独立执行,并且产品的快速扩缩允许执行大量并发执行。 要执行工作流,您可以使用客户端库、在 Google Cloud 控制台中使用 Google Cloud CLI,也可以使用 Workflows REST API 向工作流的调用网址发送 HTTP POST 请求。如需了解详情,请参阅执行工作流

主要功能

以下是 Workflows 的一些关键功能。

执行控制

步骤
如需创建工作流,请使用 Workflows 语法定义所需的步骤和执行顺序。每个工作流都必须至少有一个步骤。默认情况下,Workflows 会将步骤视为位于有序列表中,并一次执行一个步骤,直到所有步骤都运行完毕。有关详情,请参阅步骤
条件
您可以使用 switch 块作为选择机制,以允许表达式的值控制工作流的执行流。如需了解详情,请参阅条件
迭代
您可以使用 for 循环遍历一系列数字或一组数据(如列表或映射)。如需了解详情,请参阅迭代
并行步骤
您可以使用 parallel 步骤来定义工作流中可以并发执行的一部分(分支或循环)。如需了解详情,请参阅并行步骤
子工作流
子工作流的工作方式与编程语言的例程或函数类似,您可以封装工作流将会多次重复执行的一个步骤或一组步骤。 如需了解详情,请参阅子工作流

触发执行

手动
您可以使用 Google Cloud 控制台通过 Google Cloud CLI 控制台或命令行管理工作流。您还可以通过 Google Cloud 控制台在修改 Workflows 语法时使用可视化功能。
程序化
Workflows API 的 Cloud 客户端库或 REST API 可用于管理工作流。如需了解详情,请参阅 Workflows API 和参考文档
定期
您可以使用 Cloud Scheduler 按特定时间表运行工作流,例如每个星期一上午 9 点或每 15 分钟运行一次工作流。如需了解详情,请参阅使用 Cloud Scheduler 安排工作流
运行时参数
可通过在主工作流中添加 params 字段(放置在 main 块中)访问在运行时传递的数据。main 块接受任何有效的 JSON 数据类型的单个参数。params 字段指定工作流用于存储您传入数据的变量。如需了解详情,请参阅运行时参数

连接服务

HTTP API
您可以定义执行 HTTP 调用的工作流步骤,并将调用的响应分配给变量。例如,您可以通过 HTTP 请求调用 Google Cloud 服务(例如 Cloud Functions 或 Cloud Run)。HTTP 和 HTTPS 请求均受支持。如需了解详情,请参阅发出 HTTP 请求调用 Cloud Functions 或 Cloud Run
您可以通过启用 Identity-Aware Proxy (IAP) 来调用专用本地、Compute Engine、Google Kubernetes Engine (GKE) 或其他 Google Cloud 端点。IAP 可让您为通过 HTTPS 访问的应用建立中央授权层,以便您可以使用应用级访问权限控制模型,而不是依赖网络级防火墙。如需了解详情,请参阅调用专用本地、Compute Engine、GKE 或其他端点
或者,您可以将 Service Directory 的服务注册表与 Workflows 搭配使用,以通过工作流执行将 HTTP 调用定位到专用端点。通过在 Virtual Private Cloud (VPC) 网络中创建专用端点,该端点可与 VPC Service Controls 兼容。如需了解详情,请参阅调用符合 VPC Service Controls 规范的专用端点
连接器
Workflows 发布连接器,这些连接器可用于连接到工作流内的其他 Google Cloud API,以及将工作流与这些 Google Cloud 产品集成。它们会为您处理请求的格式,从而为您处理请求的格式设置并提供方法和参数,这样您就无需了解 Google Cloud API 的详细信息。如需了解详情,请参阅了解连接器
标准库和环境变量
借助 Workflows 标准库、内置环境变量和用户定义的环境变量,您可以高效地构建服务和处理响应的参数。
标准库包含模块和常用函数,例如用于数据类型和格式转换的函数。无需在工作流中导入或加载库,库函数会立即工作。如需了解详情,请参阅标准库概览
您可以使用内置环境变量访问工作流的环境信息(例如其位置或项目标识符)。内置环境变量不需要声明,并且每次执行工作流时都可以使用。如需了解详情,请参阅内置环境变量
部署工作流时,您可以将任意键值对设置为用户定义的环境变量,以供工作流在运行时访问。例如,您可以创建一个根据部署环境动态配置的工作流。如需了解详情,请参阅使用环境变量

错误处理

您可以透过使用 Workflows 的异常处理(包括采用指数退避算法进行的自动 HTTP 调用重试、自定义错误处理程序及其他高级功能),使工作流具有弹性并自定义其发生故障时的行为。如需了解详情,请参阅工作流错误

等待中

回调允许工作流执行操作等待其他服务向回调端点发出请求;该请求将继续执行工作流。借助回调,您可以告知工作流指定事件已发生,然后等待该事件而不进行轮询。如需了解详情,请参阅等待使用回调

您可以通过向工作流的定义添加休眠步骤来暂停工作流的执行。然后,您可以使用 sys.sleep 来轮询给定时间间隔内的数据。如需了解详情,请参阅等待使用轮询

身份验证和访问控制

由于每个工作流执行都需要进行经过身份验证的调用,因此您可以使用 Workflows 来降低意外或恶意调用的风险。您还可以使用基于 IAM 的服务帐号来简化与其他 Google Cloud API 的交互,并使用 Secret Manager 连接器安全地存储密钥和密码,以便向外部 API 进行身份验证。如需了解详情,请详细了解身份验证访问权限控制

可观测性

Workflows 会自动为 Cloud Logging 中的工作流执行生成执行日志。通过调用日志记录和自定义日志,您还可以控制在工作流执行期间将日志发送到 Logging 的时间。如需了解详情,请参阅将日志发送到 Cloud Logging

审核日志记录信息可通过 Cloud Audit Logs 获取。如需了解详情,请参阅 Workflows 审核日志记录信息

您可以通过步骤条目列表检索指定工作流执行的历史记录。每个条目表示工作流执行中的一个步骤或指令块。步骤条目可以帮助您确定错误来源或优化工作流的性能。

代码示例

您可以在示例页面中找到许多有用的 Workflows 代码示例。

后续步骤