Rails指南介绍了使用常规Rails应用程序运行ActionCable独立服务器的机会。但是我想了解这种方法在在docker容器中运行Rails应用程序的上下文中的好处。为什么它可能对例如缩放有用?
答案 0 :(得分:2)
主要好处是分离关注点和冗余。拥有独立的ActionCable服务器使您可以完全独立于Rails服务器进行扩展。
例如,让我们在ActionCable代码中存在内存泄漏的问题,该问题与Rails服务器部署在同一容器中。最终它将使整个应用程序崩溃。如果分开,则Rails服务器仍将运行,同时您可以解决内存问题并重新部署ActionCable服务器。
最好将ActionCable服务器视为WebSocket服务器,因为这确实是事实。从理论上讲,这种关注点分离使您可以相对快速地更改WebSocket服务器的框架,也许是用Go编写的东西。实际上,尽管ActionCable与Rails代码高度集成,所以并不是那么简单,但这是其背后的主要思想之一。
就冗余而言,假设您获得的HTTP请求数量是WS请求数量的10倍(即使它们不完全可比)。如果将服务器分隔在容器中,则我们可能不希望以相同的速度缩放Web Rails服务器和ActionCable服务器。假设我们有6个容器的Rails服务器,而只有2个容器的ActionCable服务器,从而节省了资源。