Heim > Web-Frontend > js-Tutorial > Hauptteil

Erlernen des Clustermoduls in Node

不言
Freigeben: 2018-06-30 14:23:53
Original
2045 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das Cluster-Modul von Node Learning Record vorgestellt. Der Inhalt ist ziemlich gut und ich werde ihn jetzt als Referenz verwenden.

Im Kontext heutiger Maschinen mit Multi-Core-CPUs kann das Single-Threaded-Design von Node die Maschinenleistung nicht mehr vollständig „quetschen“. Daher hat Node ab Version 0.8 ein integriertes Modul hinzugefügt – „Cluster“, daher der Name. Es kann die Cluster-Funktion realisieren, indem es eine Reihe untergeordneter Prozesse über einen übergeordneten Prozess verwaltet.

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length; // 获取CPU的个数
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
 
  cluster.on(&#39;exit&#39;, function(worker, code, signal) {
    console.log(&#39;worker &#39; + worker.process.pid + &#39; died&#39;);
  });
} else {
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}
Nach dem Login kopieren

Verwenden Sie das isMaster-Attribut, um zu bestimmen, ob es sich um den Master-Prozess handelt. Wenn ja, forken Sie den untergeordneten Prozess, andernfalls starten Sie einen Server. Jeder HTTP-Server kann denselben Port abhören. In tatsächlichen Projekten ist unser Startcode jedoch im Allgemeinen in app.js gekapselt. Andernfalls ist es nicht elegant, die gesamte Startlogik in das Obige einzubetten. Wir können also Folgendes tun:

var cluster = require(&#39;cluster&#39;);
var numCPUs = require(&#39;os&#39;).cpus().length;
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  // 其它代码
  
} else {
  require("./app.js");
}
Nach dem Login kopieren

Die Einfachheit besteht darin, dass die ursprüngliche Anwendungslogik nicht wissen muss, ob sie sich in einem Cluster oder einseitig befindet. (Wenn die Anwendung bestimmte Zustände im Speicher beibehält, z. B. Sitzungen, muss sie natürlich einen Mechanismus verwenden, um diese zu teilen. Ich werde hier nicht auf Details eingehen.)

Das Obige ist das Ganze Der Inhalt dieses Artikels wird für alle hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Wie NodeJS das asynchrone Bigpipe-Laden von Seiten implementiert

Über das auf dem FS-Modul basierende Node.js-System Methoden zum Lesen und Schreiben von Dateien und Verzeichnissen

Das obige ist der detaillierte Inhalt vonErlernen des Clustermoduls in Node. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!