Amazon SWF 简介 - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon SWF 简介

越来越多的应用程序依靠异步、分布式处理。这类应用程序的可扩展性是使用此方法的主要推动力。通过自主设计分布式组件,开发人员可以在应用程序负载增加时灵活独立地部署和扩展应用程序部件。云服务的可用性是另一个推动力。随着应用程序开发人员开始利用云计算,他们需要将其现有本地资产与基于云的附加资产组合到一起。然而分布式异步方法的另一个推动力是应用程序所建立的过程模型的固有分布式特性;例如,订单履行业务过程的自动化可跨越多个系统和人工任务。

开发此类应用程序的过程很复杂。它需要您协作多个分布式组件的执行,并处理增长的延迟与远程通信固有的不可靠性。要实现这一点,您通常需要编写涉及消息队列和数据库的复杂基础设施,以及复杂的逻辑来同步组件。

Amazon Simple Workflow Service (Amazon SWF) 提供编程模型和基础设施来协作分布式组件并采用可靠方法来维护其执行状态,可使分布式异步应用程序的开发更简单。借助 Amazon SWF,您可以自由关注与其有区别的应用程序方面的构建。

简单工作流程概念

下面介绍了解 Amazon SWF 工作流程所需要的基本概念,本指南的后续章节进行进一步说明。下述讨论是对工作流程结构和组件的高层次概述。

Amazon SWF 的基本概念是工作流程。工作流程是一组开展一些目标的活动,以及协作这些活动的逻辑。例如,工作流程可以接收客户订单并采取任何执行该订单需要的操作。每个工作流在Amazon资源称为,控制工作流程的范围。一个Amazon帐户可以有多个域,每一个域都能包含多个工作流程,但不同域中的工作流程不能交互。

设计 Amazon SWF 工作流程时,要准确定义每一个必需的活动。然后,用给 Amazon SWF 注册每个活动类型。注册活动时,您要提供姓名和版本之类的信息,并要根据您期望活动花费的时长来提供一些超时值。例如,客户可能期望订单在 24 小时内发货。这类期望会报告您在注册活动时指定的超时值。

工作流程执行过程中,有些活动可能需要执行多次,可能要用不同的输入。例如,在客户订购工作流程中,您可能要执行一个处理已购买项目的活动。如果客户购买多个项目,则必须将此活动运行多次。Amazon SWF 的概念是个活动任务,它表示一个活动的一次调用。在我们的示例中,每一个项目的处理都可以用一个活动任务表示。

活动工作程序是一项接收活动任务、执行任务并提供结果的程序。请注意,任务本身可能实际由人来执行,在这种情况下,人将会使用活动工作程序软件来接收和处置任务。可能会以统计分析师作为示例,这个分析师会接收数据集、分析之,然后发回分析结果。

活动任务(以及执行这些任务的活动工作人员)可以同步或异步运行。它们可以跨过多个可能处于不同地理区域的计算机分布,或者可以全部运行在同一台计算机上。不同的活动工作程序可以用不同的编程语言编写,且可运行在不同的操作系统上。例如,一个活动工作程序可能在亚洲运行于一台台式计算机,而另一个活动工作程序可能在北美洲于一台便携式计算机上运行。

工作流程中的协作逻辑包含在被称为决策程序的软件程序中。决策程序排定活动任务、提供输入数据给活动工作程序、处理在工作流程处于进程中时到达的事件,并在目标完成时最终结束(或关闭)工作流程。

Amazon SWF 服务的角色是用作可靠的中央枢纽,决策者、活动工作人员与其他相关实体(如工作流程管理人员)通过它可以交换数据。Amazon SWF 还会维护每个工作流程执行的状态,从而避免您的应用程序以持久的方式存储状态。

决策者从接收 Amazon SWF 决策任务并将决策返回 Amazon SWF,以此来管理工作流程。决策表示的是一个操作或一组操作,是工作流程中的下一步。一般的决策为排定活动任务。决策还可以用于设置计时器以延迟活动任务执行、请求取消已处在进程中的活动任务以及完成或关闭工作流程。

活动工作人员和决策者接收其任务(分别为活动任务和决策任务)的机制是轮询 Amazon SWF 服务。

Amazon SWF 向决策程序通知工作流程状态,其中包括每个决策任务、一份当前工作流程执行历史。工作流程执行历史由事件组成,其中事件代表工作流程执行状态的重要更改。示例事件为任务完成、任务已超时的通知或在工作流程执行之前设置的计时器过期。历史是工作流程进程的完整、一致且权威的记录。

Amazon SWF 访问控制使用Amazon Identity and Access Management(IAM),让您可以访问Amazon资源,受控受限的方式不会公开您的访问密钥。例如,您可以允许用于访问您的账户,但只运行其在特定的域中运行特定工作流程。

工作流程执行

综合前述章节中讨论的想法,下面是对在 Amazon SWF 中开发和运行工作流程的步骤的概述:

  1. 编写在您的工作流程中执行处理步骤的活动工作程序。

  2. 编写决策程序以执行您的工作流程的协作逻辑。

  3. 向 Amazon SWF 注册您的活动和工作流程。

    您可以通过编程的方式或使用 Amazon Web Services Management Console来实现。

  4. 启动您的活动工作程序和决策程序。

    上述操作者能在可访问 Amazon SWF 终端节点的任何计算设备上运行。例如,您可以在云中使用计算实例,例如 Amazon S3 Elastic Compute Cloud (Amazon EC2);在数据中心使用服务器;甚至是移动设备,以托管决策者或活动工作人员。一旦启动,决策者和活动工作人员应该向轮询 Amazon SWF 以查找任务。

  5. 启动工作流程的一个或多个执行。

    可以通过编程的方式或通过 Amazon Web Services Management Console启动执行。

    每一个执行都独立运行,您可以为每个执行提供其自己的输入数据集。执行启动后,Amazon SWF 排定初始决策任务。作为响应,您的决策程序开始生成启动活动任务的决策。执行会继续,直到您的决策程序做出关闭执行的决策。

  6. 使用 Amazon Web Services Management Console查看工作流程执行情况。

    您可以筛选并查看完整的运行详情以及已完成的执行。例如,您可以选择开启的执行以查看已完成的任务及其结果。