Zoeken…


Syntaxis

  • const cluster = vereisen ("cluster")
  • cluster.fork ()
  • cluster.isMaster
  • cluster.isWorker
  • cluster.schedulingPolicy
  • cluster.setupMaster (instellingen)
  • cluster.settings
  • cluster.worker // in werknemer
  • cluster.workers // in master

Opmerkingen

Merk op dat cluster.fork() een onderliggend proces cluster.fork() dat het huidige script vanaf het begin begint uit te voeren, in tegenstelling tot de systeemaanroep fork() in C die het huidige proces kloont en verdergaat met de instructie na de systeemaanroep in zowel bovenliggende als kind proces.

De Node.js Documentatie heeft een meer complete gids voor clusters hier

Hallo Wereld

Dit is jouw cluster.js :

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

if (cluster.isMaster) {
  // 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
  require('./server.js')();
}

Dit is je server.js :

const http = require('http');

function startServer() {
    const server = http.createServer((req, res) => {
      res.writeHead(200);
      res.end('Hello Http');
    });

    server.listen(3000);
}

if(!module.parent) {
    // Start server if file is run directly
    startServer();
} else {
    // Export server, if file is referenced via cluster
    module.exports = startServer;
}

In dit voorbeeld hosten we een eenvoudige webserver, maar we draaien werknemers (onderliggende processen) op met behulp van de ingebouwde clustermodule . Het aantal processen forker is afhankelijk van het aantal beschikbare CPU-cores. Hierdoor kan een Node.js-toepassing profiteren van multi-core CPU's, omdat een enkele instantie van Node.js in een enkele thread wordt uitgevoerd. De applicatie deelt nu poort 8000 in alle processen. Lasten worden standaard automatisch verdeeld over werknemers met behulp van de Round-Robin-methode.

Cluster Voorbeeld

Een enkele instantie van Node.js uitgevoerd in een enkele thread. Om te profiteren van multi-core systemen, kan de applicatie worden gestart in een cluster van Node.js-processen om de belasting af te handelen.

Met de cluster kunt u eenvoudig onderliggende processen maken die allemaal serverpoorten delen.

In het volgende voorbeeld wordt het onderliggende werkproces gemaakt in het hoofdproces dat de belasting over meerdere kernen afhandelt.

Voorbeeld

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length; //number of CPUS

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();    //creating child process
  }

  //on exit of cluster
  cluster.on('exit', (worker, code, signal) => {
      if (signal) {
        console.log(`worker was killed by signal: ${signal}`);
      } else if (code !== 0) {
        console.log(`worker exited with error code: ${code}`);
      } else {
        console.log('worker success!');
      }
  });
} 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(3000);
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow