【问题标题】:Amazon SWF: Where to put the decider logic?Amazon SWF:将决策逻辑放在哪里?
【发布时间】:2015-01-22 00:08:01
【问题描述】:

我们目前正在调查使用 Amazon SWF 来处理后端中运行时间较长的作业。我们的架构由典型的堆栈组成:

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

我想知道放置 SWF 决策逻辑的最佳位置是什么。一个单独的 EC2 实例,在 API 组件中,还是在另一个 EBS-worker 中分离它有意义?

【问题讨论】:

    标签: amazon-web-services amazon-swf


    【解决方案1】:

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

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

    我认为为您的工作人员创建一个单独的 Bean Stalk 配置是有意义的。

    【讨论】:

    • 谢谢。我认为我的问题更多是关于如何将决策者连接到 API。目前,API 正在使用 SQS 向 EBS-workers 发出信号来做事。因此,这些东西正在做出决定,因此它有资格被 SWF 取代。但我想知道放置决策者逻辑的最佳位置是什么......
    • 如果您使用 Flow 框架,您可以使用 @Workflow (Decider) 和 @Activity (Worker) 注释您的工作流实现,因此 Flow 将轮询 SWF 并检查是否有决策或活动任务。因此,您的决策者实际上是由 Flow 根据您的工作流实现创建的。您的 API 应该只调用带有 @Workflow 注释的方法,Flow 将自动为您启动工作流(它在后台调用 StartWorkflowExecution API)。这是example
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 2012-01-22
      • 2013-07-26
      • 2016-03-08
      • 2011-09-08
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多