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

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

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 Elastic Compute Cloud (Amazon EC2)]、数据中心的服务器甚至是移动设备来托管洁厕程序或活动工作线程。启动后,决策程序和活动工作线程应该轮询 Amazon SWF 以查找任务。

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

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

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

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

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

设置

您可以选择使用支持的任何一种编程语言为 Amazon SWF 进行开发。 Amazon对于 Java 开发人员 Amazon Flow Framework ,也可以使用。有关更多信息,请Amazon Flow Framework访问网站,并参阅Amazon Flow Framework 《Java 开发人员指南》

为了减少延迟并将数据存储在符合您要求的位置,Amazon SWF 在不同区域提供了终端节点

Amazon SWF 中的每个终端节点都是完全独立的。您在一个地区注册的任何域、工作流程和活动都不会与其他地区的域名、工作流程和活动共享数据或属性。

当您注册 Amazon SWF 域名、工作流程或活动时,该域名、工作流程或活动仅存在于您注册的区域内。例如,您可以在两个不同的区域注册名为 SWF-Flows-1 的域,但二者不会共享任何数据或属性,每个区域都是完全独立的。

有关 Amazon SWF 端点的列表,请参阅 Regions and Endpoints