为什么选择 SWF?

Amazon Simple Workflow Service(Amazon SWF)帮助开发人员构建、运行和扩展平行或有序运行的后台作业。您不妨将 Amazon SWF 当作是中完全托管的状态追踪器和任务协调器。

如果应用步骤耗时超过 500 毫秒,您就需要追踪处理状态,并且如果任务失败则需要恢复和重试,Amazon SWF 可为您提供帮助。

如果您寻求一种低代码可视化流程服务,用于编排 AWS 服务、自动化业务流程或构建无服务器应用程序,了解关于 AWS Step Functions 的详情。

优势

Amazon SWF 促使后台作业阶梯式逻辑的流程控制与包含唯一业务逻辑的实际工作单元相互分开。这使您独立管理、维护并扩展不同核心业务逻辑中应用的“状态结构”。随着业务要求的变化,您可以轻松地变更应用程序逻辑而无需担心底层的状态结构、任务分派和流程控制。

Amazon SWF 在 Amazon 的高可用性数据中心中运行,因此状态追踪和任务处理引擎可以在应用程序需要时随时可用。Amazon SWF 还会冗余存储任务,可靠地将它们指派到应用程序组件,追踪进度并使其保持最新状态。

Amazon SWF 用完全托管式云流程 Web 服务替代复杂的定制代码流程解决方案和流程自动化软件。开发人员不再需要管理流程自动化的基础设施,可以将精力集中在应用程序的独特功能上。

Amazon SWF 可以随着应用程序的使用进行无缝调节。若要在应用程序中添加更多云流程或增加流程复杂性,无需对流程服务进行人工管理。

Amazon SWF 让您使用任何编程语言进行应用程序组件和协作逻辑编写,并在中或本地运行。

Amazon SWF 产品详情

利用 Amazon SWF 让您轻松管理应用程序的工作流程。

Amazon SWF 功能

Amazon SWF 服务充当您的应用程序各个不同组件的协调中心:

  • 维护应用程序状态
  • 跟踪工作流程执行,并记录其进度
  • 托管和分派任务
  • 控制各个应用程序主机将被指派执行什么任务

要使用 Amazon SWF,您只需:

  • 使用 AWS 管理控制台 或 Amazon SWF API 指定工作存储器的名称。
  • 使用 Amazon SWF API“启动”新的工作存储器,产生称为“工作流执行”的特定工作流任务序列,使其启动。
  • 从您的工作人员计算机使用 Amazon SWF API(“工作人员”指的是处理特定任务的应用程序的组员),确定任务顺序,管理条件流程,并执行工作流程执行的循环。
  • 利用工作人员的计算机使用 Amazon SWF API,请求和执行中或本地的工作流任务。
  • 在 AWS 管理控制台中监控工作流执行和相关任务的状态和进度。

AWS 管理控制台中的示例演示可以引导完成注册和运行示例应用程序的各个步骤。有关更多信息,请参阅文档

详细说明

Amazon SWF 是一个全方位托管的工作流服务,用于构建可扩展、灵活的应用程序。Amazon SWF 提供了简单 API 调用,它们可以通过任何语言编写运行代码,并可在 EC2 实例上运行,或在全球各地能够访问 Internet 的计算机上运行。

Amazon SWF 是一个协调中心,能与您的应用程序主机进行交互。利用Amazon SWF您可创建所需的工作流程,以及相关的任务和您想应用及存储的任何条件逻辑。每次执行工作流程时,它会被视为一个独特的工作流程执行。您需对应用程序组件进行编程来请求工作流执行中要执行的各种任务,Amazon SWF 会协调这些任务,使其按照您指定的顺序在您的主机(无论主机位于云中还是在本地)上完成这些任务。应用程序通过 API 与 Amazon SWF 通信,会记录下任务是成功还是失败的情况。Amazon SWF 会继续执行任务序列,根据您的业务逻辑,将下一个工作流程任务分配给应用程序主机或重新运行失败的任务。

登录 AWS 管理控制台可开始运行Amazon SWF 工作流程执行。此外,也可通过 Amazon SWF API 启动工作流程执行。Amazon SWF 采用简单的 Web 服务接口,不仅易于使用,而且非常灵活:

  • StartWorkflowExecution:启动工作流任务序列,并将第一个任务提供给您的应用程序主机。
  • DescribeWorkflowExecution:展现工作流执行和任务的状态。
  • PollForActivityTask:应用程序主机(云中或本地)以连续循环的模式请求和执行工作流程任务。
  • RespondActivityTaskCompleted:应用程序主机告知 Amazon SWF 它已成功完成某一任务。Amazon SWF 接着将下一个任务提供给应用程序主机,以继续工作流程执行。
  • TerminateWorkflowExecution:停止推进特定的工作流程执行。Amazon SWF 不再将这一特定工作流程执行中的任务提供给应用程序主机。

预期用途和限制

使用本服务需遵循 Amazon Web Services 客户协议

使用案例

使用 Amazon S3Amazon EC2 的视频解码。 在此使用案例中,以组块形式将大型视频上传到 Amazon S3。必须监控组块的上传过程。上传组块后,通过将其下载到 Amazon EC2 实例进行解码。解码的组块将存储到另一 Amazon S3 位置。以这种方式对所有组块解码后,将它们合并成一个完整的解码文件,整个放回 Amazon S3。此过程可能会由于一个或多个组块出现解码错误而失败。此类故障需要通过 Amazon SWF 的云流程管理进行检测和处理。

将组件从数据中心迁移到云中。 业务关键操作由私有的数据中心托管,但需要整体迁移到云中,而不会导致中断。基于 Amazon SWF 的应用程序可以将包含数据中心所运行组件的工作程序与云中运行的工作程序合并在一起。要无缝过渡数据中心工作程序,首先会在云中部署相同类型的新工作程序。数据中心的工作程序与基于云的新工作程序,继续照常运行。通过向基于云的工作程序传送部分负载,对它们进行测试和验证。测试期间,应用程序不会中断,因为数据中心的工作程序一直在运行。测试成功后,数据中心的工作程序会逐渐停止,而云中的工作程序则会随之扩展,这样便可全部迁移到云流程管理应用程序。这个云流程过程适用于数据中心的所有其他工作程序,从而让整个应用程序迁移到云中。如果出于一些业务原因,某些处理步骤必须继续留在私有数据中心执行,则可以继续在私有数据中心运行这些工作程序,并让它们仍然参与应用程序。

使用 Amazon Mechanical Turk 处理大型产品目录。 验证大型目录中的数据,同时对目录中的产品进行批处理。不同批次可同时处理。对于每批,将从数据中心的服务器中提取产品数据,并将其转换成 Amazon Mechanical Turk 的 Requester User Interface (RUI) 要求的 CSV(逗号分隔值)文件。上传 CSV 以填充和运行 HIT(人工智能任务)。完成 HIT 后,反向转换生成的 CSV 文件,使数据返回原始格式。然后,评估结果;如果认可结果,为 Amazon Mechanical Turk 工作程序付费。故障将会去除及重新处理,而使用认可的 HIT 结果来更新目录。在批处理过程中,系统需要跟踪 Amazon Mechanical Turk 工作程序的质量并相应地调整费用。出现故障的 HIT 会重新进行批处理,并重新通过管道发送。

AWS Flow Framework

AWS Flow Framework 是一组方便易用的库的集合,有了这些库,您可以更加轻松快速地使用 Amazon Simple Workflow 构建应用程序。

工作原理

AWS Flow Framework 具有一个直观的编程模型,借助此模型可以轻松构建跨多台计算机执行工作的应用程序。通过此框架,您可以快速创建任务、协调任务,并指定这些任务之间的相互依存方式,就像您在典型程序中所做的那样。例如,您可以运行“远程”计算机上应用程序中的方法,只需在托管于单独的“本地”计算机上的应用程序逻辑中调用此方法即可。AWS Flow Framework 可以通过 Amazon Simple Workflow Service 存储的信息,处理执行远程方法所需的复杂往来操作,并将其结果返回到本地应用程序。您可以使用所执行方法的输出来连接您的逻辑中相互依赖的各个独立部分。通过此框架,您可以使用简单的语法,通过简单的“阻止并等待回调”方法来表达各方法之间的依赖关系。另外,在此框架中,您还可以像处理本地错误那样处理远程计算机上的故障,同时还可以轻松地定义当应用程序中的重要方法发生故障时应如何重试这些方法。

请注意

适用于 Ruby 的 AWS Flow Framework 已不再进行主动开发。虽然现有代码将继续正常工作,但将不会推出新功能或新版本。适用于 Ruby 的 Flow Framework 的源代码将继续在 AWS SWF GitHub 档案中提供。如果您基于 Ruby 的 Simple Workflow 应用程序正在发展和变化,您可能需要考虑一些选项,包括迁移到 AWS Step Functions 或使用原生 Simple Workflow API。更多详细信息,请参阅 AWS Simple Workflow 开发人员指南

使用 AWS Flow Framework,您可以编写简单的代码,让框架中预先构建的对象和类来处理 Amazon Simple Workflow API 的详细信息。AWS Flow Framework 可以创建和执行您应用程序的步骤,跟踪其进度、允许您定义步骤失败的重试规则,等等。同时,Amazon Simple Workflow Service 可以保持您应用程序的执行状态,将任务分发给可处理任务的工作人员,并保留有关您的所有任务的审计历史记录。

AWS Flow Framework 是 Java 开源,由 AWS 开发和管理。您可以使用下面的链接获取库、源代码、文档、示例等等。