我有一系列工作生产者,以及一个可以处理任何工作的(更大)工人集合。每个作业都有一个“参考”,具有相同参考的作业必须按顺序处理,即。任何时候,只有一名工人可以从事某项工作。
为了保证公平性,还要求单个“参考”不能减慢其他参考文献的处理速度。
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表,但它在负载下执行非常糟糕。