Узел: Scale socket.io / nowjs - масштабируется по разным экземплярам - PullRequest
11 голосов
/ 01 ноября 2011

Прежде чем приступить к написанию своего приложения, мне нужно знать, что делать, когда одного экземпляра node.js (express и (socket.io или nowjs)) больше не достаточно.

Вы можете сказать мнетеперь, когда мне не нужно заботиться о масштабировании, пока не настало время, но я не хочу разрабатывать приложение и сталкиваться с проблемами, потому что вы не можете легко масштабировать socket.io или nowjs в нескольких экземплярах.

Я недавно прочитал, что socket.io теперь поддерживает способ масштабирования с использованием Redis (с которым у меня также нет опыта).Nowjs построен на socket.io - работает ли он так же?На nowjs.org вы можете прочитать, что «распределенная версия NowJS» находится в стадии разработки и будет стоить денег.

Ответы [ 3 ]

14 голосов
/ 02 ноября 2011

Если вам нужно масштабировать узел, первое место, которое обычно начинают люди, - это установка балансировщика нагрузки перед несколькими экземплярами узла.Стандарт для этого сегодня - nginx, хотя я хотел бы проверить 'упругость' балансировщика узлов, появившуюся недавно.Вот пример того, как кто-то использует обратный прокси-сервер nginx для управления несколькими экземплярами узлов:

Node.js + Nginx - что теперь?

Второе, что вы упомянули, это сокет.io / nowjs.В зависимости от того, как вы используете эти фреймворки, вы можете столкнуться с ситуацией, когда вы захотите обмениваться контекстом между клиентами, которые обращаются к нескольким экземплярам node.js.Если это так, я бы порекомендовал использовать постоянное хранилище, такое как redis, для преодоления разрыва между экземплярами вашего узла.Вот пример:

Как повторно использовать соединение redis в socket.io?

Надеюсь, этого достаточно для чтения и ознакомления, чтобы начать, дайте мне знать, если у вас естьлюбые вопросы.

Удачного кодирования!

3 голосов
/ 04 ноября 2011

Еще одна полезная ссылка на 'Scaling Socket.IO' https://github.com/dshaw/talks/tree/master/2011-10-jsclub (слайды и пример приложения)

1 голос
/ 06 февраля 2012

Так же, как в обсуждении об использовании nginx для обратного прокси с socket.io, как я понимаю, по крайней мере, стабильная версия nginx 1.0.x не поддерживает проксирование соединений http / 1.1 (что необходимо чтобы socket.io работал с websockets). здесь описан обходной путь: http://www.letseehere.com/reverse-proxy-web-sockets, чтобы заставить его работать, или используйте что-то вроде этого: https://github.com/nodejitsu/node-http-proxy Вместо этого, ребята из nodejitsu говорят, что это должно его поддерживать.

...