1 Master-Slave-Lese-/SchreibtrennungBei den meisten Internetunternehmen wird mehr gelesen als geschrieben. Daher muss vorrangig darüber nachgedacht werden, wie die Datenbank eine höhere Anzahl von Abfragen unterstützen kann. Zunächst muss zwischen Lese- und Schreibverkehr unterschieden werden, damit der Leseverkehr bequem separat erweitert werden kann, d. h. Master-Slave-Lese- und Schreibtrennung. Wenn ein plötzlicher Anstieg des Front-End-Verkehrs zu einer Überlastung der Slave-Datenbank führt, wird der DBA der Kapazitätserweiterung der Slave-Datenbank Priorität einräumen. Auf diese Weise wird der Leseverkehr zur Datenbank auf mehrere Slave-Datenbanken verteilt, wodurch die Belastung jeder einzelnen Slave-Datenbank verringert wird. Der Entwickler wird dann sein Bestes tun, um den Verkehr auf der DB-Ebene zu blockieren. Cache VS MySQL - Lese-/Schreibtrennung Aufgrund der Schwierigkeiten bei Entwicklung und Wartung führt die Einführung eines Caches zu Komplexität. Probleme wie Cache-Datenkonsistenz, Penetration und Lawinenschutz müssen berücksichtigt werden, und ein weiterer Komponententyp muss gewartet werden. Daher wird empfohlen, zunächst die Lese-/Schreibtrennung zu verwenden und dann den Cache zu nutzen, wenn dies nicht möglich ist. 1,1 KerneBei der Master-Slave-Lese-/Schreibtrennung werden die Daten einer DB grundsätzlich in eine oder mehrere Kopien kopiert und auf andere DB-Server geschrieben:
Der Schlüssel zur Trennung von Lesen und Schreiben zwischen Master und Slave ist daher:
Master-Slave-Replikation
Geben Sie Entwicklern das Gefühl, immer noch eine einzige Datenbank zu verwenden 2 Master-Slave-ReplikationDie MySQL Master-Slave-Replikation basiert auf Binlog, das alle Änderungen an MySQL aufzeichnet und sie in binärer Form in binären Protokolldateien auf der Festplatte speichert. Bei der Master-Slave-Replikation werden die Daten im Binärprotokoll normalerweise asynchron von der Masterdatenbank in die Slavedatenbank übertragen: Der Vorgang in der Masterdatenbank wartet nicht, bis die Binärprotokollsynchronisierung abgeschlossen ist. 2.1 Master-Slave-Replikationsprozess
Die Verwendung eines unabhängigen Protokoll-Dump-Threads erfolgt asynchron, um den Hauptaktualisierungsprozess der Master-Datenbank nicht zu beeinträchtigen. Nach dem Empfang der Informationen schreibt die Slave-Datenbank diese nicht in den Slave-Datenbankspeicher, sondern in ein Relay-Protokoll. Dadurch soll das Schreiben in den tatsächlichen Speicher der Slave-Datenbank vermieden werden, was zeitaufwändiger ist und letztendlich zu einer längeren Verzögerung zwischen der Slave-Datenbank und der Master-Datenbank führt.
Aus Leistungsgründen wartet der Schreibvorgang in der Masterdatenbank nicht, bis die Master-Slave-Synchronisierung abgeschlossen ist, bevor er das Ergebnis zurückgibt. In Extremfällen ist beispielsweise die Festplatte beschädigt oder die Maschine verliert die Stromversorgung, bevor das Binärprotokoll der Masterdatenbank auf die Festplatte geschrieben wird, was zu einem Verlust des Binärprotokolls und inkonsistenten Master-Slave-Daten führt. Die Wahrscheinlichkeit ist jedoch sehr gering und tolerierbar. Nach dem Ausfall der Masterdatenbank kann die durch den Verlust des Binärprotokolls verursachte Inkonsistenz der Master-Slave-Daten nur manuell wiederhergestellt werden. Nach der Master-Slave-Replikation können Sie:
Selbst wenn die Schreibanforderung die Tabelle oder den Datensatz sperrt, hat dies auf diese Weise keine Auswirkungen auf die Ausführung der Leseanforderung. Bei hoher Parallelität können mehrere Slaves eingesetzt werden, um den Leseverkehr zu teilen, d. h. ein Master und mehrere Slaves unterstützen das Lesen mit hoher Parallelität. Die Slave-Datenbank kann auch als Backup-Datenbank verwendet werden, um Datenverluste aufgrund eines Ausfalls der Master-Datenbank zu vermeiden. Kann eine unbegrenzte Erhöhung der Anzahl an Slaves eine höhere Parallelität ermöglichen? 2.2 Nebenwirkungen der Master-Slave-ReplikationBeispielsweise enthält der Vorgang des Postens in Moments Daten:
Wenn die Datenbank aktualisiert wird
Beispielsweise die Synchronisierung des Moments-Inhalts mit dem Überprüfungssystem Daher wird nach dem Aktualisieren der Hauptdatenbank die Freundeskreis-ID in MQ geschrieben, und der Verbraucher ruft basierend auf der ID die Freundeskreisinformationen aus der Datenbank ab und sendet sie dann an das Überprüfungssystem. Schematische Darstellung der Auswirkungen der Master-Slave-Verzögerung auf das Geschäft 2.3 Vermeidung von Verzögerungen bei der Master-Slave-ReplikationWas sollte ich tun? Tatsächlich gibt es viele Lösungen und die Kernidee besteht darin, zu versuchen, die Daten nicht aus der Datenbank abzufragen. Daher gibt es für den obigen Fall folgende Lösungen: 2.3.1 DatenredundanzBeim Senden von MQ können Sie nicht nur die Freundeskreis-ID senden, sondern alle vom Verbraucher benötigten Freundeskreisinformationen und vermeiden so eine erneute Datenabfrage aus der Datenbank. Diese Lösung wird empfohlen, da sie relativ einfach ist. Sie kann jedoch dazu führen, dass eine einzelne Nachricht größer wird, was wiederum die Bandbreite und die Zeit zum Senden der Nachricht erhöht. 2.3.2 Cache verwendenBeim synchronen Schreiben in die Datenbank werden die Momentdaten in den Cache geschrieben. Auf diese Weise fragt der Verbraucher, wenn er Momentinformationen erhält, zuerst den Cache ab, wodurch auch die Datenkonsistenz sichergestellt werden kann. Diese Lösung eignet sich für Szenarien, in denen neue Daten hinzugefügt werden. Wenn Sie Daten aktualisieren, kann das vorherige Aktualisieren des Cache zu Dateninkonsistenzen führen. Beispielsweise aktualisieren zwei Threads gleichzeitig Daten:
Der finale DB-Wert (1) und der Cache-Wert (2) sind inkonsistent! 2.3.3 Abfrage der HauptdatenbankAnstatt die Slave-Datenbank im Consumer abzufragen, können Sie die Master-Datenbank abfragen. Seien Sie bei der Verwendung vorsichtig. Stellen Sie sicher, dass das Abfragevolumen nicht zu groß ist und innerhalb der Toleranz der Hauptdatenbank liegt. Andernfalls wird die Hauptdatenbank stark belastet. Verwenden Sie diese Lösung nur, wenn es unbedingt nötig ist. Da eine Schnittstelle zum Abfragen der Hauptdatenbank bereitgestellt wird, kann nur schwer sichergestellt werden, dass andere diese Methode nicht missbrauchen. Auch die Verzögerung der Master-Slave-Synchronisierung kann bei der Fehlersuche leicht übersehen werden. Wie wird die Master-Slave-Verzögerungszeitwarnung anhand welches Indikators in welcher Datenbank beurteilt? In der Slave-Bibliothek wird der Monitor „show slave“ angezeigt. 3 So greifen Sie auf die Datenbank zuDurch die Verwendung der Master-Slave-Replikation zum Kopieren von Daten auf mehrere Knoten wird auch die Lese- und Schreibtrennung der Datenbank realisiert. Zu diesem Zeitpunkt ändert sich auch die Verwendung der Datenbank:
Um die Komplexität der Implementierung zu verringern, sind in der Branche viele DB-Middlewares entstanden, um DB-Zugriffsprobleme zu lösen, die grob in folgende Kategorien unterteilt werden können: 3.1 Innerhalb der Anwendung Beispielsweise wird TDDL (Taobao Distributed Data Layer) in Form von Code in die Anwendung eingebettet ausgeführt. Es kann als Datenquellenagent betrachtet werden. Seine Konfiguration verwaltet mehrere Datenquellen. Jede Datenquelle entspricht einer Datenbank, die eine Master- oder eine Slave-Datenbank sein kann. VorteilEs ist einfach zu verwenden und hat geringe Bereitstellungskosten. Da es in die Anwendung eingebettet ist und mit dem Programm ausgeführt wird, eignet es sich für kleine Teams mit schwachen Betriebs- und Wartungsfähigkeiten. MangelFehlende Mehrsprachenunterstützung, alles in Java entwickelt, keine Unterstützung für andere Sprachen. Auch Versions-Upgrades sind auf Aktualisierungen durch den Benutzer angewiesen. 3.2 Unabhängig bereitgestellte Proxy-Layer-LösungWie Mycat, Atlas und DBProxy. Diese Art von Middleware wird auf einem unabhängigen Server eingesetzt. Der Geschäftscode ist wie die Verwendung einer einzelnen Datenbank. Tatsächlich verwaltet sie intern viele Datenquellen. Wenn eine Datenbankanforderung vorliegt, nimmt sie die erforderlichen Änderungen an der SQL-Anweisung vor und sendet sie dann an die angegebene Datenquelle. Vorteil
Mangel
4 FazitDie Master-Slave-Replikation kann auf eine Technologie erweitert werden, die Speicherdaten zwischen Speicherknoten repliziert, wodurch Datenredundanz zur Sicherung erreicht und die horizontalen Erweiterungsmöglichkeiten verbessert werden können. Beachten Sie bei der Verwendung der Master-Slave-Replikation Folgendes:
Wenn das erfolgreiche Schreiben auf alle Slave-Knoten garantiert ist, wird die Schreibleistung definitiv beeinträchtigt. Wenn nur das Schreiben auf den Master-Knoten erfolgreich ist, kann auf dem Slave-Knoten ein Datensynchronisierungsfehler auftreten, der zu Inkonsistenzen zwischen Master und Slave führt. Internetprojekte priorisieren im Allgemeinen die Leistung gegenüber starker Datenkonsistenz
Dies führt zu vielen merkwürdigen Problemen, bei denen Daten nicht gelesen werden können. Viele reale Fälle:
Verschiedene Komponenten haben unterschiedliche Anforderungen an Replikationskonsistenz und Latenz und übernehmen unterschiedliche Lösungen, aber die Designideen sind dieselben. Häufig gestellte FragenWenn eine große Anzahl von Bestellungen vorliegt, ist das Hashen dieser Bestellungen in verschiedene Datenbanken über die Benutzer-ID für Bestellabfragen von Front-End-Benutzern von Vorteil. Auf der Back-End-Systemseite müssen jedoch alle Bestellungen angezeigt und sortiert werden, sodass die SQL-Ausführung sehr langsam ist. Was soll ich dagegen tun? Da das Backend-System die Daten in den Unterdatenbanken und Untertabellen nicht direkt abfragen kann, können Sie eine Synchronisierung der Daten mit einer separaten Backend-Datenbank oder mit ES in Erwägung ziehen. Damit ist dieser Artikel darüber, wie MySQL Milliarden von Datenverkehr unterstützt, abgeschlossen. Weitere Informationen zu MySQL Milliarden von Datenverkehr finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Unterschiede im Stundentrennzeichen zwischen Browsern
>>: Detaillierte Erklärung der Lösung zur Schriftunschärfe bei Verwendung von Transform in CSS3
1. Was ist In react Anwendungen werden Ereignisna...
Inhaltsverzeichnis 1. Berechnete Eigenschaften Sy...
Was ist ein Speicherleck? Ein Speicherleck bedeut...
Code kopieren Der Code lautet wie folgt: html, Ad...
Vor Kurzem musste ich den Server erneut einem Str...
Es gibt zwei Möglichkeiten, die Formularübermittl...
In diesem Artikel wird der spezifische JavaScript...
Vorwort Die MySQL-Berechtigungstabelle wird beim ...
Inhaltsverzeichnis Schmutzige Seiten (Speichersei...
1. Fazit Syntax: Limit-Offset, Zeilen Schlussfolg...
In MySQL kann das Problem der Groß- und Kleinschr...
Inhaltsverzeichnis 1. Datenbankmodul 1.1 Datenban...
Code kopieren Der Code lautet wie folgt: <!DOC...
Inhaltsverzeichnis Überblick erster Schritt Schri...
Routenparameter, Routennavigationswächter: Beibeh...