AWS Flow Framework 基本概念:应用程序结构 - AWS Flow Framework 适用于 Java

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

AWS Flow Framework 基本概念:应用程序结构

从概念上讲,AWS Flow Framework 应用程序包含三个基本组件:工作流程启动程序工作流程工作线程活动工作线程。一个或多个主机应用程序负责向 Amazon SWF 注册工作线程(工作流和活动)、启动工作线程和处理清理。工作线程处理执行工作流程的机制,可以在几个主机上实现工作线程。

该图表示基本 AWS Flow Framework 应用程序:

AWS Flow Framework 应用程序示意图
注意

从概念上讲,在三个单独的应用程序中实现这些组件是非常方便的,但您可以通过多种方式创建应用程序以实现该功能。例如,您可以在活动和工作流程工作线程中使用单个主机应用程序,或者使用单独的活动和工作流程主机。也可以使用多个活动工作线程,每个工作线程在单独的主机上处理一组不同的的活动,等等。

三个 AWS Flow Framework 组件通过向 Amazon SWF 发送 HTTP 请求进行间接交互,Amazon SWF 负责管理这些请求。Amazon SWF 将执行以下操作:

  • 保留一个或多个决策任务列表,这些列表确定工作流程工作线程要执行的下一步骤。

  • 保留一个或多个活动任务列表,这些列表确定活动工作线程将执行的任务。

  • 保留工作流程执行的详细分步历史记录。

在使用 AWS Flow Framework 时,您的应用程序代码不需要直接处理图中显示的很多细节,例如,将 HTTP 请求发送到 Amazon SWF。您可以直接调用 AWS Flow Framework 方法,该框架将在后台处理这些细节。

活动工作线程角色

活动工作线程执行工作流程必须完成的各种任务。它包含以下内容:

  • 活动实现,它包含一组为工作流程执行特定任务的活动方法。

  • 一个 ActivityWorker 对象,使用 HTTP 长轮询请求来轮询 Amazon SWF 以获取要执行的活动任务。需要执行任务时,Amazon SWF 通过发送执行任务所需的信息来响应请求。然后,ActivityWorker 对象会调用相应的活动方法,并将结果返回到 Amazon SWF。

工作流程工作线程角色

工作流程工作线程协调各种活动的执行情况,管理数据流以及处理失败的活动。它包含以下内容:

  • 工作流程实现,它包含活动协调逻辑,处理失败的活动,等等。

  • 活动客户端,它作为活动工作线程的代理,并允许工作流程工作线程计划要异步执行的活动。

  • 一个 WorkflowWorker 对象,使用 HTTP 长轮询请求轮询 Amazon SWF 以获取决策任务。如果工作流任务列表上具有任务,Amazon SWF 将通过返回执行任务所需的信息来响应请求。然后,该框架会执行工作流以执行任务,并将结果返回到 Amazon SWF。

工作流程启动程序角色

工作流程启动程序启动工作流程实例 (也称为工作流程执行),并且可以在执行期间与实例交互,以便将额外数据传递给工作流程工作线程或获取当前工作流程状态。

工作流程启动程序使用工作流程客户端启动工作流程执行,在执行期间根据需要与工作流程交互以及处理清理。工作流启动程序可以是本地运行的应用程序、Web 应用程序、AWS CLI 甚至 AWS Management Console。

Amazon SWF 如何与您的应用程序交互

Amazon SWF 负责协调工作流组件之间的交互,并维护详细的工作流历史记录。Amazon SWF 不会启动与组件的通信,它会等待来自组件的 HTTP 请求,并根据需要管理这些请求。例如:

  • 如果请求来自工作线程,目的是轮询以获取可用的任务,则 Amazon SWF 会在任务可用时直接响应工作线程。有关长轮询的更多信息,请参阅 Amazon Simple Workflow Service Developer Guide 中的 Long Polling

  • 如果请求是活动工作线程发出的说明任务已完成的通知,Amazon SWF 会将该信息记录在执行历史记录中,并在决策任务列表中添加一个任务,以通知工作流工作线程任务已完成,可以继续执行下一步骤。

  • 如果请求是工作流工作线程发出的,指示执行活动,Amazon SWF 会将该信息记录在执行历史记录中,并在活动任务列表中添加一个任务,以指示活动工作线程执行相应的活动方法。

该方法允许工作线程在具有互联网连接的任何系统上运行,包括 Amazon EC2 实例、企业数据中心、客户端计算机等。它们甚至不必运行相同的操作系统。由于 HTTP 请求来自于工作线程,因此,不需要使用外部可见的端口;工作线程可以在防火墙后面运行。

了解更多信息

有关对 Amazon SWF 工作原理的更深入讨论,请参阅 Amazon Simple Workflow Service Developer Guide