如何设置 'workers' 服务器负责来自其他服务器的 运行 作业

How to set up 'workers' server responsible for running jobs from another servers

假设我们有 2 台服务器。一台 app 服务器,其中是 http 服务器、应用程序服务器和应用程序,它将对世界开放。另一台服务器 worker 应该只 运行 Sidekiq 作业(有应用程序、Redis 和 Sidekiq)。

如何配置 Sidekiq 使来自 app 服务器的作业和 worker 服务器中的 运行 作业排队?

您的 app 服务器必须具有 Sidekiq gem 才能将作业排入队列,并且还可以访问位于 worker 服务器中的 Redis 数据库。我会使用现有的任何 Redis 云服务,让 app 服务器和 worker 服务器都可以访问它。

无论哪种方式,您基本上都需要在 appworker 服务器中配置 Sidekiqs,以便它们知道 read/write 作业的来源(Redis 数据库地址是什么) .

查看文档的这一部分:

https://github.com/mperham/sidekiq/wiki/Using-Redis

总而言之,您有两台服务器共享同一个 Redis 数据库。一个将作业排入队列,另一个运行它们。

另一个问题是,一旦工人们完成了他们的工作,他们将如何处理这些成果。在这种情况下,您有多种选择:将结果推回 Redis 队列,通过 HTTP 将结果发送到 app 服务器...