假设我们有 2 台服务器。一个app
服务器,其中包含http服务器、应用程序服务器和应用程序,它将向全世界开放。另一个服务器 worker
应该仅运行 Sidekiq 作业(具有应用程序、Redis 和 Sidekiq)。
如何配置 Sidekiq 将作业从 app
服务器排队并在 worker
服务器中运行它们?
最佳答案
您的 app
服务器必须具有 Sidekiq gem 才能对作业进行排队,并且还可以访问位于 worker
服务器中的 Redis 数据库。我只会使用现有的任何 Redis 云服务,并让 app
服务器和 worker
服务器都可以访问它。
无论哪种方式,您基本上都需要在 app
和 worker
服务器中配置 Sidekiq,以便它们知道从哪里读取/写入作业(Redis 数据库是什么)地址)。
检查文档的这一部分:
https://github.com/mperham/sidekiq/wiki/Using-Redis
总而言之,您有两台共享同一个 Redis 数据库的服务器。一个将作业排入队列,另一个运行它们。
另一个问题是,一旦 worker 完成工作,他们如何处理结果。在这种情况下,您有多种选择:将结果推送回 Redis 队列,通过 HTTP 将结果发送到 app
服务器...
关于ruby-on-rails - 如何设置 'workers' 服务器负责从其他服务器运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139170/