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