我目前正在努力将我的环境从 Heroku 移开,并且我的部分应用程序正在运行一个时钟进程,该进程启动了 Sidekiq 后台作业。
据我了解,Sidekiq 由一个客户端和一个服务器组成,客户端发送作业以排队到 Redis 中,服务器拉出队列的请求并处理它们。我现在正在尝试将我的应用程序拆分为 Docker 上的以下容器: - Redis 容器 - 时钟容器(使用 Clockwork gem) - 工作容器 - Web 应用程序容器(Rails)
但是,我不确定应该如何拆分这个 Sidekiq 服务器和客户端。本质上,时钟容器需要在其上运行 Sidekiq,以便客户端可以每隔一段时间将作业发送到 Redis 队列。但是,工作容器也应该在它们上运行 Sidekiq(虽然是服务器),以便它们可以处理作业。我认为在不同容器之间划分职责应该是很可能的,因为 Heroku 允许您将其划分为各种 dyno。
我可以想象一种方法是分配时钟容器来拉出一个不存在的队列,这样它就永远不会从队列中拉出任何作业,然后将工作人员设置为拉出一个存在的队列。但是,这对我来说似乎不是最理想的方法,因为它仍然会检查这个不存在的队列中的新作业。
关于我如何开始做这件事的任何提示或指南?