如果我们在时间上使用多个任务队列,我的工作人员如何知道轮询哪个任务?

zhe*_* yi 4 cadence-workflow temporal-workflow uber-cadence

  1. 如果我在时间匹配中设置10个视频任务队列,如果我们有5个匹配服务,时间将为每个匹配服务分配2个视频任务队列?
  2. 如果我在时间匹配中设置 10 个视频任务队列,如果我们有 50 个工作人员,他们如何分配到哪个任务队列进行轮询?每个队列有 5 个工作人员进行轮询?我们如何划分哪个worker轮询哪个视频任务队列?谁能稍微解释一下原理吗?

Max*_*eev 5

如果我在时间匹配中设置10个视频任务队列,如果我们有5个匹配服务,时间将为每个匹配服务分配2个视频任务队列?

默认情况下,临时任务队列配置有 4 个分区。因此 10 个任务队列总共有 40 个分区。Temporal 使用一致性哈希将分区放置到匹配的主机。请注意,该算法不能保证精确的分布。但平均每台主机最终会有 8 个分区。

如果我在时间匹配中设置 10 个视频任务队列,如果我们有 50 个工作人员,他们如何分配到哪个任务队列进行轮询?每个队列有 5 个工作人员进行轮询?我们如何划分哪个worker轮询哪个视频任务队列?谁能稍微解释一下原理吗?

Temporal 不会将工作人员分配到任务队列。你的代码就是这样做的。创建工作线程时,任务队列名称是必需参数。在大多数情况下,您不需要使用多个任务队列。如果配置了适当数量的分区,单个队列可以支持几乎任何吞吐量。

对于给定应用程序使用多个任务队列的原因:

  • 将请求路由到单独的工作人员池或特定进程
  • 对某种类型的请求进行速率限制
  • 为特定类型的请求指定每个工作线程的限制(并行任务的速率和数量)