Горизонтальное масштабирование узла.Яш экземпляров сервера на одном компьютере


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

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

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

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

2 7

2 ответа:

Multi-node - это библиотека, предоставляющая шаблон master/worker.

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

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

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