VorwortZunächst müssen wir klären, was groß angelegte Anwendungen sind. Tatsächlich ist dies eine Ansichtssache und es handelt sich um eine philosophische und nicht um eine technische Frage. Wenn Sie jemand fragt: Ist eine Website wie Uniqlo, die Online-Verkäufe abwickeln kann, groß? Man könnte sagen: groß, denn es ist tatsächlich viel komplizierter als die Logik von Blogs, Unternehmenswebsites usw., die Sie normalerweise sehen. Oder wenn es klein ist, bedeutet das, dass Sie ein komplexeres System entwickelt haben. Wie ist es also im Vergleich zu Taobao? Der Vergleich zwischen Groß und Klein erfordert eine Referenz. 1. AnwendungskomponentenIst es möglich, dass eine vollständige Web-Anwendung nur aus einer Sprache oder einer Technologie besteht? unmöglich. Da eine vollständige Webanwendung eigentlich eine Kombination mehrerer Technologien ist, gibt es viele Lösungen, um ein bestimmtes Problem zu lösen. Beispielsweise gibt es viele logische Back-End-Lösungen, darunter Java, PHP, Python, Ruby usw. Kurz zusammengefasst können die Komponenten einer Anwendung Folgendes umfassen: Anzeigelogik der Weboberfläche; Backend-Geschäftslogik; Cache; Datenbank; Nachrichtenwarteschlange. Tatsächlich können Sie auch Protokollanalysen, Datenanalysen usw. hinzufügen, aber die oben genannten sind nur die bekanntesten. 2. Arten von AnwendungenE/A-intensiv; CPU-intensiv. Bei gängigen Internetprodukten liegt der Engpass nicht in der Logik des Backend-Geschäfts, sondern bei der E/A, d. h. dem Lesen und Ausgeben der an den Benutzer zurückgegebenen Daten. Bei Anwendungen bezieht sich Lesen auf das Abrufen von Daten aus der Datenbank und Ausgeben auf die Ausgabe dieser Daten an den Browser des Benutzers nach einer bestimmten Verarbeitung. Dies ist E/A-intensiv. CPU-intensiv bezieht sich auf Anwendungen, die häufige Rechenaufgaben ausführen, und Node.js weist in dieser Hinsicht tatsächlich Mängel auf. 3. Bewerbungsservice-ProzessWie in der Abbildung gezeigt, sendet der Benutzer eine Anforderung über den Browser, die Netzwerkkarte empfängt die TCP-Verbindung, benachrichtigt den Kernel und der Kernel ruft dann das entsprechende Serverprogramm auf. Anfrage Anfrageprozess Antwortrückgabeprozess Wie in der folgenden Abbildung dargestellt, muss eine Webanwendung, wenn sie Daten zurückgeben möchte, zunächst die Daten abrufen, den Festplattentreiber über den Kernel aufrufen und die Daten in den Cache lesen. Auf diese Weise können die Daten abgerufen und in der Webanwendung verarbeitet werden. Schließlich wird der Kernel aufgerufen, um die Daten über die Netzwerkkarte an den Client zu senden. 4. AnwendungsengpassNormalerweise ist der Engpass bei I/O-intensiven Diensten das Lesen und Schreiben von Festplatten. Wenn Sie also einen Cloud-Server kaufen, können Sie SSD-Festplatten kaufen, um die Leistung zu verbessern. Im Allgemeinen werden die Daten von Datenbanksoftware in Dateien gespeichert. Erwägen Sie zunächst das Hinzufügen eines Speichercaches, um diesen Engpass zu beheben. Speichern Sie häufig aufgerufene Daten im Cache, um zu prüfen, ob sich das Problem im aktuellen Szenario dadurch lösen lässt, z. B. durch die Verwendung von Redis. Zweitens sollten Sie den Aufbau oder die Erweiterung eines Datenbankclusters in Betracht ziehen, um die Parallelität zu verbessern. Der Engpass bei CPU-intensiven Anwendungen ist die CPU. Dieser Engpass kann nur durch eine Erhöhung der Anzahl der CPU-Verarbeitungskerne behoben werden. 5. Verteilte AnwendungenBei groß angelegten gewöhnlichen Anwendungen und verteilten Anwendungen handelt es sich eigentlich um unterschiedliche Konzepte. Leser können sich verteilte Anwendungen einfach als Team vorstellen, bei dem jedes Mitglied ein Knoten ist. Ein großes Projekt erfordert die Zusammenarbeit der Mitglieder, um es abzuschließen, sodass zwischen den Mitgliedern ein gewisser Kommunikationsaufwand entsteht. Einige Mitglieder könnten sogar Intrigen schmieden, unaufrichtig sprechen und sich vor Verantwortung drücken. Es ist auch möglich, dass ein Mitglied krank ist und sich zu Hause erholt, nicht arbeiten kann usw. Angesichts dieser Probleme können die Vorteile von Node.js nicht vollständig demonstriert werden (es ist nicht so, dass es nicht möglich wäre, aber es gibt keine perfekte Infrastruktur). Die wahre Definition von „verteilt“ besteht darin, unterschiedliche Dienstmodule auf mehreren unterschiedlichen Servern einzusetzen, Prozesse als Grundeinheit zu verwenden, sie an die Server zu verteilen, über Remote Procedures (RPC) zu kommunizieren und zusammenzuarbeiten und schließlich Dienste für die Außenwelt bereitzustellen. Im Vergleich zur aktuellen verteilten Infrastruktur von Node.js ist die Infrastruktur der Sprache Go viel vollständiger, insbesondere im Docker-Projekt, das die Vorteile der Sprache Go voll zur Geltung bringt. Aus diesem Grund hat sich TJ Holowaychuk, ein „großer Junge“ in der Node.js-Community, der Sprache Go zugewandt, weil er verteilte Anwendungen entwickeln wollte. Eigentlich muss man sich über das Verteilungsproblem keine allzu großen Sorgen machen. Schließlich war JavaScript ursprünglich nur eine Skriptsprache, die im Browser ausgeführt wurde. JavaScript ist nicht allmächtig. Warum muss es also bei der Entwicklung auf Betriebssystemebene verwendet werden? Wäre es nicht besser, eine geeignetere Sprache zu finden? Genau wie wir jetzt JavaScript zum Erstellen von Webanwendungen verwenden. 6. Multiprozess-Node.jsNach dem Verständnis der oben genannten Wissenspunkte sollte den Lesern nun bekannt sein, dass Node.js wenig mit groß angelegten Anwendungen zu tun hat. Die meisten Entwickler, die Node.js lernen, sind Frontend-Entwickler und verfügen daher nicht über die grundlegenden Kenntnisse des Backends. Bei der Suche nach Informationen im Internet stellen sie fest, dass Node.js nur einen einzigen Kern verwenden kann. Als sie hören, dass TJ Holowaychuk sich dem Go-Lager zugewandt hat, fragen sich einige Entwickler, ob Node.js nicht für die Entwicklung großer Anwendungen geeignet ist. Das Problem, dass Node.js nur einen einzigen Kern verwenden kann, wurde gelöst. Das später verwendete Egg-Cluster-Modul im Egg.js-Framework löst dieses Problem durch die Verwendung mehrerer Prozesse sehr gut. Oben sind die Einzelheiten, warum node.js nicht für große Projekte geeignet ist. Weitere Informationen zu node.js finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Apache-Website-Dienstkonfiguration basierend auf Linux
// Ich habe einen ganzen Nachmittag für die Insta...
Inhaltsverzeichnis 1. Maven-Abhängigkeit 2. Menüb...
CSS-Attributselektoren sind großartig. Sie können...
In Sprachen werden häufig Makros zur Implementier...
Dieser Artikel gibt Ihnen den spezifischen Code v...
1. Erstellen Sie zunächst eine Datei hello-world....
In die CSS-Datei schreiben Code kopieren Der Code ...
Inhaltsverzeichnis 1. Was bedeutet „Shallow Copy“...
1. Nginx-Installationsschritte 1.1 Offizielle Web...
Inhaltsverzeichnis Prototypen verstehen Prototypo...
Problembeschreibung Als ich heute den Seitenstil ...
Inhaltsverzeichnis MySQL-Indexoptimierung – Pagin...
Die Paginierungskomponente ist eine häufige Kompo...
MySQL Version 5.0 begann, gespeicherte Prozeduren...
1. Erstellen einfügen in [Tabellenname] (Feld1, F...