我们目前正在研究如何使用Amazon SWF来处理后端中较长时间的运行作业。我们的架构包括典型的堆栈:Amazon SWF:放置决策逻辑的位置?
client (web/android/iOS)
----
API/Worker (Elastic Beanstalk)
----
DB (RDS)
我想知道什么是放SWF判逻辑的最佳场所。一个单独的EC2实例,在API组件中,还是将它分离到另一个EBS工作者中是有意义的?
我们目前正在研究如何使用Amazon SWF来处理后端中较长时间的运行作业。我们的架构包括典型的堆栈:Amazon SWF:放置决策逻辑的位置?
client (web/android/iOS)
----
API/Worker (Elastic Beanstalk)
----
DB (RDS)
我想知道什么是放SWF判逻辑的最佳场所。一个单独的EC2实例,在API组件中,还是将它分离到另一个EBS工作者中是有意义的?
您可以将您的决策者部署到与活动工作人员相同的EC2实例。 但是,我不建议将API服务和所有工作人员部署到相同的实例。
如果您的工作流程中出现高峰,您的SWF工作人员可以独立于您的API服务进行扩展,反之亦然。
我认为为你的员工创建一个单独的Bean Stalk配置是合理的。
您是否考虑过使用EC2容器服务?我会建议为每个决策者和工作人员使用单独的容器。
谢谢。我认为我的问题更多地是关于如何将决策者与API挂钩。目前API正在使用SQS向EBS工作人员发送信号。因此这些东西正在作出决定,因此它有资格被SWF取代。但我不知道什么是放置决策逻辑的最佳位置...... – Pepster 2014-11-26 08:06:05
如果您使用的是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