cluster модуль

Тема дорожной карты · Node.js

Модуль cluster Node.js позволяет серверному приложению порождать несколько рабочих процессов, совместно использующих один и тот же порт сервера, что даёт Node.js возможность в полной мере задействовать многоядерные системы. Поскольку JavaScript выполняется в одном потоке, модуль cluster является стандартным способом масштабирования нагрузки, интенсивной по CPU, без обращения к внешним инструментам. Главный процесс управляет рабочими, вызывая cluster.fork() для каждого ядра процессора, и при аварийном завершении рабочего может автоматически перезапустить его для поддержания доступности. Взаимодействие между главным процессом и рабочими происходит через канал межпроцессного взаимодействия, что позволяет отправлять сообщения и обмениваться состоянием контролируемым образом. Использование модуля cluster является базовой техникой построения высокопроизводительных серверных сервисов на Node.js, способных надёжно обрабатывать конкурентные запросы.

Как это работает

cluster модуль масштабирует Node за одно ядро. Модуль cluster форкает worker-процессы, делящие порт сервера. PM2 оборачивает cluster + добавляет рестарт на crash, управление логами, zero-downtime reload. Контейнеры + оркестратор (Kubernetes, Nomad, Docker Compose с replicas) — современная альтернатива: один процесс на контейнер, масштаб по количеству контейнеров. Перед ними всегда load balancer (nginx, caddy, traefik).

Когда применять

cluster/PM2 — для single-host bare-metal или VM. Контейнеры + оркестратор — для multi-host production: та же модель масштабирования, лучше тулинг. Старый совет "один worker на CPU-ядро" работает; с контейнерами — один Node-процесс на контейнер, оркестратор задаёт количество.

Типичные ошибки

Ловушки cluster модуль: расчёт, что workers делят память (нет — Redis для общего state); неверная sticky session за балансировщиком (WebSocket-клиенты прыгают между workers, теряют state); PM2 внутри контейнеров (двойная оркестрация); нет graceful SIGTERM (in-flight запросы дропаются на rolling restart). Drain соединений на shutdown.

Связанные понятия

Полезные ресурсы