Maison interface Web js tutoriel Maîtrisez rapidement le model_node.js piloté par les événements Node.js

Maîtrisez rapidement le model_node.js piloté par les événements Node.js

May 16, 2016 pm 03:09 PM
node.js

1. Modèle de réseau de fils traditionnel

Avant de comprendre le modèle événementiel Node.js, nous comprenons d'abord le modèle de réseau de threads traditionnel. Après qu'une requête entre dans le serveur Web (IIS, Apache), un thread sera alloué dans le pool de threads pour terminer le traitement de la requête. de manière linéaire et synchrone jusqu'à ce que le traitement de la demande soit terminé et qu'une réponse soit émise, et que le pool de threads soit recyclé une fois terminé.

Cela entraînera les problèmes suivants :

1. En raison du nombre limité de threads dans le pool de threads, des requêtes fréquentes seront en attente et, dans les cas graves, le serveur peut même raccrocher

2. Pour une concurrence élevée, des verrous seront utilisés pour empêcher l'apparition de données sales. Certaines transactions d'E/S peuvent prendre beaucoup de temps, ce qui entraînera une attente de certains threads, ce qui est inefficace

.

2. Modèle événementiel

1. Il y a une file d'attente d'événements dans Node.js. Chaque tâche sera placée dans la file d'attente d'événements et une fonction de rappel sera laissée pour traiter les résultats (personnellement, cela ressemble un peu à RunLoop dans). ios) traite la file d'attente des événements dans la tâche jusqu'à ce que la fonction de rappel n'existe plus.

2. En cas de non-blocage, il est placé dans la file d'attente des événements en tant que fonction avec un rappel, et est extrait et exécuté dans le thread de boucle d'événements.

3. En cas de blocage d'E/S pendant l'exécution (lecture de fichiers, interrogation de bases de données, demande de sockets, accès à des services distants, etc.), le thread de la boucle d'événements n'arrêtera pas d'attendre le résultat, mais continuera d'exécuter la file d'attente. . La tâche suivante ne sera pas exécutée dans le thread de boucle d'événement. Lorsqu'une fonction est exécutée, Node.js place les fonctions de rappel dans la file d'attente des événements et leur ordre est déterminé par la rapidité avec laquelle la fonction se termine.

4. Comme mentionné en 1, en cas de blocage d'E/S, le thread de boucle n'attendra pas le résultat, mais exécutera à la place la tâche suivante dans la file d'attente. Alors, qui doit effectuer cette opération d'E/S ? >

Node.js utilise des rappels d'événements pour éviter d'attendre le blocage des E/S et implémente un pool de threads en arrière-plan. Lorsqu'il rencontre une tâche de blocage d'E/S, il obtiendra un thread du pool de threads et placera la fonction et le rappel. dans Exécuté là-bas, la fonction de rappel exécutée sur le thread bloqué peut toujours ajouter des événements à la file d'attente des événements.

Ce qui précède concerne le modèle événementiel Node.js. J'espère qu'il sera utile à l'apprentissage de chacun.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Mar 29, 2023 pm 06:02 PM

Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Un article pour parler du contrôle de la mémoire dans Node Un article pour parler du contrôle de la mémoire dans Node Apr 26, 2023 pm 05:37 PM

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Parlons de la façon de choisir la meilleure image Docker Node.js ? Parlons de la façon de choisir la meilleure image Docker Node.js ? Dec 13, 2022 pm 08:00 PM

Le choix d'une image Docker pour Node peut sembler trivial, mais la taille et les vulnérabilités potentielles de l'image peuvent avoir un impact significatif sur votre processus CI/CD et votre sécurité. Alors, comment choisir la meilleure image Docker Node.js ?

Parlons en profondeur du module File dans Node Parlons en profondeur du module File dans Node Apr 24, 2023 pm 05:49 PM

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Node.js 19 est officiellement sorti, parlons de ses 6 fonctionnalités majeures ! Node.js 19 est officiellement sorti, parlons de ses 6 fonctionnalités majeures ! Nov 16, 2022 pm 08:34 PM

Node 19 est officiellement publié. Cet article vous donnera une explication détaillée des 6 fonctionnalités majeures de Node.js 19. J'espère qu'il vous sera utile !

Parlons du mécanisme GC (garbage collection) dans Node.js Parlons du mécanisme GC (garbage collection) dans Node.js Nov 29, 2022 pm 08:44 PM

Comment Node.js fait-il le GC (garbage collection) ? L’article suivant vous guidera à travers cela.

Parlons de la boucle d'événements dans Node Parlons de la boucle d'événements dans Node Apr 11, 2023 pm 07:08 PM

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Dec 02, 2022 pm 09:06 PM

Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous expliquera comment utiliser pkg pour empaqueter un projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !

See all articles