我正在使用 Amazon SWF 编写工作流程,并且想知道如何控制下游服务的 TPS。
我有一个父工作流,它启动了几个并行运行的子工作流。
我的子工作流程调用了几个下游服务(每个都在不同的活动中),例如。
- 调用下游服务1,成功则继续,失败则退出
- 调用下游服务2,成功则继续,失败则退出
- ETC
并且我希望能够单独管理下游服务上的 TPS。
如何限制下游服务的 TPS?例如,理想情况下,我希望能够说我希望下游服务 1 的最大 TPS 为 100。在非并发上下文中,我可以使用 Guava RateLimiter 之类的东西,但是这将跨多个主机运行。我可以指定一次只运行 100 个给定活动的实例吗?我在流框架中找不到注释(我正在使用流框架和 Spring)。如果需要,我很乐意将子工作流分成单独的工作流,并让父工作流一个接一个地调用每个子工作流,例如。
子工作流程:
1. take entity id as input
2. call dependent service 1 workflow
3. return
然后,如果上述成功完成,则父工作流将调用调用依赖服务 2 的下一个子工作流,或者如果失败,则父工作流将退出。
是否可以对给定依赖服务工作流的实例数量或给定活动设置并发限制?这是任务列表的良好/潜在用法吗?我可以通过工作主机的数量来控制 TPS 吗?
感谢您的任何建议!