AWS Flow Framework:我们可以在不同的EC2实例上运行活动工作者和活动任务

时间:2015-06-09 13:37:56

标签: amazon-web-services amazon-ec2 amazon-s3

我是AWS的新手,想要使用简单的工作流服务。 到目前为止,我知道是

网址:http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html

1)工作流启动器,工作流工作者(决策者)和活动工作者 可以在相同的EC2实例上运行,也可以在不同的EC2实例上运行。

2)活动工作人员执行活动任务或活动方法

我的问题是:

1)我可以在一个EC2实例上运行Workflow starter,workflow worker(decider),Activities worker 不同的EC2实例上的活动任务或活动方法?

示例:

EC2实例1 - >工作流启动器,工作流工作者(决策者),活动工作者

EC2实例2 - >活动任务或活动方法

如果上面的事情是可能的,那么有人能指出我的一些例子吗?

我已经查看了AWS Helloworld分布式应用程序但是它 在不同的EC2实例上运行Workflow worker和Activities worker,其中activity活动与Activities worker在同一台机器上运行 网址:http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/getting-started-example-helloworldworkflowdistributed.html

要求 开始时,只有一个EC2实例正在运行:

1)在这个正在运行的EC2实例上,我将拥有Workflow启动器和工作流工作者(决策者)。

2)根据决策任务列表中收到的任务,决策程序将执行自定义逻辑并基于自定义 逻辑结果我想创建一个新的EC2实例并在其上执行活动工作。

问题是我在某处读到了工作流工作者(决策者)和活动工作者必须在决策任务列表中接收任务之前启动,在我的情况下,由于成本原因,我无法从头开始运行2个EC2实例。

因此,为了解决这个问题,我的解决方案是

1)在EC2的运行实例上启动决策者和活动工作者。

2)活动工作人员在活动任务列表中收到任务后,将创建一个新的EC2实例并在其上执行活动。

由于

1 个答案:

答案 0 :(得分:0)

是肯定的。你绝对可以做到这一点。您还可以在多台计算机上拥有多个工作人员(包括工作流程和活动)。只要工作完成,你就不应该关心工作流程和活动的运行位置。

这是我写的一个示例,用于演示如何在java 1.8中使用flow

https://github.com/mirceal/swf-flow-java18-sample

在App.java中,注释第42行(aw.start())并构建示例。在评论第43行(wfw.start())之后构建样本。将2个构建的样本复制到2台不同的机器上,您应该实现您的要求。 第51行启动工作流程。

修改

将工人视为具有执行任务能力的实体。工作人员不断查看SWF(轮询SWF),如果有工作,他们会选择并执行它。

没有什么可以阻止您在同一台计算机上运行工作流和活动工作程序。也没有什么可以阻止你从活动中提升EC2实例 如果您只需要在计算机上运行部分活动,而在其他计算机上运行其他活动(您启动的那些活动),则通常会使用不同的SWF任务列表。