多个服务器上的resque worker

bik*_*shp 2 ruby background resque ruby-on-rails-3

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

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

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

谢谢.

Win*_*eld 13

您应该能够在任何数量的服务器上传播您的Resque工作者而不会出现任何问题.

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

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

话虽这么说,我改变了不同工作人员处理队列的优先顺序,以便即使大多数资源专用于更高优先级的工作,给定类型的工作也可能找到工作人员帮助.

例如,有6名工人和3种类型的queus:

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
Run Code Online (Sandbox Code Playgroud)

这个设置保证关键工作将在任何工人的任何其他工作之前处理.但是,如果系统被电子邮件作业淹没,如果需要进行维护工作,则只会阻止2/3的工作人员.

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