编排 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

编排

在这种方法中,单个编排工具负责调用每个微服务,确定是按顺序还是并行发出调用,在整个过程中操作各个服务的响应,并编译最终结果。编排工具可以组合使用同步和异步调用。

AWS Step FunctionsAmazon Managed Workflows for Apache Airflow(Amazon MWAA)非常适合工作流编排工具。

当流程中存在逻辑分支,且需要在一个位置封装该逻辑时,编排机制是不错的选择。当您需要实施异步声明检查模式时,此方法同样非常有用。例如,Step Functions 中的标准工作流可以暂停工作流并等待来自其他服务的回调。使用编排工具还可以改善流程的监控和可观测性。

示例:Step Functions

您可以使用 Step Functions 来协调多个 Lambda 函数和其他函数 AWS 服务,为微服务集成构建复杂的工作流程。此选项对于涉及多个微服务、运行时间较长且包含多个步骤的流程尤为有用。

若为以下情况,应考虑使用 Step Functions:

  • 微服务集成涉及复杂的多步骤流程。

  • 您需要在长期运行的操作中保持状态。

  • 您想在工作流层级实施错误处理和重试逻辑。

  • 你需要同时协调同步和异步操作。

Step Functions 提供可视化编辑器用于设计复杂的工作流,从而简化状态机的创建与管理流程。它提供内置的错误处理机制,包括重试逻辑和错误状态管理,从而增强了应用程序的可靠性和稳健性。标准工作流支持最长达一年的长期运行流程,适用于跨越较长时间段的工作流。此选项将编排逻辑和应用程序代码分开,因此可以显著降低代码的复杂性。这意味着开发人员只需专注于核心业务逻辑,而 Step Functions 则负责分布式组件的流量控制与协调。

例如,考虑金融服务应用程序中的贷款审批流程,如下图所示。此流程从提交贷款申请时开始。

用于构建 AWS Step Functions 用于微服务集成的复杂工作流程。

在上图所示的状态机中,Step Functions 编排了以下步骤:

  • 验证应用程序数据(Lambda 函数)

  • 检查信用评分(调用外部 API 的 Lambda 函数)

  • 评测风险(Lambda 函数)

  • 如果风险很高,转至手动审查(人工审批任务)

  • 如果获得批准,启动贷款发放(Lambda 函数)

  • 向申请人发送通知(Amazon SNS)

可以采用这种方法来可靠地管理复杂且可能长期运行的流程,内置错误处理功能,并能同时包含自动化和手动步骤。

注意事项:

  • 请精心设计状态机,以处理所有可能的状况。

  • 尽可能并行执行步骤。

  • 使用 Step Functions 中内置的错误处理与重试机制处理永久和临时故障。

  • 根据您的使用案例,考虑使用标准或快速工作流。对于短周期或高吞吐量的流程,快速工作流可能是更优的选择。

  • 监控执行指标以优化工作流。

  • 使用嵌套的工作流在多个状态机之间封装和重复使用功能。

  • 对于复杂的工作流,可以考虑使用 Amazon Bedrock 代理作为 Step Functions 的替代方案。

有关更多信息,请参阅 Step Functions 文档

示例:Amazon MWAA

如果您的组织已经在使用 Apache Airflow,Amazon MWAA 将自然而然地用作工作流编排工具。在 Apache Airflow 中,你可以使用 Python 将工作流程构建为有向无环图 DAGs ()。Step Functions 部分所示状态机的 DAG 表示形式可能如下所示:

使用 Amazon MWAA 和构建 DAGs 用于微服务集成的复杂工作流程。

有关使用的信息 DAGs,请参阅 Amazon MWAA 文档。

Step Functions 与 Amazon MWAA 的主要区别

  • Step Functions 是一项完全托管式无服务器服务,无需预置基础设施,也无需安排维护时段。必须提前部署 Amazon MWAA,然后选择集群中的节点大小和数量。

  • 在 Step Functions 中,您可以通过多种方式编写状态机,包括使用 Workflow Studio、直接以 JSON 格式编写,或者使用 AWS Cloud Development Kit (AWS CDK)。Apache A DAGs irflow 是用 Python 编写的。

  • 使用 Step Functions 时,若无工作流在运行,不会产生任何费用。使用 Amazon MWAA,即使没有 DAGs 运行,您也会产生费用。