ruby-on-rails - 如何设置 'workers' 服务器负责从其他服务器运行作业

标签 ruby-on-rails ruby redis sidekiq

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

如何配置 Sidekiq 将作业从 app 服务器排队并在 worker 服务器中运行它们?

最佳答案

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

无论哪种方式,您基本上都需要在 appworker 服务器中配置 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/

相关文章:

memory - 对 redis 集进行尺寸标注

ruby-on-rails - Rails 背景图片上传导致应用程序超时

ruby-on-rails - 设计如何在 View 中访问资源/资源名称

ruby-on-rails - 如何访问数组中的实例变量?

ruby-on-rails - 刷新使用 ||= 设置的类实例变量

ruby - Rails 应用程序中的 Redis::TimeoutError

node.js - Node Redis : How to filter a sorted set of keys and retrieve each keys hashed values in one call

ruby-on-rails - 搜索模型 tagged_with 或 title like (with acts_as_taggable_on)

ruby - 设计不允许事件资源访问服务

redis - 如何在 3.0.7 上迁移 redis 集群中的巨大 key ?