Java 使用Amazon SWF限制下游服务上的TPS
我正在使用AmazonSWF编写一个工作流,我想知道如何控制下游服务上的TPS 我有一个父工作流,它启动了几个并行运行的子工作流 My child工作流调用多个下游服务(每个服务位于不同的活动中),例如Java 使用Amazon SWF限制下游服务上的TPS,java,spring,amazon-swf,Java,Spring,Amazon Swf,我正在使用AmazonSWF编写一个工作流,我想知道如何控制下游服务上的TPS 我有一个父工作流,它启动了几个并行运行的子工作流 My child工作流调用多个下游服务(每个服务位于不同的活动中),例如 如果成功继续,如果失败退出,则调用下游服务1 如果成功继续,如果失败退出,则调用下游服务2 等 我希望能够单独管理下游服务上的TPS 我如何限制下游服务的TPS?例如,理想情况下,我希望下游服务1的最大TPS为100。在非并发上下文中,我可以使用番石榴速率限制器之类的东西,但是这将在多个主机上运
1. take entity id as input
2. call dependent service 1 workflow
3. return
然后,如果上述操作成功完成,则父工作流将调用调用从属服务2的下一个子工作流,或者如果失败,则父工作流将退出
是否可以对给定依赖服务工作流或给定活动的实例数设置并发限制?这是任务列表的良好/潜在用途吗?我可以通过工作主机的数量控制TPS吗
谢谢你的建议 我认为SWF本身不支持活动执行的速率限制,也不支持任务列表的最大任务交付速率 另一种选择是在工人层面实施利率限制。已通过支持速率限制。如果一个工人可以维持呼叫率,那么选择这个工人作为主工人,并暂停所有其他工人通过解决问题。如果需要一个以上的工人,则多个主设备同时处于活动状态,每个主设备的费率仅限于总费率的一部分 可以使用单独的SWF工作流选择工人作为主工作人员。主选举工作流的基本思想是有一个GetLock活动。执行它的主机被视为主机。这个活动应该有小的(比如说20秒)心跳超时和大的总超时。因此,拥有它的主机必须至少每20秒心跳一次才能保持锁。如果由于某种原因无法检测到心跳,工作流将获取故障并重新安排活动,以便其他主机捕获