Node.js | Кластеризация



Зачем нужна кластеризация?

В большинстве случаев, конечно, она может и не понадобиться, но когда нагрузка на приложение нарастает, приложению становится сложнее обрабатывать запросы. Напомню, что Node.js сам по себе однопоточный. Улучшить ситуацию может как раз таки кластеризация.

И так, основная цель кластеризации - запуск нескольких экземпляров приложение и распределение между ними запросов.



Мы будем использовать встроенный в Node.js модуль Cluster.

Для начала объявим необходимые зависимости:

var os = require('os')

var cluster = require('cluster')

var express = require('express')


Теперь создадим экземпляр Express приложения и повесим на него обработчик. В обработчике будем выводить ID воркера, который обрабатывает запрос в данный момент.

var app = express()

app.use((req, res, next) => {

if (cluster.isWorker) {

console.log('Воркер', cluster.worker.id, 'поймал запрос')

}

next()

})

app.get('/', (req, res) => res.send('Кластеризация'))