2014-11-24 56 views
2

我们目前正在研究如何使用Amazon SWF来处理后端中较长时间的运行作业。我们的架构包括典型的堆栈:Amazon SWF:放置决策逻辑的位置?

client (web/android/iOS) 
---- 
API/Worker (Elastic Beanstalk) 
---- 
DB (RDS) 

我想知道什么是放SWF判逻辑的最佳场所。一个单独的EC2实例,在API组件中,还是将它分离到另一个EBS工作者中是有意义的?

回答

0

您可以将您的决策者部署到与活动工作人员相同的EC2实例。 但是,我不建议将API服务和所有工作人员部署到相同的实例。

如果您的工作流程中出现高峰,您的SWF工作人员可以独立于您的API服务进行扩展,反之亦然。

我认为为你的员工创建一个单独的Bean Stalk配置是合理的。

+0

谢谢。我认为我的问题更多地是关于如何将决策者与API挂钩。目前API正在使用SQS向EBS工作人员发送信号。因此这些东西正在作出决定,因此它有资格被SWF取代。但我不知道什么是放置决策逻辑的最佳位置...... – Pepster 2014-11-26 08:06:05

+0

如果您使用的是Flow框架,请使用@ Workflow(Decider)和@ Activity(Worker)注释您的工作流程实现,以便Flow将轮询SWF并检查如果有决策或活动任务。因此,您的决策者实际上是由Flow根据您的工作流实施创建的。您的API只应调用使用@ Workflow注释的方法,并且Flow会自动为您启动工作流(它在后台调用StartWorkflowExecution API)。这里是一个[示例](http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/getting-started-example-helloworldworkflow.html) – Weiwu 2014-11-27 19:07:03

0

您是否考虑过使用EC2容器服务?我会建议为每个决策者和工作人员使用单独的容器。

相关问题