как Strongloop супервизор обрабатывает соединения через веб-сокет?

У меня есть приложение node, к которому я подключаюсь из браузера с помощью WebSockets.

Если я запускаю это приложение под супервизором (slc run --cluster cpu myapp.js), будет ли соединение через веб-сокет всегда перенаправляться на одного и того же работника после его установки? Или супервизор будет выполнять какую-то балансировку нагрузки при пересылке сообщений, отправляемых на это соединение?


person akonsu    schedule 21.01.2015    source источник


Ответы (1)


strong-supervisor сам по себе абсолютно не выполняет балансировку нагрузки или кластеризацию: он автоматически запускает и настраивает кластер узлов (http://nodejs.org/api/cluster.html)

Кластер узлов распределяет соединения на уровне TCP, он ничего не знает о протоколах, работающих по ним.

При использовании веб-сокетов у вас есть два варианта: использовать nginx или другой балансировщик нагрузки, который поддерживает веб-сокеты, или не предполагать, что соединения веб-сокетов и http имеют сходство с процессом, и сохранять общее состояние вне процесса, возможно, базы данных.

Если вы используете socket.io, посмотрите https://github.com/automattic/socket.io-redis и https://github.com/strongloop/strong-cluster-socket.io-store

person Sam Roberts    schedule 21.01.2015