Node.js auf Multi-Core-Computern
Die aktuelle Popularität von Node.js hat einige Zweifel aufkommen lassen, dass es nur auf einzelne Prozesse abzielt und Threads sind optimiert. Wie lässt sie sich also auf Multi-Core-CPUs und Multi-CPU-Server skalieren?
Schränkt Single-Threading wirklich die Leistung ein?
Obwohl Single-Thread-Server schnell genug sind, müssen wir unter hoher Last die Vorteile von Multi-Core-Prozessoren voll ausnutzen. Die Parallelisierung von Aufgaben ist ein aktueller Trend zur Beschleunigung von Anwendungen.
Node.js kombiniert mit Multi-Cores
Node.js lässt sich auf Multi-Core-Computer skalieren. Es wird durch die folgenden Methoden implementiert:
1. Prozessaufteilung
Für anspruchsvolle Rechenaufgaben wie Bildkodierung kann Node.js untergeordnete Prozesse starten oder unterstützen andere Worker-Prozesse Nachricht senden. Bei diesem Design verwaltet ein Thread den Ereignisfluss, während N Prozesse schwere Rechenaufgaben ausführen und dabei die anderen 15 CPUs voll ausnutzen.
2. Multi-Server-Parallelität
Für die Skalierung von Webdiensten sollten mehrere Node.js-Server auf einem Computer ausgeführt werden, mit einem Kern pro Server und amortisiertem Anforderungsverkehr . Dies sorgt für eine hervorragende CPU-Affinität und skaliert den Durchsatz nahezu linear mit zunehmender Anzahl der Kerne.
Verwenden Sie das Cluster-Modul, um den Durchsatz von Webdiensten zu skalieren
Ab v6.0.X enthält Node.js direkt das Cluster-Modul, was die Einrichtung vereinfacht Mehrere Knoten-Worker-Prozesse, die an einem einzelnen Port lauschen können. Beachten Sie, dass sich dies vom älteren Learnboost-„Cluster“-Modul unterscheidet, das über npm verfügbar ist.
if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } } else { http.Server(function(req, res) { ... }).listen(8000); }
Arbeitsprozesse konkurrieren um die Annahme neuer Verbindungen, und der Prozess mit der geringsten Auslastung gewinnt mit größerer Wahrscheinlichkeit. Dies funktioniert gut und skaliert den Durchsatz gut auf Multi-Core-Maschinen.
Load-Balancing optimieren
Neben der Verwendung des Cluster-Moduls können auch die folgenden Schritte helfen, den Multi-Core-Load-Balancing weiter zu verbessern:
Das obige ist der detaillierte Inhalt vonWie erreicht Node.js, eine Single-Threaded-Umgebung, Skalierbarkeit auf Multi-Core-Systemen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!