什么是SWF?

17 Mar 2025 | 4 分钟阅读
  • SWF代表简单工作流服务
  • 它是一个用于构建可扩展和弹性的应用程序的 Web 服务。
  • 它提供简单的 API 调用,这些调用可以用任何语言编写的代码执行,并且可以在您的 EC2 实例或位于世界任何地方的可以访问互联网的任何机器上运行。例如,您正在构建一个由各种模块组成的应用程序,并且为了协调各个模块,我们依赖于 AWS 中的 SWF。SWF充当协调器,它控制应用程序的所有模块。
  • 它允许您构建应用程序并使其易于协调跨分布式组件的工作。
  • SWF在项目的所有组件之间提供逻辑分离。
  • SWF涉及协调各种任务,例如管理任务间依赖关系、调度和并发性,以符合应用程序的逻辑流程。您不必手动管理任务;SWF会为您完成一切。

让我们通过一个例子来理解。

SWF

假设客户下了订单。

步骤 1: 您必须验证订单。您有您的 EC2 实例,它们会去检查订单是否有库存。一旦订单得到验证,即您有了库存,然后移动到步骤 2。

步骤 2: 现在,它处理信用卡收费。它检查信用卡收费是否成功。

步骤 3: 如果信用卡收费成功,我们将运送订单。运送订单需要人工互动。人工从仓库取货,如果产品已经装箱,这意味着它已准备好发货。

步骤 4: 记录完成是一个数据库,它说产品已经装箱并运送到目的地地址。它还提供跟踪号。这是典型工作流程的结束。

SWF 工作人员和决策者

  • 工作人员是与 Amazon SWF 交互以获取任务、处理收到的任务并返回结果的程序。
  • 决策者是一个程序,它根据应用程序逻辑提供任务协调,例如排序、并发性、调度等。
  • 工作人员和决策者都在云基础设施上运行,例如 Amazon EC2 或防火墙后面的机器。
  • 决策者可以持续查看任务的进度并启动新任务,而 Amazon SWF 存储任务并将它们分配给工作人员进行处理。
  • Amazon SWF 确保任务只分配一次,并且永不重复。
  • 工作人员和决策者不必跟踪执行状态,因为 Amazon SWF 持久维护状态。
  • 工作人员和决策者都独立运行并快速扩展。

SWF 域

  • 域是容器,用于将一组类型、执行和任务列表与其他帐户中的其他类型、执行和任务列表隔离开来。
  • 工作流程、活动类型和工作流程执行都限定于一个域。
  • 您可以使用 AWS 管理控制台或 Amazon SWF API 中的 RegisterDomain 操作来注册域。

参数以 JSON (Javascript 对象表示法) 格式指定。 格式如下所示

其中,

workflowExecutionRetentionPeriodInDays定义保留期天数。

注意:最大工作流程可以为 1 年,其值以秒为单位衡量。

SQS 和 SWF 之间的区别

  • Amazon SWF 提供面向任务的 API,而 Amazon SQS 提供面向消息的 API。/li>
  • Amazon SWF 确保任务只分配一次并且永不重复。使用 Amazon SQS,消息可以重复,并且它可能还需要确保消息只处理一次。/li>
  • SWF 跟踪应用程序中的所有任务和事件,而 SQS 在应用程序使用多个队列时实现其自己的应用程序级别跟踪。

SWF 的特点

SWF
  • 可扩展
    Amazon SWF 会根据您的应用程序使用情况自动扩展资源。当您添加更多云工作流程或增加工作流程的复杂性时,无需手动管理工作流程服务。
  • 可靠
    Amazon SWF 在 Amazon 的高可用性数据中心运行,因此只要应用程序需要状态跟踪,就可以提供状态跟踪。Amazon SWF 存储任务,将它们发送到它们各自的应用程序组件,并跟踪它们的进度。
  • 简单
    Amazon SWF 完全取代了旧工作流程解决方案和流程自动化软件的复杂性,并提供了新的云工作流程互联网服务。它消除了开发人员管理自动化流程的需要,以便您可以专注于应用程序的独特功能。
  • 逻辑分离
    Amazon SWF 在后台作业的分步逻辑的控制流和包含业务逻辑的实际工作单元之间提供了逻辑分离。由于逻辑分离,您可以单独管理、维护和扩展应用程序的“状态机器”与业务逻辑。根据业务需求的变化,您可以轻松管理业务逻辑,而无需担心状态机器、任务调度和流程控制。
  • 灵活
    Amazon SWF 允许您修改应用程序组件,即,您可以用任何编程语言修改应用程序逻辑,并在云端或本地运行它们。

下一主题SNS