Я был разработчиком веб-приложений ruby/php в течение достаточно долгого времени, и я привык к идее горизонтального масштабирования экземпляров сервера для обработки большего количества запросов. Горизонтальное масштабирование — это означает, что отдельные экземпляры приложения, находящиеся за балансировщиком нагрузки, не имеют ничего общего и не знают друг о друге.
Главный вопрос, который у меня есть, заключается в том, что, поскольку Node.js и его акцент на evented-io позволяет одному блоку, на котором работает сервер node.js, обрабатывать «тысячи» одновременных запросов — используется ли балансировка нагрузки/горизонтальное масштабирование для масштабирования приложений nodejs ? Ограничивается ли масштабирование приложения узла вертикальным масштабированием (затрачивая больше оперативной памяти/вычислительной мощности на проблему)?
Мой второй вопрос связан с горизонтальным масштабированием node.js и веб-сокетами. Я видел довольно много руководств по чату Node.js, в которых используются веб-сокеты. (избранное: http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial)
Поскольку веб-сокеты эффективно поддерживают открытую линию связи между браузером и сервером, может ли горизонтально масштабируемая архитектура, типичная для мира PHP/Ruby, привести к тому, что приложение чата, подобное объясненному в ссылке, сломается, поскольку новые запросы на подключение к веб-сокету будут назначены разным процессам/серверам, и не будет одного центрального ресурса, отслеживающего всех подключенных клиентов?