我是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实例并在其上执行活动。
由于
答案 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任务列表。