Inhaltsverzeichnis
Asynchrone Ressourcen
AsyncLocalStorage-Instanz asyncLocalStorage verfügt über die folgenden Hauptmethoden:
Heim Web-Frontend js-Tutorial Was sind asynchrone Ressourcen? Eine kurze Analyse der Methode von Node zur Realisierung der asynchronen gemeinsamen Nutzung von Ressourcenkontexten

Was sind asynchrone Ressourcen? Eine kurze Analyse der Methode von Node zur Realisierung der asynchronen gemeinsamen Nutzung von Ressourcenkontexten

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

Wie implementiert Node.js die asynchrone Ressourcenkontextfreigabe? Der folgende Artikel stellt Ihnen vor, wie Node die asynchrone Ressourcenkontextfreigabe implementiert. Lassen Sie uns über die Verwendung der asynchronen Ressourcenkontextfreigabe sprechen.

Was sind asynchrone Ressourcen? Eine kurze Analyse der Methode von Node zur Realisierung der asynchronen gemeinsamen Nutzung von Ressourcenkontexten

Asynchrone Ressourcenkontextfreigabe bedeutet die gemeinsame Nutzung von Kontextdaten innerhalb eines Netzwerkanforderungslebenszyklus oder einer asynchronen Ressourcenaufrufkette.

Bevor wir diese Frage beantworten, müssen wir zunächst verstehen, was asynchrone Ressourcen sind.

Asynchrone Ressourcen

Asynchrone Ressourcen können als Objekte mit Rückrufen verstanden werden, wie z. B. Versprechen, Zeitüberschreitungen, TCPWrap, UDP usw., sind aber nicht darauf beschränkt. Weitere Informationen finden Sie in der Liste der asynchronen Ressourcentypen.

Die offizielle Definition lautet wie folgt:

Eine asynchrone Ressource stellt ein Objekt mit einem zugehörigen Rückruf dar. Dieser Rückruf kann mehrmals aufgerufen werden, z. B. beim Ereignis „Verbindung“ in net.createServer(), oder nur einmal Wie in fs .open() kann eine Ressource auch geschlossen werden, bevor der Rückruf aufgerufen wird experimentell vor 16.4.0 Feature, ist seit 16.4.0 stabil.

AsyncLocalStorage kann Daten in asynchronen Operationsketten teilen.

AsyncLocalStorage-Instanz asyncLocalStorage verfügt über die folgenden Hauptmethoden:

disable() deaktiviert asyncLocalStorage; getStore() gibt den aktuellen Kontextspeicher zurück, der asyncLocalStorage.run() oder asyncLocalStorage.enterWith() für die asynchrone Kontextinitialisierung verwenden muss;

enterWith(store) Übergeben Sie den Kontextspeicher über diese Methode, und der Speicher kann in allen nachfolgenden asynchronen Aufrufen abgerufen werden.

Beispiel:
    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
    });
    Nach dem Login kopieren
  • run(store, callback[, ...args] ) Verwenden Ausführen, um den Kontextspeicher und seine effektive Rückruffunktion anzugeben. Der Speicher wird nur in der Rückruffunktion abgerufen.
  • exit(callback[, ...args])
asyncLocalStorage.run() Der erste Parameter der Funktion dient zum Speichern der gemeinsam genutzten Daten, auf die wir im asynchronen Aufruf zugreifen müssen, und der zweite Parameter ist eine asynchrone Funktion .

Das Folgende ist ein Beispiel, um zu demonstrieren, wie AsyncLocalStorage zum Implementieren der asynchronen Ressourcenkontextfreigabe verwendet wird:
  • Ausgabe:
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
Nach dem Login kopieren

In derselben asynchronen Funktion, die über asyncLocalStorage.run ausgeführt wird, werden die Funktionen runA und runB ausgeführt. runA und runB haben Zugriff auf dieselben Kontextdaten.

Leistungsprobleme

Was sind asynchrone Ressourcen? Eine kurze Analyse der Methode von Node zur Realisierung der asynchronen gemeinsamen Nutzung von Ressourcenkontexten

AsyncLocalStorage bietet uns eine großartige Möglichkeit, die asynchrone Ressourcenkontextfreigabe in Node.js einfach zu implementieren, aber jeder asynchrone Ressourcenvorgang löst Async-Hooks aus, was unweigerlich einen gewissen Einfluss auf die Leistung unseres Knotens haben wird Anwendung. . Wie groß ist also die Auswirkung?

Laut einer tatsächlichen Messung von

Kuzzle

führt die Verwendung von AsyncLocalStorage zu einem zusätzlichen Leistungsverlust von etwa 8 %. Natürlich können verschiedene Geschäftsszenarien eine unterschiedliche Leistung haben. Wenn Sie sich über diesen Teil der Leistung Sorgen machen, können Sie Ihrem Unternehmen auch Vergleichstests hinzufügen, um die spezifischen Auswirkungen auf die Leistung zu testen.

----

Protokoll mit AsyncLocalStorageProtokoll klassisch

Differenzreq/s26132842~8 %AnwendungsszenarienDa Node.js Single-Threaded ist und den Speicher für alle HTTP-Anfragen gemeinsam nutzt, kann nicht jede HTTP-Anfrage einen gegenseitig isolierten globalen Status halten.
In anderen Multithread-Sprachen erstellt jedes HTTP einen neuen Thread und jeder Thread hat seinen eigenen Speicher. Sie können den globalen Status im Thread-Speicher speichern und den globalen Status von überall in Ihrem Code abrufen.
AsyncLocalStorage kann den Status zwischen verschiedenen asynchronen Vorgängen effektiv isolieren und spielt eine sehr wichtige Rolle in Szenarien wie HTTP-Anforderungsverfolgung, APM-Tools, Kontextprotokollverfolgung und anforderungsbasierter Volllink-Protokollverfolgung.

Weitere Informationen zu Knoten finden Sie unter: nodejs-Tutorial

!

Das obige ist der detaillierte Inhalt vonWas sind asynchrone Ressourcen? Eine kurze Analyse der Methode von Node zur Realisierung der asynchronen gemeinsamen Nutzung von Ressourcenkontexten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Mar 29, 2023 pm 06:02 PM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

So verwenden Sie Express für den Datei-Upload im Knotenprojekt So verwenden Sie Express für den Datei-Upload im Knotenprojekt Mar 28, 2023 pm 07:28 PM

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Apr 03, 2023 pm 06:02 PM

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Lassen Sie uns über die Ereignisschleife in Node sprechen Lassen Sie uns über die Ereignisschleife in Node sprechen Apr 11, 2023 pm 07:08 PM

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Feb 08, 2023 am 10:09 AM

Der Grund, warum der Knoten den Befehl npm nicht verwenden kann, liegt darin, dass die Umgebungsvariablen nicht richtig konfiguriert sind. Die Lösung ist: 1. Öffnen Sie „Systemeigenschaften“ 2. Suchen Sie nach „Umgebungsvariablen“ -> „Systemvariablen“ und bearbeiten Sie dann die Umgebung Variablen; 3. Suchen Sie den Speicherort des NodeJS-Ordners. 4. Klicken Sie auf „OK“.

See all articles