Кластеризация методом cluster.fork()
Поясните, пожалуйста, как именно работает метод cluster.fork()?
Имеется js-файл с таким кодом:
const os = require('os');
const cluster = require('cluster');
console.log('Master: ' + cluster.isMaster + ' ; PID: ' + process.pid);
if (cluster.isMaster) {
console.log(`Главный процесс с pid ${process.pid}`);
for (let i = 0; i < os.cpus().length - 2; i++) {
cluster.fork();
}
cluster.on('exit', (worker) => {
console.log(`Worker с pid ${worker.process.pid} умер`);
cluster.fork();
})
} else {
console.log(`Worker process с pid ${process.pid} запущен`);
setInterval(() => {
console.log(`Процесс с pid ${process.pid} ещё работает`);
}, 5000);
}
При запуске выдаёт выводит следующее:
Если я правильно понимаю, метод cluster.fork() создаёт клон процесса, только выставляет ему влаг isWorker. Клонированный процесс запускает свой экземпляр приложения заново - в данном случае отрабатывает код всего файла сначала (а не с блока else). Правильно ли я понял этот момент - запуск приложения по новой для дочерних процессов?
