【发布时间】:2015-03-24 05:16:15
【问题描述】:
假设我们有 2 台服务器。一个app 服务器,它是http 服务器、应用服务器和应用程序,它将向世界开放。另一台服务器worker 应该只运行 Sidekiq 作业(具有应用程序、Redis 和 Sidekiq)。
如何配置 Sidekiq 以从 app 服务器排队作业并在 worker 服务器中运行它们?
【问题讨论】:
标签: ruby-on-rails ruby redis sidekiq
假设我们有 2 台服务器。一个app 服务器,它是http 服务器、应用服务器和应用程序,它将向世界开放。另一台服务器worker 应该只运行 Sidekiq 作业(具有应用程序、Redis 和 Sidekiq)。
如何配置 Sidekiq 以从 app 服务器排队作业并在 worker 服务器中运行它们?
【问题讨论】:
标签: ruby-on-rails ruby redis sidekiq
您的 app 服务器必须具有 Sidekiq gem 才能将作业排入队列,并且还可以访问位于您的 worker 服务器中的 Redis 数据库。我会使用任何现有的 Redis 云服务,让app 服务器和worker 服务器都可以访问它。
无论哪种方式,您基本上都需要在 app 和 worker 服务器中配置 Sidekiq,以便它们知道从哪里读取/写入作业(Redis 数据库地址是什么)。
查看文档的这一部分:
https://github.com/mperham/sidekiq/wiki/Using-Redis
总而言之,您有两台服务器共享同一个 Redis 数据库。一个将作业排入队列,另一个运行它们。
另一个问题是,一旦工人完成工作,他们将如何处理结果。在这种情况下,您有多种选择:将结果推送回 Redis 队列,通过 HTTP 将结果发送到 app 服务器...
【讨论】: