Resque vs Sidekiq?[关闭]


127

我目前正在使用Resque我的背景程序,但是最近我听到了很多有关的内容sidekiq。有人可以比较/区分吗?

我特别想知道是否有一种方法可以以编程方式监视作业是否在 sidekiq


71
很高兴看到这个问题尚未解决,因为它“不适合SO”。
Dogweather '11

51
我们可以停止结束所有好的问题吗?我知道它很广泛,也很重要,也很有趣。
superluminary

19
有一天,他们将创建一个站点,程序员可以在其中提出问题,并且该站点将允许主观回应。可以根据相关性忽略甚至投票的问题。
baash14年

4
@ baash05,它将称为Quora!
nakhli 2014年

6
它会被称为Yahoo Answers,质量会下降到整个地板。
2015年

Answers:


130

要求:

优点:

缺点

  • 每个工作者运行一个进程(使用更多的内存);
  • 不会重试作业(无论如何都可以立即使用)。

Sidekiq:

优点

  • 每个工作者运行线程(占用更少的内存);
  • 分叉更少(工作更快);
  • 开箱即用的更多选项。

缺点

  • [huge]需要代码和所有依赖项的线程安全。如果您在线程中运行线程不安全的代码,那么您将遇到麻烦;
  • 在某些红宝石上比其他红宝石上的效果更好(建议使用jruby,由于GVL(全局VM锁定)而降低了MRI的效率)。

19
您怎么知道您是否正在运行“线程不安全代码”?
Dogweather '11年

4
例如,如果您将状态存储在全局变量中,那么您就会遇到麻烦:)至于宝石,以下是Wiki中的一些宝石。
塞尔吉奥·图伦采夫

25
@mrbrdo你不能再错了。GVL与您的ruby代码的线程安全无关。GVL与红宝石解释器代码(MRI C代码)的线程安全性有关。
radarek

2
我必须与Resque上的“专业人士”相矛盾,后者说“您可以使用任何红宝石”。今天,Resque的README实际上说:“我们很乐意支持非MRI红宝石,但它们可能有错误。” github.com/resque/resque/blob/master/README.md#requirements
JellicleCat

2
如果您打算使用therubyracer在工作中运行JavaScript,我尤其要避免使用Sidekiq。这并不是Sidekiq本身的错,而是多线程导致了超级竞争者的问题。见github.com/cowboyd/therubyracer/issues/206
杰里米·伯顿

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.