Heim > Web-Frontend > js-Tutorial > Worauf basiert der asynchrone Mechanismus des Knotens?

Worauf basiert der asynchrone Mechanismus des Knotens?

青灯夜游
Freigeben: 2022-07-11 19:18:27
Original
1614 Leute haben es durchsucht

Der asynchrone Mechanismus des Knotens basiert auf „Ereignissen“. Alle E/A-, Netzwerkkommunikations- und Datenbankabfragen werden auf nicht blockierende Weise ausgeführt und die zurückgegebenen Ergebnisse werden von der Ereignisschleife verarbeitet. Der Knoten verarbeitet nur ein Ereignis gleichzeitig und tritt sofort in die Ereignisschleife ein, um nachfolgende Ereignisse nach Abschluss zu überprüfen. Auf diese Weise können sich CPU und Speicher auf die gleichzeitige Verarbeitung einer Sache konzentrieren und gleichzeitig versuchen, die parallele Ausführung zeitaufwändiger E/A- und anderer Vorgänge zu ermöglichen.

Worauf basiert der asynchrone Mechanismus des Knotens?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, NodeJS Version 16, DELL G3-Computer.

NodeJS ist Single-Threading und bietet die folgenden Vorteile:

  • Einfach

  • Hohe Leistung, Vermeidung von häufigem Threadwechsel-Overhead

  • Es beansprucht weniger Ressourcen, da es Single-Threaded ist , und unter hoher Last Unter solchen Umständen ist die Speichernutzung immer noch sehr gering

  • Thread-sicher, es gibt keine Probleme wie Sperren, Entsperren und Deadlock

Wie löst man hohe Parallelität?

node verwendet asynchrone E/A und ereignisgesteuert (Rückruffunktion), um das Problem der hohen Parallelität zu lösen.

Im Allgemeinen bieten Lösungen mit hoher Parallelität ein Multithreading-Modell, das einen Thread für jede Geschäftslogik bereitstellt und den Zeitaufwand synchroner E/A-Aufrufe durch System-Thread-Switching ausgleicht. Wie bei Apache gibt es einen Thread pro Anfrage.

NodeJS verwendet ein Single-Threaded-Modell und asynchrone Anforderungsmethoden für alle E/A-Vorgänge, um häufige Kontextwechsel zu vermeiden. Wenn NodeJS ausgeführt wird, tritt es in die Ereignisschleife ein und wartet darauf Wenn ein Ereignis eintrifft, wird jede asynchrone E/A-Anforderung in die Ereigniswarteschlange verschoben, um auf die Ausführung zu warten.

Der asynchrone Mechanismus von NodeJS basiert auf Ereignissen. Alle E/A-, Netzwerkkommunikations- und Datenbankabfragen werden nicht blockierend ausgeführt und die zurückgegebenen Ergebnisse werden von der Ereignisschleife verarbeitet. Wie im Bild gezeigt:

Worauf basiert der asynchrone Mechanismus des Knotens?

Der Node.js-Prozess verarbeitet jeweils nur ein Ereignis. Nach Abschluss tritt er sofort in die Ereignisschleife ein, um nachfolgende Ereignisse zu überprüfen. Dies hat den Vorteil, dass sich CPU und Speicher auf die gleichzeitige Verarbeitung einer Sache konzentrieren können und gleichzeitig versuchen, die parallele Ausführung zeitaufwändiger E/A- und anderer Vorgänge zu ermöglichen. Bei langsamen Verbindungsangriffen fügt Node.js nur Anforderungen zur Ereigniswarteschlange hinzu und wartet auf die Antwort des Betriebssystems. Daher entsteht kein Multithreading-Overhead, was die Robustheit von Webanwendungen erheblich verbessern und böswillige Angriffe verhindern kann.

Ereignisschleifenmechanismus

Die sogenannte Ereignisschleife bedeutet, dass NodeJS den Ereignismechanismus verwendet, um alle asynchronen Vorgänge zu lösen. Es gibt einen Thread, der ständig in einer Schleife läuft, um die Ereigniswarteschlange zu erkennen.

Die gesamte Logik in NodeJS ist die Rückruffunktion von Ereignissen, daher befindet sich NodeJS immer in der Ereignisschleife und der Programmeintrag ist die Rückruffunktion des ersten Ereignisses in der Ereignisschleife. Die Ereignisrückruffunktion kann eine E/A-Anfrage ausgeben oder das Ereignis direkt ausgeben und nach der Ausführung zur Ereignisschleife zurückkehren. Die Ereignisschleife überprüft die Ereigniswarteschlange auf nicht behandelte Ereignisse, bis das Programm endet. Die Ereignisschleife von NodeJS ist für Entwickler unsichtbar und wird von der libev-Bibliothek implementiert. libev prüft ständig, ob aktive Ereignis-Listener erkannt werden können, und verlässt die Ereignisschleife erst, wenn keine Ereignis-Listener erkannt werden und das Programm beendet wird.

Worauf basiert der asynchrone Mechanismus des Knotens?

Weitere Informationen zu Knoten finden Sie unter:

nodejs-Tutorial!

Das obige ist der detaillierte Inhalt vonWorauf basiert der asynchrone Mechanismus des Knotens?. 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