codestory

Verständnis der Ereignisschleife (Event Loop) in NodeJS

  1. Die Überblick vom NodeJS Event Loop

1. Die Überblick vom NodeJS Event Loop

NodeJS ist eine einfach-Thread Applikation (Single Thread). Es funktioniert nach einer durch C++ geschriebenen Platform, die Multi-Thread verwenden um die Aufgabe gleichzeitig durchzuführen.
Die folgende Illustration zeigt die Anforderungen (request) aus den Benutzer, die nach dem Server NodeJS geschickt werden.
Jede Anforderung (request) aus dem Benutzer wird durch NodeJS als ein Event gesehen (event). Sie werden in Event Queue gestellt. NodeJS verwendet das Grundsatz FIFO (First In First Out), das heißt, dass die Anforderungen zuerst kommt, behandelt zuerst.
Event Loop
Als eine endlose Schleife gibt sie die Anforderung zum Thread Pool weiter, gleichzeitig wird jede Anforderung eine Funktion Callback registriert. Wenn eine Anforderung zu behandeln fertig ist, wird die entsprechende Funktion Callback zur Implementation angeruft.
Thread Pool
ist ein mit der Sprache C++ geschriebenes Programm, das die Multi Thread unterstützt (Multi Threads), so werden die Anforderungen auf die unterscheidlichen Threads behandelt. NodeJS unterstützt das Multi Processes maximal, das heißt, sie auf die unterschiedlichen Core implementiert werden können
Wenn eine Anforderung behandelt wurde, wird NodeJS die Funktion Callback aufrufen um sie zu implementieren (für diese Anforderung registriert).
DER SCHLUSS:
Der erste Schluss: Wenn jede Verbindung zum Server ein Thread öffnet, kostet das die Plätze in der Speicherung. Das wird nachgewiesen wenn Sie Apache und Nginx vergleichen (Die zwei Web Server implementiert die Applikationen PHP). Apache benutzt viel mehr Speicherung als Nginx.
NodeJS ist so ähnlich wie Nginx, dass sie nur ein einfacher Thread um die Verbindungen aus dem Benutzer zu empfangen und sehen jede Anforderung des Benutzer als ein Event
Der zweite Schluss: Die Aktionen I/O kostet die Ressources des System sehr. Deshalb managet NodeJS die Verwendung der Aktionen I/O sehr streng. So brauchen Sie Callback benutzen wenn Sie die I/O betreffenden Aufgaben implementieren.
Grundlegend laufen viele Dinge im NodeJS paralel auf die unterschiedlichen Thread, aber sie werden durch NodeJS direkt managet, z.B wie Thread Pool. Und alle von Ihnen geschriebenen Dinge laufen auf einen einfachen Thread (single thread).