我們目前正在研究如何使用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