如何制作可水平扩展的连续作业队列集合?

时间:2016-10-14 16:40:36

标签: jobs job-scheduling beanstalkd

我有一系列工作生产者,以及一个可以处理任何工作的(更大)工人集合。每个作业都有一个“参考”,具有相同参考的作业必须按顺序处理,即。任何时候,只有一名工人可以从事某项工作。

为了保证公平性,还要求单个“参考”不能减慢其他参考文献的处理速度。

 Ref1 | Ref2 | Ref3 | ... | RefN
------|------|------|-----|------
 a(1) | a(2) |      | ... | a(3)
 b(4) | b(5) |      | ... | b(6)
 c(7) | c(8) |      | ... |
 d(9) |      |      | ... |
 e(10)|      |      | ... |

在此表中,列包含每个引用的排队作业,字母是引用中作业的顺序,括号中的数字是工作人员应该选择作业的所需顺序。

引用是动态的,可能有数千个。

我结帐了beanstalkd,使用电子管作为参考,但这只保证顺序性,如果每个电子管正由一个工人观看,这意味着我必须做大量的簿记(如果分配的工人崩溃怎么办?等)

是否有任何提供此功能的作业队列实现,或者我必须自己动手?我有一个实现可以做我想要的,使用一个非常天真的SQL表,但它在负载下执行非常糟糕。

0 个答案:

没有答案