多个服务器上的resque worker

时间:2011-08-31 15:39:14

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

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

  1. 在每台计算机上启动工作程序,每个处理所有队列。
  2. 将每台服务器上的工作人员之间的队列分开,这样一台服务器上的工作人员将负责处理一半队列,而其他队列则接下来的工作人员。
  3. 我喜欢第一个解决方案。但这有什么限制吗?

    感谢。

1 个答案:

答案 0 :(得分:13)

您应该可以将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的工作人员会被阻止。

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