
Node.js | Кластеризация
Зачем нужна кластеризация?
В большинстве случаев, конечно, она может и не понадобиться, но когда нагрузка на приложение нарастает, приложению становится сложнее обрабатывать запросы. Напомню, что Node.js сам по себе однопоточный. Улучшить ситуацию может как раз таки кластеризация.
И так, основная цель кластеризации - запуск нескольких экземпляров приложение и распределение между ними запросов.
Мы будем использовать встроенный в Node.js модуль Cluster.
Для начала объявим необходимые зависимости:
Теперь создадим экземпляр Express приложения и повесим на него обработчик. В обработчике будем выводить ID воркера, который обрабатывает запрос в данный момент.
Зачем нужна кластеризация?
В большинстве случаев, конечно, она может и не понадобиться, но когда нагрузка на приложение нарастает, приложению становится сложнее обрабатывать запросы. Напомню, что 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('Кластеризация'))