独立 ActionCable 服务器有哪些优点?

Mol*_*far 1 ruby ruby-on-rails ruby-on-rails-5 actioncable

Rails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 Docker 容器中运行 Rails 应用程序的好处。例如,为什么它对于缩放可能有用?

Lai*_*zer 5

主要好处是关注点分离和冗余。拥有独立的 ActionCable 服务器允许您完全独立于 Rails 服务器进行扩展。

例如,您的 ActionCable 代码中存在内存泄漏问题,并且它部署在与 Rails 服务器相同的容器中。它最终会导致整个应用程序瘫痪。如果它是分开的,Rails 服务器仍将运行,同时您可以修复内存问题并重新部署 ActionCable 服务器。

最好将 ActionCable 服务器视为 WebSocket 服务器,因为它确实如此。理论上,这种关注点分离允许您相对快速地更改 WebSocket 服务器的框架,也许是用 Go 编写的东西。实际上,虽然 ActionCable 与 Rails 代码高度集成,所以它并不是那么简单,但这是其背后的主要思想之一。

就冗余而言,假设您获得的 HTTP 请求量是 WS 请求量的 10 倍(尽管它们并不完全可比)。如果服务器分开在一个容器中,我们可能不希望以相同的速率扩展 Web Rails 服务器和 ActionCable 服务器。这使得我们可以拥有 6 个 Rails 服务器容器,而只有 2 个 ActionCable 服务器容器,从而节省资源。