我有一个带有 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 执行相同的操作?
我想保持代码的通用性,以便我可以将其部署到多个服务器而无需单独调整..