【发布时间】:2018-10-24 14:00:51
【问题描述】:
Rails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 docker 容器中运行 Rails 应用程序的好处。例如,为什么它可能对缩放有用?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5 actioncable
Rails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 docker 容器中运行 Rails 应用程序的好处。例如,为什么它可能对缩放有用?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5 actioncable
主要好处是关注点和冗余的分离。拥有独立的 ActionCable 服务器可以让您完全独立于 Rails 服务器进行扩展。
例如,假设您的 ActionCable 代码中存在内存泄漏问题,并且它与 Rails 服务器部署在同一个容器中。它最终会使整个应用程序崩溃。如果它被分离,Rails 服务器仍将运行,同时您可以修复内存问题并重新部署 ActionCable 服务器。
最好将 ActionCable 服务器视为 WebSocket 服务器,因为它确实如此。从理论上讲,这种关注点分离允许您相对快速地更改 WebSocket 服务器的框架,也许是用 Go 编写的。实际上,尽管 ActionCable 与 Rails 代码高度集成,所以并不是那么直接,但这是其背后的主要思想之一。
在冗余方面,假设您获得的 HTTP 请求数量是 WS 请求的 10 倍(即使它们不完全可比)。如果服务器在容器中分离,我们可能不希望以相同的速率扩展 Web Rails 服务器和 ActionCable 服务器。这允许我们假设有 6 个 Rails 服务器容器,而只有 2 个 ActionCable 服务器容器,从而节省资源。
【讨论】: