Suche…


Syntax

  • const cluster = required ("Cluster")
  • cluster.fork ()
  • cluster.isMaster
  • cluster.isWorker
  • cluster.schedulingPolicy
  • cluster.setupMaster (Einstellungen)
  • cluster.settings
  • cluster.worker // in worker
  • cluster.workers // in master

Bemerkungen

Beachten Sie, dass cluster.fork() einen cluster.fork() Prozess erzeugt, der mit der Ausführung des aktuellen Skripts von Anfang an beginnt, im Gegensatz zum Systemaufruf fork() in C, der den aktuellen Prozess cluster.fork() und die Anweisung nach dem Systemaufruf in parent und fortsetzt Kindprozess.

Die Node.js Dokumentation hat eine komplette Anleitung zum Cluster hier

Hallo Welt

Dies ist Ihre 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')();
}

Dies ist dein 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 diesem Beispiel hosten wir einen einfachen Webserver, wir starten jedoch Arbeiter (untergeordnete Prozesse) mithilfe des integrierten Cluster- Moduls. Die Anzahl der Prozesswähler hängt von der Anzahl der verfügbaren CPU-Kerne ab. Dies ermöglicht einer Node.js-Anwendung, Multi-Core-CPUs zu nutzen, da eine einzelne Instanz von Node.js in einem einzigen Thread ausgeführt wird. Die Anwendung teilt jetzt den Port 8000 über alle Prozesse hinweg. Lasten werden standardmäßig automatisch unter Verwendung der Round-Robin-Methode zwischen Arbeitern verteilt.

Cluster-Beispiel

Eine einzelne Instanz von Node.js in einem einzelnen Thread ausgeführt. Um die Vorteile von Multicore-Systemen zu nutzen, kann die Anwendung in einem Cluster von Node.js-Prozessen gestartet werden, um die Last zu handhaben.

Mit dem cluster Modul können Sie auf einfache Weise untergeordnete Prozesse erstellen, die alle Serverports gemeinsam nutzen.

Im folgenden Beispiel erstellen Sie den Worker Child-Prozess im Hauptprozess, der die Last über mehrere Kerne hinweg übernimmt.

Beispiel

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow