Наконец напишем саму кластеризацию. Если текущий процесс приложения - основной, то мы пробегаемся циклом по числу доступных потоков процессора и создаём по экземпляру на каждый поток:

if (cluster.isMaster) {

let cpus = os.cpus().length



for(let i = 0; i < cpus; i++) {

cluster.fork()

}



cluster.on('exit', (worker, code) => {

console.log('Воркер', worker.id, 'завершен')

app.listen(3000, '127.0.0.1', () => console.log('Воркер', cluster.worker.id, 'запущен'))

})

} else {

app.listen(3000, '127.0.0.1', () => console.log('Воркер', cluster.worker.id, 'запущен'))

}




Готово, теперь можно посетить 127.0.0.1:3000 и увидеть в консоли, какой воркер поймал запрос.