Workflows 是一个全代管式编排平台,该平台会按照您定义的顺序执行服务(工作流)。这些工作流可以组合各种服务,包括 Cloud Run 或 Cloud Run functions 上托管的自定义服务、Google Cloud 服务(如 Cloud Vision AI 和 BigQuery)以及任何基于 HTTP 的 API。
通过将 Workflows 整合到解决方案中,您可以端到端地将服务依赖项设为显式且可观察。指定应用、运维或业务流程的工作流为流程提供了可靠来源或规范叙事。
Workflows 采用无服务器模式,可按需纵向扩容,空闲期间不会产生任何费用。由于工作流不包含代码或库依赖项,因此不需要安全补丁程序。部署工作流后,您可以可靠地执行工作流,而无需维护。工作流可以保留状态、重试、轮询或等待长达一年的时间。
Workflows 符合以下认证和标准。
下图展示了使用 Workflows 编排服务的示例:
关键使用场景
Workflows 支持许多使用场景。以下是一些示例:
服务编排 | 通过组合服务来创建解决方案 - 跨多个系统执行一系列操作,并等待所有操作完成。可以由事件驱动。例如:
|
批处理作业 | 对多项执行操作 - 对一组项或批量数据执行操作。通常会安排。例如:
|
业务流程 | 自动执行业务线工作流 - 对业务流程中的步骤(包括条件、操作和人机协同事件)进行编码。例如:
|
IT 流程自动化 | 代管式执行服务操作 - 轻松编写 Google Cloud 服务操作序列的脚本。例如:
|
核心概念
工作流由使用 Workflows 语法描述的一系列步骤组成,可以使用 YAML 或 JSON 编写。这是工作流的定义。如需详细了解 Workflows 语法,请参阅语法参考文档。
工作流创建完毕后即会进行部署,这样工作流便可以执行。了解如何在 Google Cloud 控制台中或使用 Google Cloud CLI 创建和更新工作流。您还可以使用首选的 IDE 或源代码编辑器,并设置自动补全和语法验证来创建工作流。
执行是指单次运行工作流定义中包含的逻辑。尚未执行的工作流不会产生费用。所有工作流都将独立执行,并且产品的快速扩缩允许执行大量并发执行。 如需执行工作流,您可以使用 Google Cloud 控制台中的客户端库、Google Cloud CLI,或使用 Workflows REST API 向工作流的调用网址发送 HTTP POST
请求。如需了解详情,请参阅执行工作流。
区域性
Workflows 是一项区域性服务,工作流是受资源位置限制条件约束的区域性资源。您可以使用资源位置政策来控制数据驻留。
请注意,将工作流部署到特定区域后,该工作流将仅在该区域执行;不过,如果工作流发出任何 HTTP 请求或使用连接器,则 HTTP 调用可能不来自同一区域。
主要功能
以下是 Workflows 的一些关键功能。
执行控制
- 步骤
- 如需创建工作流,您可以使用 Workflows 语法定义所需的步骤和执行顺序。每个工作流都必须至少有一个步骤。默认情况下,Workflows 会将步骤视为有序列表并逐个执行,直到所有步骤都运行完毕。有关详情,请参阅步骤。
- 条件
- 您可以使用
switch
块作为选择机制,以允许表达式的值控制工作流的执行流。如需了解详情,请参阅条件。 - 迭代
- 您可以使用
for
循环遍历一系列数字或一组数据(如列表或映射)。如需了解详情,请参阅迭代。 - 并行步骤
- 您可以使用
parallel
步骤定义可并发执行的工作流部分(分支或循环)。如需了解详情,请参阅并行步骤。 - 子工作流
- 子工作流的工作方式与编程语言的例程或函数类似,您可以封装工作流将会多次重复执行的一个步骤或一组步骤。 如需了解详情,请参阅子工作流。
触发执行
- 手动
- 您可以使用 Google Cloud CLI,通过 Google Cloud 控制台或命令行管理工作流。您还可以在修改 Workflows 语法时通过 Google Cloud 控制台获得可视化支持。
- 程序化
- 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 Run 函数或 Cloud Run)。HTTP 和 HTTPS 请求均受支持。如需了解详情,请参阅发出 HTTP 请求和调用 Cloud Run functions 或 Cloud Run。
- 您可以通过启用 Identity-Aware Proxy (IAP) 来调用私有本地、Compute Engine、Google Kubernetes Engine (GKE) 或其他 Google Cloud 端点。借助 IAP,您可以为通过 HTTPS 访问的应用建立一个中央授权层,从而可以使用应用级访问权限控制模型,而不依赖于网络级防火墙。如需了解详情,请参阅调用专用本地、Compute Engine、GKE 或其他端点。
- 或者,您也可以将 Service Directory 的服务注册表与 Workflows 搭配使用,以便从工作流执行中定位到用于 HTTP 调用的私有端点。通过在虚拟私有云 (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 代码示例。
后续步骤
通过 Google Cloud 控制台或 gcloud CLI 开始使用 Workflows。
详细了解如何创建和更新工作流。
了解如何控制工作流步骤的运行顺序。