Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die drei Modi des Redis-Clusters?

Was sind die drei Modi des Redis-Clusters?

巴扎黑
巴扎黑Original
2017-09-16 10:01:2717039Durchsuche

Was sind die drei Modi des Redis-Clusters?

Drei Modi des Redis-Clusters

1

Durch die Persistenzfunktion stellt Redis sicher, dass auch beim Neustart des Servers keine Daten (oder nur eine geringe Menge) verloren gehen, da die Daten im Speicher durch Persistenz auf der Festplatte gespeichert werden , und der Neustart lädt Daten von der Festplatte.

Da die Daten jedoch auf einem Server gespeichert sind, kommt es auch zu Datenverlust, wenn auf dem Server Probleme wie ein Festplattenausfall auftreten. Um Single Points of Failure zu vermeiden, besteht eine gängige Praxis darin, mehrere Kopien der Datenbank zu replizieren und auf verschiedenen Servern bereitzustellen, sodass auch bei einem Serverausfall andere Server weiterhin Dienste bereitstellen können. Zu diesem Zweck stellt Redis eine Replikationsfunktion bereit, die die aktualisierten Daten automatisch mit anderen Datenbanken synchronisieren kann, wenn die Daten in einer Datenbank aktualisiert werden.

Im Konzept der Replikation werden Datenbanken in zwei Kategorien unterteilt, eine ist die Master-Datenbank (Master) und die andere ist die Slave-Datenbank (Slave). Die Master-Datenbank kann Lese- und Schreibvorgänge ausführen. Wenn der Schreibvorgang Datenänderungen verursacht, werden die Daten automatisch mit der Slave-Datenbank synchronisiert. Die Slave-Datenbank ist im Allgemeinen schreibgeschützt und akzeptiert von der Master-Datenbank synchronisierte Daten. Eine Master-Datenbank kann mehrere Slave-Datenbanken haben, und eine Slave-Datenbank kann nur eine Master-Datenbank haben.

Konfiguration der Master-Slave-Datenbank

Die Master-Datenbank muss nicht konfiguriert werden. Sie können die Slave-Datenbankinformationen aus der Redis-Conf-Datei laden Verwenden Sie redis- beim Start. server --port 6380 --slaveof 127.0.0.1 6379

Die Slave-Datenbank ist im Allgemeinen schreibgeschützt und kann in beschreibbar geändert werden, die geschriebenen Daten können jedoch problemlos vom Master synchronisiert werden , sodass es weiterhin schreibgeschützt sein kann.

Sie können auch den Befehl „slaveof ip port“ zur Laufzeit verwenden, um den ursprünglichen Master zu stoppen und zum Master zu wechseln. Nur „slaveof no one“ wird sich selbst zum Master machen.

Prinzip der Replikation

Beim Start aus der Datenbank wird ein Synchronisierungsbefehl an die Hauptdatenbank gesendet. Nach Erhalt der Synchronisierung beginnt die Hauptdatenbank, die während des Snapshots empfangenen Befehle zu speichern werden zwischengespeichert. Wenn der Snapshot abgeschlossen ist, sendet die Master-Datenbank den Snapshot und die zwischengespeicherten Befehle zusammen an den Slave. Die Kopierinitialisierung endet.

Danach wird jedes Mal, wenn der Master einen Befehl empfängt, dieser synchron an den Slave gesendet.

Wenn es zu einer Trennung und erneuten Verbindung kommt, übergeben Versionen nach 2.8 die Befehle während des Trennungszeitraums an die Neudatenbank. Inkrementelle Replikation

Master-Slave-Replikation ist eine optimistische Replikation. Wenn der Client die Schreibausführung an den Master sendet, gibt der Master die Ergebnisse nach der Ausführung sofort an den Client zurück und sendet den Befehl asynchron an den Slave, sodass er keine Auswirkungen hat Leistung. Sie können auch die Mindestanzahl der Slave-Master festlegen, die vor dem Schreiben synchronisiert werden sollen.

