Die Entwicklung der MySQL-Anwendungsarchitektur in großen Websites
Dieser Artikel beschreibt hauptsächlich die Entwicklung der MySQL-Architektur unter verschiedenen gleichzeitigen Zugriffsebenen der Website
Skalierbarkeit
Die Skalierbarkeit der Architektur hängt oft eng mit der Parallelität zusammen, und es gibt keine Parallelität Wachstum, es besteht keine Notwendigkeit, eine hochskalierbare Architektur aufzubauen. Es gibt zwei häufig verwendete Erweiterungsmethoden: Vertikale Erweiterung durch Ersetzen durch bessere Maschinen und Ressourcen um eine Skalierung zu erreichen und die Servicefähigkeiten zu verbessern
Scale-out: Horizontale Erweiterung durch Hinzufügen von Knoten (Maschinen), um eine Skalierung zu erreichen und die Servicefähigkeiten zu verbessern
Für Anwendungen mit hoher Parallelität im Internet gibt es keine Ich bezweifle, dass der vertikale Kauf von High-End-Maschinen für uns schon immer ein Tabuthema war und keine langfristige Lösung darstellt. Was ist nach der Scale-out-Theorie der ideale Stand der Skalierbarkeit?
Der ideale Zustand der Skalierbarkeit
Wenn ein Dienst einer höheren Parallelität ausgesetzt ist, kann er die vom Dienst unterstützte Parallelität durch einfaches Hinzufügen von Maschinen verbessern und die Anzahl der Verbindungen im Maschinenprozess erhöhen hat keine Auswirkungen auf den Dienst (keine Ausfallzeit). Dies ist der ideale Zustand der Skalierbarkeit!
Entwicklung der Architektur
V1.0 Einfache Website-Architektur
Die Architektur hinter einer einfachen kleinen Website oder Anwendung kann sehr einfach sein und für Daten ist nur eine MySQL-Instanz erforderlich Speicherung Um die Anforderungen zum Lesen und Schreiben von Daten zu erfüllen (Datensicherungsinstanzen werden hier ignoriert), speichern Websites in diesem Zeitraum im Allgemeinen alle Informationen in einer Datenbankinstanz.
1. Die Gesamtgröße der Daten passt nicht in eine Maschine
2. Der Index der Daten (B+ Baum) passt nicht in den Speicher einer Maschine
3. Die Anzahl der Besuche (gemischtes Lesen und Schreiben) kann von einer Instanz nicht toleriert werden.
Erst wenn eines oder mehrere der oben genannten drei Dinge erfüllt sind, müssen wir über die Weiterentwicklung zur nächsten Instanz nachdenken Ebene. Daraus können wir erkennen, dass diese Architektur für viele kleine Unternehmen und kleine Anwendungen tatsächlich ausreicht. Eine genaue Bewertung des anfänglichen Datenvolumens ist schließlich ein wichtiger Schritt, um ein Überdesign zu verhindern Sorgen Sie sich um die unmöglichen Dinge und verschwenden Sie Ihre Erfahrung.
Hier ist ein einfaches Beispiel von mir: 16G-Speicher kann einen Index von etwa 2000 W Datenzeilen enthalten. Ein einfacher gemischter Lese- und Schreibzugriff beträgt etwa 3000/s Ist Ihr Anwendungsszenario
V2.0 vertikale Aufteilung
Wenn bei V1.0 ein Engpass auftritt, ist die erste und einfachste Aufteilungsmethode die vertikale Aufteilung. Was ist vertikal? Aus geschäftlicher Sicht werden Daten, die nicht stark miteinander verknüpft sind, in verschiedene Instanzen aufgeteilt, um das Ziel zu erreichen, Engpässe zu beseitigen. Im Beispiel in der Abbildung werden Benutzerinformationsdaten und Geschäftsdaten in drei verschiedene Instanzen aufgeteilt. Für Szenarien mit vielen wiederholten Lesetypen können wir auch eine Cache-Ebene hinzufügen, um den Druck auf die Datenbank zu verringern.
Lassen Sie uns in einer solchen Architektur einen Blick auf die Engpässe bei der Datenspeicherung werfen.
1. Einzelinstanz-Einzelunternehmen haben immer noch den in Version 1.0 erwähnten Engpass
Wenn Sie auf einen Engpass stoßen, können Sie ein Upgrade auf eine höhere V-Version dieses Artikels in Betracht ziehen, wenn Leseanforderungen dazu führen Wenn ein Leistungsengpass auftritt, können Sie ein Upgrade auf V3.0 und bei anderen Engpässen ein Upgrade auf V4.0 in Betracht ziehen
V3.0-Master-Slave-Architektur
Diese Art von Architektur löst hauptsächlich das Leseproblem unter der V2.0-Architektur. Sie migriert den Lesedruck durch Anhängen einer Echtzeit-Datensicherung an die Instanz Szenario Durch die Master-Slave-Struktur widersteht die Master-Bibliothek dem Schreibdruck und die Slave-Bibliothek teilt den Lesedruck. Für Anwendungen mit weniger Schreiben und mehr Lesen ist die V3.0-Master-Slave-Architektur voll leistungsfähig
Welche Engpässe bei der Datenspeicherung gibt es in einer solchen Architektur?
1. Die Hauptbibliothek kann den Schreibaufwand nicht ertragen
V4.0 horizontale Aufteilung
Wenn die V2.0 V3.0-Lösung auf einen Engpass stößt, kann dies der Fall sein Horizontale Aufteilung Es gibt einen großen Unterschied zwischen horizontaler Aufteilung und vertikaler Aufteilung. Das Ergebnis der vertikalen Aufteilung ist, dass eine Instanz über die gesamte Datenmenge verfügt, nach der horizontalen Aufteilung jedoch nur 1/n der gesamten Datenmenge Nehmen Sie die Aufteilung der Benutzerinformationen in der folgenden Abbildung als Beispiel. Jeder Cluster enthält 1/3 der gesamten Daten. (Hinweis: Dies ist nicht der Fall.) Nennen Sie es eine einzelne Instanz statt eines Clusters (der einen kleinen MySQL-Cluster einschließlich Master und Slave darstellt)
Wie leitet man Daten weiter?
1. Bereichsaufteilung
Sharding-Schlüssel werden in kontinuierlichen Intervallen weitergeleitet und im Allgemeinen in Szenarien mit strengen Anforderungen an die automatische Inkrementierung von IDs verwendet, z. B. Userid, ein kleines Beispiel für Userid-Bereich: Benutzer-ID verwenden 3000W-Aufteilung für Bereich Nr. 1 Cluster-Benutzer-ID 1-3000W Nr. 2 Cluster-Benutzer-ID 3001W-6000W
2. Listenaufteilung
Die Listenaufteilung hat die gleiche Idee wie die Bereichsaufteilung, beide werden von durchgeführt Für die Weiterleitung an verschiedene Cluster werden verschiedene Sharding-Schlüssel verwendet, die spezifischen Methoden sind jedoch etwas unterschiedlich. Die Liste wird hauptsächlich für Situationen verwendet, in denen der Sharding-Schlüssel kein kontinuierliches Intervall ist und die Sequenz in einen Cluster fällt

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Laravel ist ein PHP -Framework zum einfachen Aufbau von Webanwendungen. Es bietet eine Reihe leistungsstarker Funktionen, darunter: Installation: Installieren Sie die Laravel CLI weltweit mit Komponisten und erstellen Sie Anwendungen im Projektverzeichnis. Routing: Definieren Sie die Beziehung zwischen der URL und dem Handler in Routen/Web.php. Ansicht: Erstellen Sie eine Ansicht in Ressourcen/Ansichten, um die Benutzeroberfläche der Anwendung zu rendern. Datenbankintegration: Bietet eine Out-of-the-Box-Integration in Datenbanken wie MySQL und verwendet Migration, um Tabellen zu erstellen und zu ändern. Modell und Controller: Das Modell repräsentiert die Datenbankentität und die Controller -Prozesse HTTP -Anforderungen.

