Каковы преимущества автономного сервера ActionCable? - PullRequest
0 голосов
/ 24 октября 2018

Руководство по Rails описывает возможность запуска автономного сервера ActionCable с обычным приложением Rails.Но я хочу понять преимущества такого подхода в контексте запуска приложения Rails в докер-контейнерах.Почему это может быть полезно для масштабирования, например?

1 Ответ

0 голосов
/ 24 октября 2018

Основным преимуществом является разделение задач и избыточность.Наличие автономного сервера ActionCable позволяет вам масштабировать его полностью независимо от вашего сервера Rails.

Например, давайте допустим проблему утечки памяти в вашем коде ActionCable, и он будет развернут в том же контейнере, что и сервер Rails,Это в конечном итоге разрушит все приложение.Однако если он разделен, сервер Rails все еще будет работать, пока вы сможете исправить проблему с памятью и повторно развернуть сервер ActionCable.

Лучше думать о сервере ActionCable как о сервере WebSocket, так как это действительно так.является.Теоретически это разделение интересов позволяет вам относительно быстро изменить структуру вашего WebSocket-сервера, возможно, что-то написанное на Go.В действительности, хотя ActionCable в значительной степени интегрирован с кодом Rails, поэтому он не так прост, но это одна из основных идей.

С точки зрения избыточности, скажем, вы получаете в 10 раз больше HTTP-запросовпо сравнению с запросами WS (хотя они не совсем сопоставимы).Если сервер разделен в контейнере, мы можем не захотеть масштабировать веб-сервер Rails и сервер ActionCable с одинаковой скоростью.Это позволяет нам, скажем, иметь 6 контейнеров серверов Rails, в то время как только 2 контейнера серверов ActionCable, тем самым экономя ваши ресурсы.

...