2台服务器 运行 Rails + Sidekiq,使用相同的redis服务器会导致意外行为吗?

Will 2 servers running Rails + Sidekiq, using the same redis server cause unexpected behavour?

我打算迁移我的 2 个 sidekiq 实例以使用 1 个 Redis 数据库。我担心竞争条件可能存在问题。这样做安全吗?

我目前有 2 rails 个生产服务器在负载均衡器后面。每个服务器都被克隆,运行 一个 rails 应用程序,sidekiq 和一个 redis 数据库。

暂存环境具有相同的设置。但是,我已将两个 sidekiq 实例连接到一个 Redis 数据库。

到目前为止,我没有遇到任何问题,但是暂存环境的流量不多,无法看到任何明显的效果。

您至少应该使用不同的 redis 数据库进行暂存和生产,这样来自一个环境的任务不会最终在另一个环境中 运行。

在您当前的设置中,来自一台服务器的任务仅由同一台服务器执行,但这不是必需的 - 您可以在服务器(sidekiq is designed to run fine this way)之间共享 sidekiq 实例池,只要它们具有相同或兼容的代码版本(当新版本的任务最终被旧版本选择时,推出新版本时可能会出现问题)。

这个设置实际上更好 - 如果一个 sidekiq 实例的所有线程都忙,来自相应服务器的任务仍然可以 运行 在另一台上。