良好的背景处理选项



我正在寻找一个具有以下能力的优秀后台作业处理器,

  1. 与MySql配合良好
  2. 可以有优先级
  3. 可以在后台轻松安排任何事情(不仅仅是电子邮件)
  4. 能够在完成后重新初始化作业(回调会很好。我很少有任务/作业在每分钟后继续运行),即使是重复的调度程序也能工作
  5. 不应该消耗太多的记忆,(有DJ的经验)

我正在研究的几个选项Resque、DJ、Beanstalkd(尚未完全探索)我在亚马逊EC2中有我的生产环境(如果这有助于更好的解决方案)

请建议我哪一个是好的选择,除了这些之外,还有其他东西现在人们使用吗?

我衷心推荐sidekiq——它非常灵活,使用的资源远少于Resque或DelayedJob。

它确实需要redis(像Resque一样),但redis对于任何Rails项目来说都是有价值的补充,因为它可以重用为会话存储和缓存。我们的主数据库是MySQL,我们部署到EC2:-)我们过去使用过延迟作业和救援,但发现它们有问题,并且占用了大量资源。Sidekiq使用线程,一个Sidekiq工作程序与几个DJ/Resque工作程序一样高效。以下是我可以证实的项目自述中一个有趣的部分:

您会发现您可能需要50个200MB的resque进程来固定您的CPU,而一个300MB Sidekiq进程将挂接相同的CPU和执行相同数量的工作。请参阅我在Resque上的博客文章记忆效率以及我如何缩小Carbon Five客户的将加工场从9台机器调整为1台机器。

总结一下:

  1. 它与MySQL配合得很好-不是很好,但与MySQL也没有问题
  2. 您可以通过设置不同的处理队列来确定优先级
  3. 你可以很容易地安排任何事情(特别是对电子邮件有特别的ala DJ支持)
  4. 对此不太确定,我们对重复性工作使用wheney+cron
  5. 你会喜欢Sidekiq的小内存足迹

最新更新