Горизонтальное масштабирование экземпляров сервера node.js на одном компьютере - PullRequest
7 голосов
/ 15 июня 2011

Запуск веб-сервера на node.js - это простая вещь (как видно из отличных примеров и документации), но мне интересно, как вы можете полностью использовать ресурсы ЦП выделенного сервера?

Посколькуnode.js является однопоточным, единственный способ использовать преимущества нескольких процессоров - использовать несколько процессов.Конечно, только один процесс может связываться с портом, поэтому кажется, что должен быть шаблон мастер / рабочий, в котором мастер разветвляет дочерние элементы, связывается с входящим портом и делегирует входящие соединения (и фактическую работу обработки) дочерним элементам.,(Возможно, через шаблон голодного потребителя?)

Это лучший способ масштабировать веб-сервер, на котором работает node.js?Если да, есть ли библиотеки для упрощения шаблона мастер / работник?Если нет, то какие шаблоны или настройки развертывания рекомендуются для наилучшего использования всех ресурсов выделенного компьютера?

(Это лучший вопрос для ServerFault ?)

Ответы [ 2 ]

6 голосов
/ 15 июня 2011

Многоузловая - это библиотека, предоставляющая шаблон мастер / рабочий.

Если процессам сервера не нужно иметь возможность общаться друг с другом, и вы не 't * используя Socket.IO , простой вариант - просто запустить один процесс / ядро, привязать к локальным портам и использовать что-то вроде nginx или HAProxy длябаланс нагрузки между ними.

2 голосов
/ 16 июня 2011

Если вы используете экспресс, я бы использовал кластер tj: http://learnboost.github.com/cluster/

Он обеспечивает «прозрачную» балансировку нагрузки на основе процессора, что хорошо, потому что вы можете использовать свое существующее приложение экспресс, и этоотносительно безболезненно масштабирует его по ядрам.

...