ÜberblickNodejs basiert auf der V8-Engine des Chrome-Browsers, was bedeutet, dass sein Modell dem des Browsers ähnelt. Unser JavaScript wird in einem einzelnen Thread in einem einzelnen Prozess ausgeführt. Allerdings stellt die Single-Process- und Single-Thread-Struktur der V8-Engine keine perfekte Struktur dar. Heutzutage sind CPUs grundsätzlich Multi-Core-Prozessoren. Echte Server verfügen häufig über mehrere CPUs (so hat beispielsweise unsere physische Online-Maschine 12 Kerne), sodass sich bei der tatsächlichen Anwendung von Nodejs die Frage stellt: „Wie kann ich den vollen Nutzen aus Servern mit Mehrkern-CPUs ziehen?“ Streng genommen ist Node keine echte Single-Thread-Architektur, da Node selbst über I/O-Threads (Netzwerk-I/O, Festplatten-I/O) verfügt. Diese I/O-Threads werden von der untergeordneten libuv verwaltet, die für JavaScript-Entwickler transparent ist. JavaScript-Code wird immer auf V8 ausgeführt und ist ein Single-Thread. Oberflächlich betrachtet ist NodeJS also ein Single-Thread. So nutzen Sie die Multi-Core-CPU in node.js voll ausAngesichts des Problems der geringen Multi-Core-Auslastung von Einzelprozessen und Einzelthreads kann gemäß früheren Erfahrungen jeder Prozess eine CPU verwenden, um die Auslastung von Multi-Core-CPUs zu realisieren. Node stellt das Modul child_process sowie die Methode fork() bereit, um die Prozessreplikation zu implementieren (für die Replikation des Prozesses sind bestimmte Ressourcen und Zeit erforderlich. Node benötigt für die Replikation des Prozesses mindestens 10 MB Speicher und mindestens 30 ms). Eine solche Lösung ist der klassischste Master-Worker-Modus auf *nix-Systemen, auch als Master-Slave-Modus bekannt. Diese verteilte Architektur eines typischen Geschäftsmodells mit paralleler Verarbeitung weist eine gute Skalierbarkeit (Skalierbarkeit wird eigentlich im Zusammenhang mit parallelen Algorithmen und paralleler Computerarchitektur diskutiert. Die Skalierbarkeit eines Algorithmus auf einer bestimmten Maschine gibt an, ob der Algorithmus die zunehmende Anzahl von CPUs effektiv nutzen kann.) und Stabilität auf. Der Hauptprozess ist nicht für die spezifische Geschäftsabwicklung verantwortlich, sondern für die Planung und Verwaltung des Arbeitsprozesses. Der Arbeitsprozess ist für die spezifische Geschäftsabwicklung verantwortlich, daher müssen Entwickler auf die Stabilität des Arbeitsprozesses achten. Der von fork() kopierte Prozess ist ein unabhängiger Prozess, der über eine unabhängige und brandneue V8-Instanz verfügt. Obwohl Node fork() bereitstellt, um den Prozess zu kopieren, sodass jeder CPU-Kern verwendet werden kann, sollte man dennoch bedenken, dass der fork()-Prozess sehr teuer ist. Glücklicherweise kann Node ereignisgesteuert große gleichzeitige Anfragen in einem einzigen Thread verarbeiten. Hinweis: Das Starten mehrerer Prozesse dient hier nur der vollen Nutzung der CPU-Ressourcen und nicht der Lösung von Parallelitätsproblemen. 4 Möglichkeiten zum Erstellen von untergeordneten Prozessen in Node1. spawn() Erstellen Sie einen Unterprozess zum Ausführen des Befehls 2. exec() Erstellen Sie einen untergeordneten Prozess, um den Befehl auszuführen. Der Unterschied zu spawn() besteht darin, dass die Methodenparameter unterschiedlich sind. Es kann eine Rückruffunktion übergeben werden, um den Status des untergeordneten Prozesses abzurufen. 3. execFile() Startet einen Unterprozess zum Ausführen der angegebenen Datei. Beachten Sie, dass das SHEBANG-Symbol (#!) oben in der Datei deklariert werden muss, um den Prozesstyp anzugeben. 4. Gabel () Ähnlich wie spawn(), der Unterschied besteht darin, dass nur das JavaScript-Dateimodul ausgeführt werden muss, um einen untergeordneten Node-Prozess zu erstellen. Hinweis: Die folgenden drei Methoden sind erweiterte Anwendungen von spawn(). Oben finden Sie Einzelheiten dazu, wie node.js Multi-Core-CPUs voll ausnutzen kann. Weitere Informationen dazu, wie node.js Multi-Core-CPUs voll ausnutzen kann, finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So erstellen Sie schnell eine LAMP-Umgebung auf der CentOS-Plattform
>>: Detaillierte Erläuterung der Apache-Website-Dienstkonfiguration basierend auf Linux
Dieser Artikel beschreibt anhand von Beispielen v...
Lösung des Problems Bootstrap ist ein CSS-Framewo...
Inhaltsverzeichnis Überblick Einzelne Dateikompon...
Manchmal müssen wir Server stapelweise bedienen, ...
Ein Datensatz eines Online-MySQL-Transaktionsprob...
brauchen: Verwenden Sie Vue, um das Scannen von Q...
Mithilfe der Vue-Sprache und Elementkomponenten m...
Ich habe kürzlich bei der Entwicklung eines Proje...
<br />Beim Textdesign konzentrieren wir uns ...
Inhaltsverzeichnis Wirkung Beginnen Sie mit der T...
Inhaltsverzeichnis Vorwort Ressourcen zum Thema V...
Verwandte Wissenspunkte Übergeben von Werten von ...
In diesem Artikelbeispiel wird der spezifische Co...
Anaconda ist die beliebteste Python-Plattform für...
Dieser Artikel stellt Ihnen ein einfaches HTML-Ap...