Ruby 雷斯克对赛德基克?
我目前正在使用Ruby 雷斯克对赛德基克?,ruby,ruby-on-rails-3,resque,sidekiq,Ruby,Ruby On Rails 3,Resque,Sidekiq,我目前正在使用Resque进行后台处理,但最近我听到了很多关于sidekiq的恼怒言论。有人能比较/区分吗 特别是,我想知道是否有一种方法可以通过编程监控作业是否在sidekiqResque中完成: 优点: 不需要线程安全(适用于几乎所有的gem) 没有解释器首选项(您可以使用任何ruby) 大量插件 缺点 每个工作进程运行一个进程(使用更多内存) 不重试作业(无论如何,开箱即用) 赛德基克: 专业人士 每个工作线程运行线程(使用更少的内存) 更少的分叉(工作更快) 更多现成的选项
Resque
进行后台处理,但最近我听到了很多关于sidekiq
的恼怒言论。有人能比较/区分吗
特别是,我想知道是否有一种方法可以通过编程监控作业是否在sidekiq
Resque中完成:
优点:
- 不需要线程安全(适用于几乎所有的gem)李>
- 没有解释器首选项(您可以使用任何ruby)
- 大量插件
- 每个工作进程运行一个进程(使用更多内存)李>
- 不重试作业(无论如何,开箱即用)
- 每个工作线程运行线程(使用更少的内存)李>
- 更少的分叉(工作更快)李>
- 更多现成的选项
- [MARGE]要求代码和所有依赖项的线程安全性。如果你用线程运行线程不安全代码,你是在自找麻烦李>
- 对某些红宝石的效果比其他红宝石更好(推荐使用jruby,由于GVL(全局VM锁),MRI的效率会降低)
看到这个问题没有因为“不适合这样做”而被关闭,我非常激动。我们能停止关闭所有好问题吗?请大家。我知道它很广泛,也很重要,也很有趣。有一天,他们会发明一个程序员可以提问的网站,该网站将允许主观回答。可以忽略的问题,甚至可以根据相关性投票。@baash05,它将被称为Quora!它将被称为Yahoo Answers,质量将直线下降。你如何知道你是否正在运行“线程不安全代码”?例如,如果你在全局变量中存储状态,那么你就有麻烦了:)至于gems,这里有一些。@mrbr你错得再错不过了。GVL与ruby代码的线程安全无关。GVL是关于ruby解释器代码(MRI C代码)的线程安全的。我不得不反驳Resque上的“pro”说“你可以使用任何ruby”。《今日Resque自述》实际上说,“我们很想支持非MRI红宝石,但它们可能有bug。”如果您计划使用therubyracer在作业中运行JavaScript,我会特别避免使用Sidekiq。这不是Sidekiq本身的错误,但多线程会给therubyracer带来问题。看见