MySQL und PhpMyAdmin sind leistungsstarke Datenbankverwaltungs -Tools. 1) MySQL wird verwendet, um Datenbanken und Tabellen zu erstellen und DML- und SQL -Abfragen auszuführen. 2) PHPMYADMIN bietet eine intuitive Schnittstelle für Datenbankverwaltung, Tabellenstrukturverwaltung, Datenoperationen und Benutzerberechtigungsverwaltung.

Im Vergleich zu anderen Programmiersprachen wird MySQL hauptsächlich zum Speichern und Verwalten von Daten verwendet, während andere Sprachen wie Python, Java und C für die logische Verarbeitung und Anwendungsentwicklung verwendet werden. MySQL ist bekannt für seine hohe Leistung, Skalierbarkeit und plattformübergreifende Unterstützung, die für Datenverwaltungsanforderungen geeignet sind, während andere Sprachen in ihren jeweiligen Bereichen wie Datenanalysen, Unternehmensanwendungen und Systemprogramme Vorteile haben.

Bei der Entwicklung einer kleinen Anwendung stieß ich auf ein kniffliges Problem: die Notwendigkeit, eine leichte Datenbankbetriebsbibliothek schnell zu integrieren. Nachdem ich mehrere Bibliotheken ausprobiert hatte, stellte ich fest, dass sie entweder zu viel Funktionalität haben oder nicht sehr kompatibel sind. Schließlich fand ich Minii/DB, eine vereinfachte Version basierend auf YII2, die mein Problem perfekt löste.

Artikelzusammenfassung: Dieser Artikel enthält detaillierte Schritt-für-Schritt-Anweisungen, um die Leser zu leiten, wie das Laravel-Framework einfach installiert werden kann. Laravel ist ein leistungsstarkes PHP -Framework, das den Entwicklungsprozess von Webanwendungen beschleunigt. Dieses Tutorial deckt den Installationsprozess von den Systemanforderungen bis zur Konfiguration von Datenbanken und das Einrichten von Routing ab. Durch die Ausführung dieser Schritte können die Leser schnell und effizient eine solide Grundlage für ihr Laravel -Projekt legen.

Bei der Entwicklung einer E-Commerce-Website mit Thelia habe ich auf ein kniffliges Problem gestoßen: Der MySQL-Modus ist nicht ordnungsgemäß eingestellt, wodurch einige Funktionen nicht ordnungsgemäß funktionieren. Nach einigen Erkundungen fand ich ein Modul namens TheliamysqlModeSCecker, das das von Thelia erforderliche MySQL -Muster automatisch beheben kann und meine Probleme vollständig lösen kann.

In MySQL besteht die Funktion von Fremdschlüssel darin, die Beziehung zwischen Tabellen herzustellen und die Konsistenz und Integrität der Daten zu gewährleisten. Fremdeschlüssel behalten die Wirksamkeit von Daten durch Referenzintegritätsprüfungen und Kaskadierungsvorgänge bei. Achten Sie auf die Leistungsoptimierung und vermeiden Sie bei der Verwendung häufige Fehler.

Der Hauptunterschied zwischen MySQL und Mariadb ist Leistung, Funktionalität und Lizenz: 1. MySQL wird von Oracle entwickelt und Mariadb ist seine Gabel. 2. Mariadb kann in Umgebungen mit hoher Last besser abschneiden. 3.MariADB bietet mehr Speichermotoren und Funktionen. 4.Mysql nimmt eine doppelte Lizenz an, und Mariadb ist vollständig Open Source. Die vorhandene Infrastruktur, Leistungsanforderungen, funktionale Anforderungen und Lizenzkosten sollten bei der Auswahl berücksichtigt werden.
