首页 > 解决方案 > Sidekiq:分配权重会导致优先级队列语义吗?

问题描述

在我的 Sidekiq Pro 设置中,我有大约 10 个不同权重的队列。我的意图是使用权重来指示队列的优先级。

前几天我发生了一个事件,导致从一批中产生了大量的低权重作业,并且似乎对高权重作业也有竞争效应。

在文档的这一部分中,我阅读了以下内容:

每个队列都可以配置一个可选的权重。权重为 2 的队列被检查的频率是权重为 1 的队列的两倍

这让我有点困惑。我可以期望权重产生优先队列语义吗?

标签: sidekiqpriority-queue

解决方案


正如@MikePerham 指出的那样,文档包括有关使用权重时调度程序中的出队机制的详细信息:

使用加权排序时,sidekiq 会随机选择一个队列进行检查,不会阻塞,使用加权随机选择。

我误解了选择队列时可能会默认和执行多个作业,但是现在我考虑到这一点,这种行为只会添加一个额外的,非敏感的调度层,而实际上sidekiq并没有添加sidekiq。那样工作。

考虑到这一点,当考虑大量排队作业时(由于队列选择的随机性),优先级队列语义是使用权重实现的。


推荐阅读