Table des matières
Ressources asynchrones
AsyncLocalStorage
Problèmes de performances
Maison interface Web js tutoriel Que sont les ressources asynchrones ? Une brève analyse de la méthode Node pour réaliser le partage de contexte de ressources asynchrone

Que sont les ressources asynchrones ? Une brève analyse de la méthode Node pour réaliser le partage de contexte de ressources asynchrone

May 31, 2022 pm 12:56 PM
nodejs​ node.js node

Comment Node.js implémente-t-il le partage de contexte de ressources asynchrone ? L'article suivant vous présentera comment Node implémente le partage de contexte de ressources asynchrone. Parlons de l'utilisation du partage de contexte de ressources asynchrone pour nous. J'espère que cela sera utile à tout le monde !

Que sont les ressources asynchrones ? Une brève analyse de la méthode Node pour réaliser le partage de contexte de ressources asynchrone

Le partage de contexte de ressources asynchrones signifie le partage de données de contexte au sein d'un cycle de vie de demande réseau ou d'une chaîne d'appel de ressources asynchrone.

Avant de répondre à cette question, il faut d'abord comprendre ce que sont les ressources asynchrones.

Ressources asynchrones

Les ressources asynchrones peuvent être comprises comme des objets avec des rappels, tels que, mais sans s'y limiter, les promesses, les délais d'attente, TCPWrap, UDP, etc. Voir Liste des types de ressources asynchrones pour plus de détails.

La définition officielle est la suivante :

Une ressource asynchrone représente un objet avec un rappel associé. Ce rappel peut être appelé plusieurs fois, comme l'événement 'connection' dans net.createServer(), ou une seule fois. comme dans fs .open(). Une ressource peut également être fermée avant que le rappel ne soit appelé.

AsyncLocalStorage

Voici la solution officielle de partage de contexte asynchrone AsyncLocalStorage fournie par Node.js. expérimental avant la fonctionnalité 16.4.0, est stable depuis la 16.4.0.

AsyncLocalStorage peut partager des données dans des chaînes d'opérations asynchrones.

Instance AsyncLocalStorage asyncLocalStorage a les méthodes principales suivantes :

  • disable() désactive asyncLocalStorage ;
  • getStore() renvoie le magasin de contexte actuel, qui doit utiliser asyncLocalStorage.run() ou asyncLocalStorage.enterWith() pour l'initialisation de contexte asynchrone ;
  • enterWith(store) Passez dans le magasin de contexte via cette méthode, et le magasin peut être obtenu dans tous les appels asynchrones ultérieurs

Exemple :

const store = { id: 1 };
// Replaces previous store with the given store object
asyncLocalStorage.enterWith(store);
asyncLocalStorage.getStore(); // Returns the store object
someAsyncOperation(() => {
  asyncLocalStorage.getStore(); // Returns the same object
});
Copier après la connexion
  • run(store, callback[, ...args] ) Utiliser run pour spécifier le magasin de contexte et sa fonction de rappel effective. Le magasin ne sera obtenu que dans la fonction de rappel.
  • exit(callback[, ...args])

asyncLocalStorage.run() Le premier paramètre de la fonction est de stocker les données partagées auxquelles nous devons accéder dans l'appel asynchrone, et le deuxième paramètre est une fonction asynchrone .

Ce qui suit est un exemple pour montrer comment utiliser AsyncLocalStorage pour implémenter le partage de contexte de ressources asynchrone :

Que sont les ressources asynchrones ? Une brève analyse de la méthode Node pour réaliser le partage de contexte de ressources asynchrone

Sortie :

runA 8f19ebef-58d7-4b1a-8b9b-46d158beb5d2 2022/5/24 20:26:17 this is a log message
runB 8f19ebef-58d7-4b1a-8b9b-46d158beb5d2 2022/5/24 20:26:17 this is a log message
Copier après la connexion

Dans la même fonction asynchrone exécutée via asyncLocalStorage.run, les fonctions runA et la fonction runB seront exécutées, runA et runB ont accès aux mêmes données contextuelles.

Problèmes de performances

AsyncLocalStorage nous fournit un excellent parcours pour implémenter facilement le partage de contexte de ressources asynchrones dans Node.js, mais chaque opération de ressource asynchrone déclenchera des Async Hooks, ce qui aura inévitablement un certain impact sur les performances de notre Node. application. . Alors, quelle est l’ampleur de l’impact ?

Selon une mesure réelle réalisée par Kuzzle, l'utilisation d'AsyncLocalStorage entraînera une perte de performances supplémentaire d'environ 8 %. Bien entendu, différents scénarios commerciaux peuvent avoir des performances différentes. Si cet aspect des performances vous préoccupe, vous pouvez également ajouter des tests comparatifs à votre entreprise pour tester l’impact spécifique sur les performances.

---- Connectez-vous avec AsyncLocalStorage Log classique différence
req/s 2613 2842 ~8 %

scénarios d'application

Dans d'autres langages multithread, chaque HTTP crée un nouveau thread et chaque thread possède sa propre mémoire. Vous pouvez stocker l'état global dans la mémoire des threads et récupérer l'état global depuis n'importe où dans votre code.

Dans Node.js, étant donné que Node.js est monothread et partage la mémoire entre toutes les requêtes HTTP, chaque requête HTTP ne peut pas contenir un état global mutuellement isolé.

AsyncLocalStorage peut isoler efficacement l'état entre différentes opérations asynchrones et joue un rôle très important dans des scénarios tels que le suivi des requêtes HTTP, les outils APM, le suivi des journaux contextuels et le suivi des journaux de liens complets basés sur les requêtes.

Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel Nodejs !

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!

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

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

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 !

Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Mar 28, 2023 pm 07:28 PM

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

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.

Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Apr 03, 2023 pm 06:02 PM

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

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 !

Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Feb 08, 2023 am 10:09 AM

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".

See all articles