Mol*_*far 1 ruby ruby-on-rails ruby-on-rails-5 actioncable
Rails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 Docker 容器中运行 Rails 应用程序的好处。例如,为什么它对于缩放可能有用?
主要好处是关注点分离和冗余。拥有独立的 ActionCable 服务器允许您完全独立于 Rails 服务器进行扩展。
例如,您的 ActionCable 代码中存在内存泄漏问题,并且它部署在与 Rails 服务器相同的容器中。它最终会导致整个应用程序瘫痪。如果它是分开的,Rails 服务器仍将运行,同时您可以修复内存问题并重新部署 ActionCable 服务器。
最好将 ActionCable 服务器视为 WebSocket 服务器,因为它确实如此。理论上,这种关注点分离允许您相对快速地更改 WebSocket 服务器的框架,也许是用 Go 编写的东西。实际上,虽然 ActionCable 与 Rails 代码高度集成,所以它并不是那么简单,但这是其背后的主要思想之一。
就冗余而言,假设您获得的 HTTP 请求量是 WS 请求量的 10 倍(尽管它们并不完全可比)。如果服务器分开在一个容器中,我们可能不希望以相同的速率扩展 Web Rails 服务器和 ActionCable 服务器。这使得我们可以拥有 6 个 Rails 服务器容器,而只有 2 个 ActionCable 服务器容器,从而节省资源。