Rails Sidekiq 可以独立部署在一台主机里、然后让部署在另一台主机里的 Rails 应用给它指派任务吗?

lampeagle · 2016年09月01日 · 最后由 bianjp 回复于 2016年09月07日 · 3273 次阅读

请教一个问题: 将 sidekiq 服务单独部署在一台主机里、然后 rails 应用部署在另一台主机。 这样的话,我们另一台主机上部署的 rails 应用怎么向这个独立部署的 sidekiq 服务指派任务呢?

两者之间数据交换是通过外部数据库 Redis 和 MySQL 来传递的呀

@huacnlee 了解了,O(∩_∩)O 谢谢。

这个图供参考,(15 分钟部分不准确,请忽视)

#3 楼 @xiaoronglv 是 15 秒取一次吧 https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs#checking-for-new-jobs

Sidekiq's scheduler is not meant to be second-precise. It checks for scheduled jobs approximately every 15 seconds by default. You can adjust this interval:

@xiaoronglv @alucardpj 看到这个图更清晰了它们之间的协作方式,O(∩_∩)O 谢谢你们。

借此贴问一下,有没有可能实现多个 Rails 应用共用同一个 Sidekiq server? 有时一台服务器要部署多个项目,每个项目都单独运行一个 Sidekiq server 的话是比较耗资源的。

另外,Sidekiq Wiki 中推荐的守护进程管理方式是使用进程管理器如 systemd 和 upstart,然而一台服务器上运行多个 Sidekiq 实例就不太好用 systemd 管理了(需要为每个实例写一个 systemd service)。

#6 楼 @bianjp 按照我的经验,能否多个 rails 应用公用一个 sidekiq server,取决于你这个 sidekiq server 需不需要加载 rails 环境。如果你只是作为独立的无业务逻辑任务执行来使用,比如 sidekiq 发送邮件,可以多个 rails 应用向同一个 redis db 中提交任务,然后由公共的 sidekiq server 来执行邮件发送,这种情况是没问题的。 但如果需要加载 rails 环境,比如需要用到 model,lib 等,由于不同的 rails 应用的 model、lib 等不一样,这种情况下公用一个 server 会出问题。

#6 楼 @bianjp sidekiq 不是 server,是 worker。

Linode 2G 实例才 10 刀一个月,没必要混装多个应用。

#6 楼 @bianjp 不行,它需要载入项目代码,才能有效的执行。

此外你一台机器部署过个应用的方式也是不妥的,应该把机器弄小,独立部署。

#9 楼 @huacnlee 没办法,公司业务杂,项目多,只能一台服务器上部署多个应用。通过 Redis 的 db 或 namespace 隔离后应该没什么问题,至少暂时还没遇到过。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号