Redis psync

Redis psync

Einführung in die Redis -Replikation

Redis wird mit verschiedenen Funktionen gebaut, um die hohe Verfügbarkeit seiner Instanzen zu gewährleisten. Abgesehen von fortschrittlichen Funktionen mit hoher Verfügbarkeit wie Clustering und Sentinel steht die Master-Replica-Replikation zur Konfiguration und Verwendung mit minimalem Aufwand zur Verfügung. Eine Meisterinstanz kann mehrere Follower -Instanzen haben, in denen jeder Nachfolger eine genaue Kopie der Leader -Instanz ist. Immer wenn eine Nachbildung von seiner Anführungsinstanz getrennt wird, werden die Verbindung erneut hergestellt und den Meister automatisch klonen.

Wie Sie in der angegebenen Abbildung sehen können, sendet der Master, wenn der Master und die Repliken gut miteinander verbunden sind. Dieser Prozess ist eine geringe Latenz und leistungsoptimierte.

Im Falle einer Master-Replica. Es wird als partielle Synchronisation bezeichnet. In einigen Fällen ist eine teilweise Synchronisation nicht möglich. Daher tritt eine vollständige Resynchronisierung auf, bei der die Master -Instanz einen Schnappschuss ihrer Daten generiert, sie zu den Replikationen drückt und alle Befehle sendet, die die Datensatzmodifikationen beeinflussen.

Der Befehl PSYNC/Sync

Wenn Repliken mit einem Master eine Verbindung herstellen, verwenden sie den Befehl PSYNC, um mit der Master -Instanz zu kommunizieren. In diesem partiellen Synchronisationsprozess sendet das angegebene Replikat die Master -Replikations -ID und die Offset -Werte an den Master -Server. Am empfangenden Ende werden diese beiden Informationen verwendet, um die inkrementellen Änderungen des Datensatzes vom Master an die Replikatinstanz zu übertragen.

Kurz gesagt, die Master -Replikations -ID und der Offset stellen eine genaue Version des Master -Datensatzes dar. Jedem Masterknoten wird eine eindeutige Pseudo-Random-Zeichenfolge zugewiesen, die als Replikations-ID bezeichnet wird. Darüber hinaus führt der Master einen Offset -Wert, der für jeden Datenblock, der erstellt wurde, in die Replikate gedrückt werden, erhöht.

Wie in der vorherigen Abbildung gezeigt, hat sich der Replikations -Offset -Wert von 12324 auf 15693 geändert, da der Master -Datensatz aufgrund der Schreibvorgänge des Kunden geändert wurde. Daher ruft das Replikat den Befehl PSYNC mit dem aktualisierten Offset -Wert auf.

Syntax
Der Befehl PSYNC hat die folgende Syntax:

PSYNC master_replication_id master_replication_offset

master_replication_id: Dies ist die Pseudo-Random-Zeichenfolge, die ein bestimmtes Datensatz darstellt.

master_replication_offset: Der Offset -Wert, der pro Stück Byte inkrementiert wird, wird an die Replikate gesendet.

Dieser Befehl gibt ein Datenstück zurück und schreibt vom Master in eine Replik -Instanz. Kurz gesagt, der Befehl PSYNC startet einen Replikationsstrom von der Leader -Instanz in die Replikatinstanz, die den Datensatz- und Client -Schreibanforderungen über den vorherigen Offset übertragen.

Anwendungsfall - Synchronisierung der Replik mit Master

Beginnen wir mit einigen Redis -Server -Instanzen in verschiedenen Ports wie 6379 und 6380. Sie können den folgenden Befehl verwenden:

Redis-Server --port 6379
Redis-Server --port 6380

Als nächstes konvertieren wir eine Redis -Instanz mit dem Replikof -Befehl in ein Replikat. Vorher müssen wir uns mit dem Redis-Cli, wie im folgenden dargestellt, eine Verbindung zu dieser Instanz herstellen:

Redis -Cli -p 6380

Jetzt wird die Verbindung zur Redis -Server -Instanz im 6380 -Port ausgeführt. Machen wir diese Instanz zu einer Nachbildung der anderen Redis -Instanz, die in Port 6379 ausgeführt wird.

Jetzt können wir testen, ob diese Instanz zu einer Nachbildung geworden ist, indem wir den folgenden Befehl ausgeben:

Wie Sie sehen konnten, wird die Rolle als Sklave für diese Instanz angezeigt. Lassen Sie uns den gleichen Befehl gegen die andere Instanz ausführen und inspizieren:

Es ist ein Masterknoten, wie im vorherigen Ausgangsfenster gezeigt.

Überprüfen wir genau, wie die Synchronisation zwischen Master- und Sklaveninstanzen auftritt. Für Demonstrationszwecke wird der Synchronisierungsbefehl verwendet. Es verhält sich genauso wie der Befehl PSYNC, außer dass eine partielle Synchronisation nicht zulässig ist.

Lassen Sie uns den Synchronisierungsbefehl aus der Replik ausgeben.

Jetzt geben wir die Master -Instanz über die CLI einen Schreibbefehl aus.

Wie erwartet wird der Schreibbefehl unmittelbar auf die Replik übertragen, gefolgt von Pings. Der Befehl PSYNC funktioniert genauso wie der Befehl sync, jedoch mit teilweise Synchronisation aktiviert.

Abschluss

Zusammenfassend ist Redis mit unterschiedlichen Funktionen ausgestattet, die eine hohe Verfügbarkeit ermöglichen. Das Master-Replica-Muster ist eine der von Redis unterstützten Techniken, um sicherzustellen, dass mindestens eine Instanz des Redis-Servers zu einem bestimmten Zeitpunkt verfügbar ist. Jedes Replikat wird mit seinem Master synchronisiert und gibt den Befehl PSYNC aus, um einen Replikationsstrom zu erstellen, der den geänderten Datensatz überträgt und die Anforderungen vom Master schreibt. Wie bereits erwähnt, verhält sich der Befehl PSYNC genauso wie der alte Synchronisationsbefehl, jedoch mit teilweise Synchronisation aktiviert.