首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Resque -在多个服务器之间均匀分配作业负载

Resque -在多个服务器之间均匀分配作业负载
EN

Stack Overflow用户
提问于 2012-10-18 07:10:58
回答 2查看 296关注 0票数 1

我有一个Rails应用程序,使用Resque在多个服务器上执行后台工作。这些作业在资源需求方面是不同的,所以我想限制每个服务器可以执行的特定类型的作业的数量。我希望能够有多个服务器查询相同的Redis数据库。

这是一个场景:我将Server-1和Server-2连接到同一个Redis数据库。

1)每台服务器最多只能处理3个“编码”作业和5个“解析”作业(总共8个作业)。

2)在给定时刻,Redis-server将在“编码”队列中有10个作业,在“解析”队列中有12个作业可供Resque工作人员处理。我有2台服务器在运行,查询相同的数据库。

问:如何防止Server-1执行8个“编码”作业,而Server-2执行其余作业?换句话说,如何限制Server-1只接受“编码”队列中的3个作业和“解析”队列中的5个作业,并让Server-2执行相同的操作?

我想保持代码的通用性,这样我就可以将它部署到多个服务器上,而不需要单独调整。

EN

回答 2

Stack Overflow用户

发布于 2012-10-19 14:22:14

这不是你可以或应该在redis级别上做的事情。您需要一个主管,它位于应用程序对redis实例的请求之间。我已经很长一段时间没有为ruby编写任何产品级别的东西了,所以我不能推荐一个最喜欢的候选人,但我相信ruby社区中会有一些东西可以做你需要的事情。

票数 0
EN

Stack Overflow用户

发布于 2012-10-29 01:15:50

你可以通过一个像这样的cant任务(我猜)实现这一点。

rake resque:workers COUNT=8 QUEUE=encoding_queue,parsing_queue BACKGROUND=yes

但是如果你能把你的rake任务分成两部分,那么你就可以

SERVER-1

rake resque:workers COUNT=3 QUEUE=encoding_queue BACKGROUND=yes

rake resque:workers COUNT=5 QUEUE=parsing_queue BACKGROUND=yes

SERVER-2上重复相同的步骤

希望这对你有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12944795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档