【发布时间】:2018-01-06 09:18:00
【问题描述】:
我正在用 AWS SWF 编写一个工作流,它有以下步骤:
DownloadFromS3 -> doSomeProcessing -> UploadResults
我的想法是将每个步骤写成不同的任务,让决策者安排每个步骤。问题是,我如何保证接收 doSomeProcessing 的工作人员与下载文件的工作人员相同?我正在运行一个由大约 20 名工人组成的池。
PS1:我知道我可以为每个工作人员创建一个不同的任务列表,并将任务单独分配给他们,但这对我来说似乎是一种技巧,而不是一个合适的解决方案。
PS2:SWF 控制台中有一个示例,它有一个下载和上传任务,但它是用 Java 编写的(我看不懂),而且它似乎是用一个工人编写的。
PS3:我目前正在使用用 Go 编写的服务器,它执行所有 3 个步骤并管理其间的状态。但是,最好将状态管理卸载到 SWF 中的决策程序,因为 doSomeProcessing 不是一项简单的任务(工程 CFD 模拟),而且很多事情都可能出错。
谢谢
【问题讨论】:
-
旁注:Amazon Simple Workflow 的现代替代方案是 Amazon Step Functions,它为 AWS Lambda 函数提供状态机。可能值得探索。
-
不是每个工人都是独立的,只是被分配了一项任务吗?你不应该期望某个特定的工人得到一份特定的工作。如果您需要这样的关系,那么只需让一名工作人员完成所有关联的任务,而不是单独调用。
标签: amazon-web-services amazon-swf