【问题标题】:resque worker on multiple servers多台服务器上的 resque worker
【发布时间】:2011-08-31 15:39:13
【问题描述】:

由于后台进程繁重,我们需要多台只执行后台进程的服务器。我们正在使用 resque 来处理后台作业。由于每个人的 resque 工作人员 服务器将执行类似的任务,最好的方法是什么?

  1. 在每台机器上启动工作程序,每个机器处理所有队列。
  2. 在每台服务器上的工作人员之间划分队列,以便一台服务器上的工作人员负责处理一半的队列,而下一个工作人员负责处理其余的队列。

我喜欢第一个解决方案。但这有什么限制吗?

谢谢。

【问题讨论】:

    标签: ruby ruby-on-rails-3 background resque


    【解决方案1】:

    您应该能够毫无问题地将 Resque 工作人员分布在任意数量的服务器上。

    应使用 Resque 工作队列来分类和组织不同类型的工作。

    我个人认为每个工人都应该能够处理各种类型的工作,这样您就可以有效地利用资源。

    话虽如此,我更改了在不同工作人员上处理队列的优先级顺序,以便给定类型的工作可能会找到工作人员来提供帮助,即使大部分资源都专用于更高优先级的工作。

    例如,有 6 个工人和 3 种队列:

    Queues:
    -------
    critical - top priority jobs
    email - time-sensitive, but not critical
    maintenance - background work, to be done whenever
    
    Workers w/ Queues
    -----------------
    1: critical, email, maintenance
    2: critical, email, maintenance
    3: critical, email, maintenance
    4: critical, email, maintenance
    5: critical, maintenance, email
    6: critical, maintenance, email
    

    此设置可确保在任何工作人员的任何其他工作之前处理关键工作。但是,如果系统中充斥着电子邮件工作,如果需要进行维护工作,则只有 2/3 的工作人员会被阻止。

    希望您可以将此示例外推到您的队列和优先级。

    【讨论】:

    • 谢谢,你的回答真的很有帮助。我这里还有一个与 resque 相关的问题:stackoverflow.com/questions/7272592/…。看起来您对 resque 有很好的了解,所以我在此处复制了该链接。希望你不介意:)
    • 太好了,如果您可以将其标记为已回答并投票,那就太好了。
    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 2011-09-24
    • 2013-07-28
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多