📅  最后修改于: 2020-11-07 03:23:56             🧑  作者: Mango
什么是SWF?
- SWF代表简单工作流服务。
- 它是用于构建可伸缩和弹性应用程序的Web服务。
- 它提供了简单的API调用,可以从用任何语言编写的代码中执行代码,并且可以在您的EC2实例或世界上可以访问Internet的任何计算机上运行。例如,您正在构建一个由多个模块组成的应用程序,并在各个模块之间进行协调。我们依靠AWS中的SWF。 SWF充当协调器,并且可以控制应用程序的所有模块。
- 它使您能够构建应用程序,并使跨分布式组件的工作协调变得容易。
- SWF在项目的所有组件之间提供了逻辑上的隔离。
- SWF涉及根据应用程序的逻辑流程来协调各种任务,例如管理任务间的依存关系,调度和并发。您不必手动管理任务。 SWF将为您做所有事情。
让我们通过一个例子来理解。
假设客户下了订单。
步骤1:您必须验证订单。您拥有EC2实例,然后它们去检查订单是否有库存。确认订单后,即您有库存,然后转到步骤2。
步骤2:现在,它可以在Charge Credit卡上使用。它检查信用卡充值是否成功。
步骤3:如果信用卡付款成功,我们将下达订单。发货订单需要人工干预。人从仓库带来订单,并且如果产品已装箱,则意味着该产品已准备好装运。
步骤4:“记录完成”是一个数据库,其中说明该产品已装箱并运送到目标地址。它还提供了跟踪号。这是典型工作流程的结尾。
SWF工人和决策者
- 工作者是与Amazon SWF进行交互以获取任务,处理收到的任务并返回结果的程序。
- 决策程序是一个程序,可根据应用程序逻辑来协调诸如排序,并发,调度等任务。
- 工人和决策者都在Amazon EC2之类的云基础架构或防火墙后面的计算机上运行。
- 决策者可以一致地了解任务的进度并启动新任务,而Amazon SWF则存储任务并将其分配给工作人员以进行处理。
- Amazon SWF确保任务仅分配一次,并且永远不会重复。
- 工人和决策者不必跟踪执行状态,因为Amazon SWF可以持久地维护该状态。
- 工人和决策者都独立运行并迅速扩展。
SWF域
- 域是将同一帐户中的其他类型,执行和任务列表隔离开的容器。
- 工作流,活动类型和工作流执行都限于一个域。
- 您可以通过使用AWS管理控制台或Amazon SWF API中的RegisterDomain操作来注册域。
这些参数以JSON(JavaScript对象表示法)格式指定。格式如下所示:
RegisterDomain
{
"name" : "867530901";
"Description": "music";
"workflowExecutionRetentionPeriodInDays": "60";
}
哪里,
workflowExecutionRetentionPeriodInDays定义保留期的天数。
注意:最大工作流程可以为1年,其值以秒为单位。
黑白SQS和SWF的差异
- Amazon SWF提供面向任务的API,而Amazon SQS提供面向消息的API。
- Amazon SWF确保任务仅分配一次,并且永远不会重复。使用Amazon SQS,可以复制消息,并且可能还需要确保仅对消息进行一次处理。
- SWF跟踪应用程序中的所有任务和事件,而当一个应用程序使用多个队列时,SQS实施自己的应用程序级别跟踪。
SWF的功能
- 可扩展的Amazon SWF会自动缩放资源以及应用程序的使用情况。当您添加更多的云工作流或增加工作流的复杂性时,无需手动管理工作流服务。
- 可靠的Amazon SWF在Amazon的高可用性数据中心运行,因此,只要应用程序需要它们,便会提供状态跟踪。 Amazon SWF存储任务,将其发送到各自的应用程序组件,并跟踪其进度。
- Simple Amazon SWF用新的云工作流程互联网服务完全取代了旧的工作流程解决方案和流程自动化软件的复杂性。它消除了开发人员管理自动化过程的需要,因此您可以专注于应用程序的独特功能。
- 逻辑隔离Amazon SWF在后台作业的逐步逻辑的控制流与包含业务逻辑的实际工作单元之间提供逻辑隔离。由于逻辑上的分离,您可以从业务逻辑中分别管理,维护和扩展应用程序的“状态机”。根据业务需求的变化,您可以轻松管理业务逻辑,而不必担心状态机,任务分配和流控制。
- 灵活的Amazon SWF允许您修改应用程序组件,即,您可以使用任何编程语言来修改应用程序逻辑,并在云中或本地运行它们。