Comprendre Event Loop dans NodeJS

View more Tutorials:

1- Vue d'ensemble sur NodeJS Event Loop

NodeJS est une application de thread unique (Single Thread), qui fonctionne sur une plateforme écrite en C++. Cette plateforme utilise le multi-thread pour effectuer des tâches en même temps.
La figure suivante illustre des demandes (request) envoyés à part des utilisateurs au serveur de  NodeJS.
Chaque demande (request) de l'utilisateur est traitée comme un événement (event) par le  NodeJS. Elles sont placées dans un  Event Queue (La liste des événements). Le  NodeJS utilise le principe  FIFO (First In First Out), ce qui signifie que les premières demandes arrivant sera traités avant tout.

Event Loop

Comme une boucle infinie, elle transmet les demandes au Thread Pool (Pool de threads) et chaque requête est enregistrée une fonction Callback. Quand une requête est terminée, la fonction Callback correspondante sera appelée à être exécuté.

Thread Pool

Étant un programme écrit par le langage  C++, il soutient les multi-threads (Multi Threads). Donc, des demandes seront traitées sur différent threads. Le  NodeJS fournit également des processus multiples (Multi Processes). Cela signifie qu'ils peuvent être exécutés sur des cœurs (Core) différents.
Lorsque le traitement d'une demande est terminé, le  NodeJS appelera la fonction  Callback (Enregistré pour cette demande) pour l'exécuter.

LES CONCLUSIONS :

La première conclusion basique : Si chaque connexion du  Server ouvert un thread, il prendra beaucoup de mémoire. Ceci a été prouvé lorsque vous comparez  Apache et  Nginx (Les deux  Web Server déploient des applications  PHP). Le  Apache utilise plus de mémoire que le  Nginx.
En fait, le  NodeJS est similaire au  Nginx car ils utilisent qu'un seul thread (Single thread) pour recevoir des connexion de l'utilisateur et traiter chaque demande de l'utilisateur comme un événement.
La deuxième conclusion basique : Des activités  I/O coûtent beaucoup de ressources du système, donc le  NodeJS gère l'utilisation des activités  I/O strictement.  Par conséquent, vous devez utiliser une  Callback quand vous exécutez les devoirs relatifs à  I/O.
À la base, plusieurs choses dans le  NodeJS exécutent parallèlement sur différent threads mais elles sont gérées directement par le  NodeJS. Par exemple :  Thread Pool. Tous ce que vous avez écrit sont exécutent sur un seul thread (single thread).

View more Tutorials: