我们正在从各种基于 cron 的流程转移到 Amazon Simple Workflow Service。其中许多不再需要在特定时间运行,只需在需要时触发。但是,对于某些工作流,我们需要保证工作流(或者更确切地说,工作流中的所有活动)不会并行发生,并且在任何时候都只有一个运行。完成后,它可以再次运行。
依赖workflowId的唯一性会不会有任何问题,或者是某种糟糕的设计?如果是这样,会出现什么问题,以及如何设计系统以确保某些工作流在不应该启动时不启动。
我们正在从各种基于 cron 的流程转移到 Amazon Simple Workflow Service。其中许多不再需要在特定时间运行,只需在需要时触发。但是,对于某些工作流,我们需要保证工作流(或者更确切地说,工作流中的所有活动)不会并行发生,并且在任何时候都只有一个运行。完成后,它可以再次运行。
依赖workflowId的唯一性会不会有任何问题,或者是某种糟糕的设计?如果是这样,会出现什么问题,以及如何设计系统以确保某些工作流在不应该启动时不启动。
依赖于 SWF 并使用workflowId
独特的执行作为状态持久性和仲裁层(以第二个出现的为准)绝对是不错的设计 - 这正是该服务的用途。
是的,两者workflowId
都activityId
足以确保独特的执行。
现在,对于工作流中的活动,activityId
不一定必须是唯一的,因为由决策者以逐个任务的方式安排工作。有关串行和并行工作流执行的示例,请参阅 boto SWF 教程。