Scale SocketIO (NowJS) - PullRequest
       19

Scale SocketIO (NowJS)

2 голосов
/ 11 декабря 2011

В настоящее время я использую Linode для развертывания своего приложения. У меня есть 2 сервера, 1 сервер базы данных с 1 балансировщиком нагрузки впереди.

Я использую Redis в качестве базы данных и NowJS для реализации чатов. Все отлично работает, используя Pub / Sub. Теперь я хочу использовать кластер, чтобы использовать преимущества многоядерного сервера. Однако при применении кластера я столкнулся со странной ситуацией. Иногда приложение работает, иногда оно не работает, примерно 25% работает, а 75% не работает (я запустил 4 процесса). Таким образом, я могу предположить, что кластер приводит к тому, что nowJS не работает должным образом. Теперь я должен принять решение

1. Переключитесь на SocketIO и используйте RedisStore (можно ли по-прежнему использовать pub / sub вместе с RedisStore for SocketIO? Или полностью переключиться на RedisStore)

2. Забудьте о кластеризации и добавьте больше серверов, если это необходимо (Это пустая трата ресурсов, поскольку несколько ядер не используются)

P / s: извините за плохой английский, я не родной.

1 Ответ

0 голосов
/ 11 декабря 2011

Я не уверен, что вы говорили о 25% и 75%, но если вы имеете в виду процессор / память, вы должны знать, что Node очень эффективен, когда ему нечего делать, так что это может объяснить ситуация.

Кроме того, единственный способ использовать несколько ядер состоит в том, чтобы порождать больше процессов (таким образом, использовать кластер).

Тот факт, что вы используете RedisStore (так что Socket.IO может хранить данные соединения в памяти вместо одного процесса => для масштабирования вне одного процесса) и Redis для pub / sub превосходен, вы можете использовать их автономно с Socket .IO также (NowJS - это еще один уровень абстракции над Socket.IO).

Таким образом, вам следует использовать несколько процессов, а затем пытаться масштабировать по горизонтали (обновить компьютер) и только после попытки масштабировать по вертикали (добавляя больше компьютеров).

...