Festplattenlose Replikation: Wenn die Festplatteneffizienz niedrig ist, wirkt sich dies auf die Replikationsleistung aus. Nach 2.8 können Sie die festplattenlose Replikation einrichten, repl-diskless-sync ja

2. Sentinel

Wenn in der Master-Datenbank eine ungewöhnliche Dienstunterbrechung auftritt, können Entwickler manuell eine Slave-Datenbank auswählen, um ein Upgrade auf die Master-Datenbank durchzuführen, damit das System dies tun kann weiterhin Dienstleistungen erbringen. Allerdings ist der gesamte Prozess relativ umständlich und erfordert manuelle Eingriffe, was eine Automatisierung erschwert. Zu diesem Zweck stellt Redis 2.8 das Sentinel-Tool zur Implementierung automatisierter Systemüberwachungs- und Fehlerbehebungsfunktionen bereit.

Die Rolle des Sentinels besteht darin, zu überwachen, ob die Redis-Master- und Slave-Datenbanken normal laufen. Wenn der Master ausfällt, wechselt er automatisch von der Slave-Datenbank zur Master-Datenbank.

Beispiel:

1 Master 2 Slave 1 Sentinel

redis-server --port 6379

redis-server --port 6380 - -slaveof 192.168.0.167 6379

redis-server --port 6381 --slaveof 192.168.0.167 6379

Sentinel-Konfigurationsdatei sentinel.conf

sentinel monitor mymaster 192.168.0. 167 6379 1

Die 1 steht hier für 1 Sentinel

Hinweis:


Wenn Sie den Sentinel zur Überwachung eines Systems konfigurieren, müssen Sie nur dessen Überwachung konfigurieren Master-Datenbank. Ja, Sentinel erkennt automatisch alle Slave-Datenbanken, die die Master-Datenbank replizieren. Auf diese Weise kann Sentinel den Master 6379 und die Slaves 6380 und 6381 überwachen. Sobald 6379 stirbt, wählt Sentinel eine der beiden aus Wenn sie gleich sind, wählen Sie den mit der kleineren ID. Wenn 6379 wieder auftaucht, wird er als Slave existieren.

3. Cluster (Cluster-aktiviert)

Um einen Cluster zu verwenden, müssen Sie nur die Cluster-Aktivierungskonfiguration jedes einzelnen aktivieren Datenbankknoten. Für eine ordnungsgemäße Funktion sind in jedem Cluster mindestens drei Masterdatenbanken erforderlich.

Selbst wenn Sentinel verwendet wird, wird jede Redis-Instanz vollständig gespeichert, und der in jedem Redis gespeicherte Inhalt besteht aus vollständigen Daten, was Speicher verschwendet und einen Fasseffekt hat. Um die Speichernutzung zu maximieren, können Cluster verwendet werden, bei denen es sich um verteilten Speicher handelt. Das heißt, jedes Redis speichert unterschiedliche Inhalte.

Der Cluster erfordert mindestens 3 Master und 3 Slaves, und jede Instanz verwendet eine andere Konfigurationsdatei. Es besteht keine Notwendigkeit, den Master und die Slaves zu konfigurieren, der Cluster wählt sich selbst aus.

Ändern Sie die Konfigurationsdatei jeder Instanz:

Cluster-enabled ja --Aktivieren Sie den Cluster

cluster-config-file nodes-6382.conf -- Name der Cluster-Konfigurationsdatei,

Jede Instanz muss anders konfiguriert werden. Redis erstellt automatisch eine neue basierend auf dem Dateinamen

Betrieb des Clusters

Src-Ausführung des Redis-Installationsverzeichnisses./redis-trib.rb create --replicas 1

127.0.0.1 :6380 127.0.0.1:6381 127.0.0.1:6382

127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

Die Meisterwahl hier ist ähnlich von zookeeper

Weitere verwandte Informationen finden Sie auf der PHP-Chinese-Website! !

Das obige ist der detaillierte Inhalt vonWas sind die drei Modi des Redis-Clusters?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn