Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

不言
不言nach vorne
2019-02-25 09:48:283079Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Prinzipien der Redis-Master-Slave-Replikation (Bilder und Text). Ich hoffe, dass er für Sie hilfreich ist.

Probleme auftreten

  1. Maschinenausfall. Wir stellen es auf einem Redis-Server bereit. Wenn ein Maschinenausfall auftritt, müssen wir auf einen anderen Server migrieren und sicherstellen, dass die Daten synchronisiert sind. Daten sind das Wichtigste. Wenn es Ihnen egal ist, werden Sie Redis grundsätzlich nicht verwenden.

  2. Kapazitätsengpass. Wenn wir den Redis-Speicher von 16G auf 64G erweitern müssen, wird eine einzelne Maschine dies definitiv nicht erfüllen können. Natürlich können Sie eine neue 128G-Maschine kaufen.

Lösung

Um eine größere Speicherkapazität der verteilten Datenbank zu erreichen und einem hohen gleichzeitigen Zugriff standzuhalten, werden wir die Daten der ursprünglichen zentralen Datenbank separat in mehreren anderen Netzwerken speichern Knoten.

Um dieses Einzelknotenproblem zu lösen, stellt Redis auch mehrere Kopien von Daten zur Replikation auf anderen Knoten bereit, um eine hohe Verfügbarkeit von Redis und eine redundante Datensicherung zu erreichen, um eine hohe Verfügbarkeit von Daten und Diensten sicherzustellen.

Master-Slave-Replikation

Was ist Master-Slave-Replikation?

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Master-Slave-Replikation bezieht sich auf das Kopieren der Daten eines Redis-Servers zu anderen Redis-Servern. Ersterer wird als Master-Knoten bezeichnet, letzterer als Slave-Knoten. Die Datenreplikation erfolgt in eine Richtung und kann nur vom Master-Knoten zum Slave-Knoten erfolgen.

Standardmäßig ist jeder Redis-Server ein Master-Knoten und ein Master-Knoten kann mehrere Slave-Knoten (oder keine Slave-Knoten) haben, aber ein Slave-Knoten kann nur einen Master-Knoten haben.

Die Rolle der Master-Slave-Replikation

  1. Datenredundanz: Die Master-Slave-Replikation implementiert eine Hot-Sicherung von Daten, die zusätzlich zur Persistenz eine Datenredundanzmethode darstellt.

  2. Fehlerbehebung: Wenn der Master-Knoten ein Problem hat, kann der Slave-Knoten Dienste bereitstellen, um eine schnelle Fehlerbeseitigung zu erreichen.

  3. Lastausgleich: Auf der Grundlage der Master-Slave-Replikation in Kombination mit der Lese-Schreib-Trennung kann der Master-Knoten Schreibdienste bereitstellen und die Slave-Knoten können Lesedienste bereitstellen (d. h. Wenn Sie Redis-Daten schreiben, stellen Sie eine Verbindung zum Master-Knoten her, und stellen Sie beim Lesen von Redis-Daten eine Verbindung zum Slave-Knoten her, um die Serverlast zu teilen. Insbesondere in Szenarien, in denen weniger geschrieben und mehr gelesen wird, kann die Aufteilung der Leselast über mehrere Slave-Knoten erheblich sein Erhöhen Sie die Parallelität des Redis-Servers.

  4. Lese- und Schreibtrennung: Es kann verwendet werden, um die Lese- und Schreibtrennung, das Schreiben der Hauptbibliothek und das Lesen der Slave-Bibliothek zu realisieren. Die Lese- und Schreibtrennung kann nicht nur die Auslastungskapazität des Servers verbessern , kann aber auch entsprechend der Nachfrage verwendet werden

  5. Grundstein für hohe Verfügbarkeit: Zusätzlich zu den oben genannten Funktionen ist auch die Master-Slave-Replikation möglich Grundlage für die Implementierung von Sentinels und Clustern ist die Master-Slave-Replikation.

Master-Slave-Replikation aktivieren

Slave-Knoten aktivieren die Master-Slave-Replikation. Es gibt drei Möglichkeiten:

  1. Konfigurationsdatei : In der Konfigurationsdatei des Servers hinzufügen: Slaveof

  2. Startbefehl: Hinzufügen --slaveof den Befehl.

  3. Client-Befehl: Nachdem der Redis-Server gestartet wurde, führen Sie den Befehl direkt über den Client aus: Slaveof
    , dann die Redis-Instanz wird zum Slave-Knoten.

Sie können einige Replikationsinformationen über den Info-Replikationsbefehl anzeigen

Master-Slave-Replikationsprinzip

Der Master-Slave-Replikationsprozess kann grob unterteilt werden in 3 Phasen: Verbindungsaufbauphase (d. h. Vorbereitungsphase), Datensynchronisationsphase, Befehlsweitergabephase.

Nachdem der Slave-Knoten den Befehl „slaveof“ ausgeführt hat, beginnt der Replikationsprozess. Sie können ihn grob im Bild unten sehen.
Aus dem Bild ist ersichtlich, dass der Replikationsprozess grob unterteilt ist in 6 Prozesse

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Die Protokolldatensätze nach der Master-Slave-Konfiguration können diesen Prozess ebenfalls sehen

1) Speichern Sie die Masterknoten-(Master-)Informationen .
Nach der Ausführung von „slaveof“ druckt Redis das folgende Protokoll:

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

2) Der Slave-Knoten (Slave) verwaltet die replikationsbezogene Logik durch geplante Aufgaben, die jede Sekunde ausgeführt werden. Wenn die geplante Aufgabe die Existenz eines neuen Master-Knotens erkennt, versucht sie, eine Netzwerkverbindung mit dem Knoten herzustellen

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Der Slave-Knoten stellt eine Netzwerkverbindung mit dem her Master-Knoten

Der Slave-Knoten richtet einen Socket-Socket ein, der Slave-Knoten richtet einen Socket mit Port 51234 ein, der speziell zum Empfangen der vom Master-Knoten gesendeten Replikationsbefehle verwendet wird. Nachdem der Slave-Knoten erfolgreich verbunden wurde, wird das folgende Protokoll gedruckt:

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Wenn der Slave-Knoten keine Verbindung herstellen kann, versucht die geplante Aufgabe auf unbestimmte Zeit, bis die Verbindung erfolgreich ist, oder führt „slaveof no one“ aus, um die Replikation abzubrechen

Bezüglich Verbindungsfehler , können Sie es auf der Informationsreplikation des Slave-Knotens ausführen. Sehen Sie sich die Metrik „master_link_down_since_seconds“ an, die die Systemzeit aufzeichnet, als die Verbindung zum Master-Knoten fehlschlug. Wenn der Slave-Knoten keine Verbindung zum Master-Knoten herstellen kann, wird jede Sekunde das folgende Protokoll gedruckt, um die Problemerkennung zu erleichtern:

# Error condition on socket for SYNC: {socket_error_reason}

3) Senden Sie den Ping-Befehl.
Nachdem die Verbindung erfolgreich hergestellt wurde, sendet der Slave-Knoten eine Ping-Anfrage für die erste Kommunikation. Der Hauptzweck der Ping-Anfrage ist wie folgt:
·Ermitteln Sie, ob der Netzwerk-Socket zwischen Master und Slave verfügbar ist.
·Erkennen Sie, ob der Masterknoten derzeit Verarbeitungsbefehle annehmen kann.
Wenn der Slave-Knoten nach dem Senden des Ping-Befehls die Pong-Antwort vom Master-Knoten nicht empfängt oder eine Zeitüberschreitung auftritt, z. B. weil das Netzwerk eine Zeitüberschreitung aufweist oder der Master-Knoten blockiert ist und nicht auf den Befehl antworten kann, wird der Slave-Knoten dies tun Trennen Sie die Replikationsverbindung und die nächste geplante Aufgabe initiiert eine erneute Verbindung.

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

Der vom Knoten gesendete Ping-Befehl wird erfolgreich zurückgegeben, Redis druckt das folgende Protokoll und setzt den nachfolgenden Replikationsprozess fort:

Einführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text)

4) Berechtigungsüberprüfung. Wenn der Parameter „requirepass“ auf dem Master-Knoten festgelegt ist, ist eine Kennwortüberprüfung erforderlich. Der Slave-Knoten muss den Parameter „masterauth“ konfigurieren, um sicherzustellen, dass das Kennwort mit dem des Master-Knotens übereinstimmt, damit die Überprüfung fehlschlägt beendet und der Slave-Knoten startet den Replikationsprozess erneut.

5) Datensätze synchronisieren. Nachdem die Master-Slave-Replikationsverbindung normal kommuniziert hat, sendet der Master-Knoten beim ersten Aufbau der Replikation alle Daten, die er enthält, an den Slave-Knoten. Dieser Teil des Vorgangs ist der längste Schritt.

6) Befehl zum Weiterkopieren. Wenn der Master-Knoten die aktuellen Daten mit dem Slave-Knoten synchronisiert, ist der Replikationseinrichtungsprozess abgeschlossen. Als nächstes sendet der Master-Knoten kontinuierlich Schreibbefehle an die Slave-Knoten, um die Konsistenz der Master-Slave-Daten sicherzustellen.

Das obige ist der detaillierte Inhalt vonEinführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen