2017-01-21 19 views
0

у меня есть некоторые трудности в понимании этот кусок кода:Nodejs модуль кластера - Как это работает во время прослушивания на патрубках

const cluster = require('cluster'); 
const http = require('http'); 
const numCPUs = require('os').cpus().length; 

if (cluster.isMaster) { 
    console.log(`Master ${process.pid} is running`); 

    // Fork workers. 
    for (let i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

    cluster.on('exit', (worker, code, signal) => { 
    console.log(`worker ${worker.process.pid} died`); 
    }); 
} else { 
    // Workers can share any TCP connection 
    // In this case it is an HTTP server 
    http.createServer((req, res) => { 
    res.writeHead(200); 
    res.end('hello world\n'); 
    }).listen(8000); 

    console.log(`Worker ${process.pid} started`); 
} 

Я не понимаю отношения между родителем и работником. Родитель запускает дочерние процессы и ждет их, но как разделение нагрузки между рабочими (детьми)

Как возможно, чтобы несколько процессов связывались с одним и тем же портом в процессе дочернего процесса?

ответ

2

Я не уверен, прочитали ли вы это. Есть прекрасное объяснение.
https://nodejs.org/dist/latest-v6.x/docs/api/cluster.html#cluster_how_it_works
Просто, кластер модуль будет заботиться об этом. Вы не должны беспокоиться об этом.

Множественные процессы не привязаны к одному порту

method1 (Круговой подход - по умолчанию за исключением окон):
Master привязан к порту, слушает и принимает входящие соединения и он распределяет работу с подчиненными устройствами, и связь происходит через сокеты ipc
Здесь каждый раб получает равную возможность рабочей нагрузки.

Метод 2 (несбалансированный подход):
Мастер привязан к порту (Помните, что не принимает соединения) и сокет прослушивания совместно с ведомыми процессов.
Теперь несет ответственность за ведомые устройства, чтобы принимать соединения и обрабатывать запросы.
Здесь находится основная операционная система, которая распределяет работу по всем процессам. Это справедливое планирование, выполняемое ОС. Если работа небольшая, в большинстве случаев ее одно и то же рабство выполняет эту работу.