gpt4 book ai didi

ruby-on-rails - delayed_jobs vs resque vs beanstalkd?

转载 作者:IT王子 更新时间:2023-10-29 05:54:12 54 4
gpt4 key购买 nike

这是我的需求:

  • Enqueue_in(10.hours, ... )(DJ 语法非常完美。)
  • 同时增加 worker 。 (Resque 或 beanstalkd 对此有好处,但不是 DJ)
  • 必须每秒处理 100 个作业的推送和弹出。 (我需要进行测试才能确定,但​​我认为 DJ 无法处理这么多工作)

Resque 和 beanstalkd 不执行 enqueue_in。

有一个插件 (resque_scheduler) 可以做到这一点,但我不确定它有多稳定。

我们的环境在亚马逊上,他们为拥有亚马逊实例的人免费推出了 beanstalkd,这对我们来说是一个优势,但我仍然不确定这里的最佳选择是什么。

我们运行 rails 2.3,但我们很快就会将其加速到 rails 3.0.3。

但我最好的选择是什么?我是否缺少另一个可以更好地完成这项工作的 gem?

我觉得我现在唯一可行的选择是 resque_scheduler。

编辑:

Sidekiq ( https://github.com/mperham/sidekiq ) 是您应该检查的另一个选项。

最佳答案

对于我的项目,我会对 collectiveidea/delayed_job 感到很舒服在 rails2 和 3 中。我不知道 beanstalkd,但我会尽快尝试 :-)。我遵循了 resque 文档中的建议。我会举报的。

Resque vs DelayedJob

Resque 与 DelayedJob 相比如何,您为什么要选择其中之一?

  • Resque支持多队列
  • DelayedJob 支持更细粒度的优先级
  • Resque worker 对内存泄漏/膨胀具有弹性
  • DelayedJob worker 极其简单且易于修改
  • Resque 需要 Redis
  • DelayedJob 需要 ActiveRecord
  • Resque 只能将 JSONable Ruby 对象作为参数放在队列中
  • DelayedJob 可以将任何 Ruby 对象作为参数放入其队列中
  • Resque 包含一个 Sinatra 应用程序,用于监控正在发生的事情
  • 如果您想添加一个接口(interface),可以从您的 Rails 应用程序中查询 DelayedJob

如果您正在进行 Rails 开发,那么您已经拥有数据库和 ActiveRecord。 DelayedJob 非常容易设置并且效果很好。 GitHub 使用它处理了将近 2 亿个作业数月。

如果出现以下情况,请选择 Resque:

  • 你需要多个队列
  • 您不关心/不喜欢数字优先级
  • 你不需要持久化每个 Ruby 对象
  • 您可能需要排长队
  • 你想看看发生了什么
  • 你预计会有很多失败/困惑
  • 你可以设置Redis
  • 您的 RAM 并没有不足

如果出现以下情况,请选择 DelayedJob:

  • 你喜欢数字优先级
  • 您没有每天做大量的工作
  • 您的队列保持小而灵活
  • 没有太多的失败/困惑
  • 您想轻松地把任何东西扔进队列
  • 您不想设置 Redis

在以下情况下选择 Beanstalkd:

  • 你喜欢数字优先级
  • 你想要极快的队列
  • 你不想浪费你的 RAM
  • 您想提供大量工作
  • 您可以使用队列中的 JSONable Ruby 对象作为参数
  • 你需要多个队列

Resque 绝不是“更好的”DelayedJob,因此请务必选择最适合您的应用的工具。

一个不错的comparison of queueing backend speed :

                 enqueue                work
-------------------------------------------------
delayed job | 200 jobs/sec 120 jobs/sec
resque | 3800 jobs/sec 300 jobs/sec
rabbitmq | 2500 jobs/sec 1300 jobs/sec
beanstalk | 9000 jobs/sec 5200 jobs/sec

祝你有美好的一天!

附言有一个关于 resque 的 RailsCast , Delayed Job ( revised version ) 和 Beanstakld .看看吧!

附言我最喜欢的选择现在是Sidekiq (对于简单的工作非常简单、快速和高效),看看 this page进行比较。

关于ruby-on-rails - delayed_jobs vs resque vs beanstalkd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808351/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com