Pourquoi le nœud peut avoir une concurrence élevée

WBOY
Libérer: 2022-04-22 14:45:21
original
3065 Les gens l'ont consulté

Étant donné que le nœud a des caractéristiques "pilotées par les transactions" et "E/S" asynchrones, il s'agit d'une opération asynchrone non bloquante ; pour chaque requête simultanée, le serveur enregistre un événement de déclenchement pour la requête et donne une fonction de rappel pour exécuter l'événement. traitement en séquence.Une fois le traitement terminé, la fonction de rappel est exécutée, puis le traitement d'événement suivant est exécuté, afin que le nœud puisse atteindre une concurrence élevée.

Pourquoi le nœud peut avoir une concurrence élevée

L'environnement d'exploitation de ce tutoriel : système windows10, nodejs version 12.19.0, ordinateur Dell G3.

Pourquoi le nœud peut atteindre une concurrence élevée

nodejs est une opération asynchrone non bloquante. Pour chaque requête simultanée, le serveur enregistre un événement de déclenchement (E/S) pour la requête et donne une fonction de rappel (ce processus ne bloque pas les nouvelles requêtes de connexion). Exécutez le traitement d'événement (E/S) en séquence, exécutez la fonction de rappel une fois le traitement terminé, puis exécutez le traitement d'événement (E/S) suivant.

Avant d'expliquer pourquoi le nœud peut atteindre une simultanéité élevée, vous pourriez aussi bien comprendre plusieurs autres fonctionnalités du nœud :

Mono-thread

Clarifions d'abord un concept, à savoir : le nœud est mono-thread, ce qui est cohérent avec JavaScript a les mêmes caractéristiques dans les navigateurs et le thread principal JavaScript ne peut pas partager son état avec d'autres threads (tels que les threads d'E/S) dans le nœud.

L'avantage du thread unique est :

  • Il n'est pas nécessaire de prêter attention au problème de synchronisation d'état entre les threads comme le multi-threading

  • Il n'y a pas de surcharge causée par le changement de thread

  • Il n'y a pas blocage

Bien sûr, le monothreading présente également de nombreux inconvénients :

  • Impossible d'utiliser pleinement le processeur multicœur

  • Un grand nombre de calculs occupant le processeur entraînera le blocage de l'application (c'est-à-dire qu'il ne convient pas pour gourmand en CPU)

  • Les erreurs entraîneront la fermeture de l'ensemble de l'application

E/S asynchrones

Vous vous demandez peut-être, puisque le nœud est à thread unique et que tous les événements sont traités sur un seul thread, cela ne devrait pas Cela ne serait-il pas très inefficace et contraire à une concurrence élevée ?

Au contraire, les performances du nœud sont très élevées. L'une des raisons est que le nœud dispose d'une fonctionnalité d'E/S asynchrone. Chaque fois qu'une demande d'E/S se produit, le nœud fournit un thread d'E/S pour la demande. Ensuite, le nœud ne se souciera pas du processus d'opération d'E/S, mais continuera à exécuter l'événement sur le thread principal. Il ne doit être traité que lorsque la requête renvoie le rappel. C'est-à-dire que le nœud permet de gagner beaucoup de temps en attendant les requêtes.

C'est également l'une des raisons importantes pour lesquelles le nœud prend en charge une concurrence élevée

En fait, non seulement les opérations d'E/S, la plupart des opérations du nœud sont effectuées de cette manière asynchrone. C'est comme un organisateur : il n'a pas besoin de tout faire personnellement, il doit seulement dire aux membres comment fonctionner correctement, accepter les commentaires et gérer les étapes clés, afin que toute l'équipe puisse fonctionner efficacement.

Transaction-driven

Vous voudrez peut-être demander à nouveau : comment le nœud sait-il que la demande a renvoyé un rappel, et quand doit-il gérer ces rappels ?

La réponse est une autre fonctionnalité de node : pilotée par les transactions, c'est-à-dire que le thread principal exécute le programme à travers la boucle d'événements. C'est une autre raison importante pour laquelle node prend en charge une concurrence élevée.

Pourquoi le nœud peut avoir une concurrence élevéeÉtude recommandée : "

nodejs. tutoriel vidéo

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal