Heim  >  Artikel  >  Web-Frontend  >  Warum Knoten eine hohe Parallelität haben können

Warum Knoten eine hohe Parallelität haben können

WBOY
WBOYOriginal
2022-04-22 14:45:213070Durchsuche

Da der Knoten über „transaktionsgesteuerte“ und asynchrone „E/A“-Eigenschaften verfügt, handelt es sich um einen nicht blockierenden asynchronen Vorgang. Für jede gleichzeitige Anforderung registriert der Server ein Auslöseereignis für die Anforderung und gibt eine Rückruffunktion zur Ausführung des Ereignisses aus Nach Abschluss der Verarbeitung wird die Rückruffunktion ausgeführt und anschließend die nächste Ereignisverarbeitung ausgeführt, sodass der Knoten eine hohe Parallelität erreichen kann.

Warum Knoten eine hohe Parallelität haben können

Die Betriebsumgebung dieses Tutorials: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.

Warum Knoten eine hohe Parallelität erreichen können

nodejs ist ein nicht blockierender asynchroner Vorgang. Für jede gleichzeitige Anfrage registriert der Server ein Auslöseereignis (I/O) für die Anfrage und stellt eine Rückruffunktion bereit (dieser Prozess blockiert keine neuen Verbindungsanfragen). Führen Sie die Ereignisverarbeitung (E/A) nacheinander aus, führen Sie die Rückruffunktion aus, nachdem die Verarbeitung abgeschlossen ist, und führen Sie dann die nächste Ereignisverarbeitung (E/A) aus.

Bevor wir erklären, warum ein Knoten eine hohe Parallelität erreichen kann, sollten Sie sich auch mit einigen anderen Merkmalen des Knotens vertraut machen: JavaScript hat in Browsern die gleichen Eigenschaften und der JavaScript-Hauptthread kann seinen Status nicht mit anderen Threads (z. B. E/A-Threads) im Knoten teilen.

Der Vorteil eines einzelnen Threads ist:

Es besteht keine Notwendigkeit, auf das Statussynchronisationsproblem zwischen Threads wie Multithreading zu achten Deadlock

    Natürlich hat Single-Threading auch viele Nachteile:
  • Die Multi-Core-CPU kann nicht vollständig ausgenutzt werden
  • Eine große Anzahl von Berechnungen, die die CPU belegen, führt zu Anwendungsblockierungen (d. h. nicht für die CPU geeignet). -intensiv)
  • Fehler führen dazu, dass die gesamte Anwendung beendet wird

  • Asynchrone E/A

  • Sie fragen sich vielleicht, da der Knoten Single-Threaded ist und alle Ereignisse in einem Thread verarbeitet werden, sollte das nicht so sein? sehr ineffizient sein und einer hohen Parallelität widersprechen?
  • Im Gegenteil, die Leistung des Knotens ist sehr hoch. Einer der Gründe dafür ist, dass der Knoten über eine asynchrone E/A-Funktion verfügt. Immer wenn eine E/A-Anfrage auftritt, stellt der Knoten einen E/A-Thread für die Anfrage bereit. Dann kümmert sich der Knoten nicht um den E/A-Vorgangsprozess, sondern führt das Ereignis weiterhin im Hauptthread aus. Es muss nur verarbeitet werden, wenn die Anforderung den Rückruf zurückgibt. Das heißt, Node spart viel Zeit beim Warten auf Anfragen.

  • Dies ist auch einer der wichtigen Gründe, warum der Knoten eine hohe Parallelität unterstützt.
  • Tatsächlich werden nicht nur E/A-Vorgänge, sondern auch die meisten Vorgänge des Knotens auf diese asynchrone Weise ausgeführt. Es ist wie ein Organisator, der nicht alles persönlich erledigen muss. Er muss den Mitgliedern nur sagen, wie sie richtig vorgehen, Feedback annehmen und wichtige Schritte durchführen, damit das gesamte Team effizient arbeiten kann.

Transaktionsgesteuert

Vielleicht möchten Sie noch einmal fragen: Woher weiß der Knoten, dass die Anfrage einen Rückruf zurückgegeben hat, und wann sollte er diese Rückrufe verarbeiten?

Die Antwort ist ein weiteres Merkmal des Knotens: transaktionsgesteuert, das heißt, der Hauptthread führt das Programm durch den Ereignisschleifenauslöser aus

Dies ist ein weiterer wichtiger Grund, warum der Knoten eine hohe Parallelität unterstützt

Empfohlene Studie: „

NodeJS-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWarum Knoten eine hohe Parallelität haben können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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