Amazon Simple Workflow Service
开发人员指南 (API 版本 2012-01-25)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon SWF 简介

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

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

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

简单工作流程概念

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

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

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

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

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

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

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

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

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

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

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

用户必须具有授权的 AWS 访问密钥才能用您的账户运行工作流程。但是,访问密钥可以对您账户的所有资源进行完全访问,难以撤销,因此不适用于所有应用程序。Amazon SWF 访问控制使用 AWS Identity and Access Management (IAM) 提供对 AWS 资源的有限、受控访问,以防止泄露访问密钥。例如,您可以允许用于访问您的账户,但只运行其在特定的域中运行特定工作流程。

工作流程执行

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

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

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

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

    您可以用编程的方式或使用 AWS 管理控制台来实现。

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

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

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

    可以通过编程的方式或通过 AWS 管理控制台启动执行。

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

  6. 使用 AWS 管理控制台 查看工作流程执行情况。

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

本页内容: