【发布时间】:2012-10-29 01:15:50
【问题描述】:
我有一个带有 Resque 的 Rails 应用程序,在多台服务器上执行后台作业。这些作业在资源需求方面有所不同,因此我想限制每个服务器可以执行的特定类型的作业数量。我希望能够让多台服务器查询同一个 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 执行相同的操作?
我想保持代码的通用性,以便我可以将其部署到多个服务器而无需单独调整..
【问题讨论】:
标签: ruby-on-rails redis resque