Redis Sentinel gegen Cluster

Redis Sentinel gegen Cluster

Redis kann als Remote -Wörterbuchserver identifiziert werden, der hauptsächlich für die Geschwindigkeit ausgelegt ist. Darüber hinaus wird es häufig als In-Memory-Cache und NoSQL-Datenbank verwendet. Als Datenbank oder Cache ist es wichtig, eine hohe Datenzugriffsrate, eine hohe Verfügbarkeit, Datenschutz- und Skalierbarkeitsfunktionen bereitzustellen. Redis führte Sentinel- und Cluster -Lösungen ein, um die genannten Aspekte anzugehen.

Redis -Cluster

Die Redis -Cluster -Technologie, die aus Version 3 eingeführt wurde.0 Ermöglicht die horizontale Skalierung für eine bestimmte Redis -Bereitstellung. Mit Redis -Clustern werden die Daten über mehrere Clusterknoten aufgeteilt, die eine konsistente und zuverlässige Datenserviceschicht für Anwendungen liefern.

Es ist ein Muss, mindestens drei Hauptknoten zu haben, damit ein Cluster ordnungsgemäß funktionieren kann. Zusätzlich sollte jeder Masterknoten mindestens einen einzelnen Sklavenknoten haben. Darüber hinaus ermöglichen Redis -Cluster bis zu einem gewissen Grad eine hohe Verfügbarkeit, indem ein Slaveknoten fördert.

Jeder Clusterknoten kommuniziert mit anderen Knoten mit einem binären Protokollbasierten Knoten-zu-Knoten-Kommunikationskanal. Zusätzlich ist jeder Knoten für Clientverbindungen mithilfe des Standard -TCP -Ports geöffnet.

Das Folgende ist eine hochrangige Skizze einer grundlegenden Redis-Cluster-Konfiguration:


Profis:

  • Daten Sharding
    • Die Daten werden unter mehreren Knoten geteilt und können dynamisch eingestellt werden.
    • Da es kein zentrales Kontrollzentrum gibt, werden die Daten automatisch auf Knoten aufgeteilt.
  • Skalierbarkeit
    • Ein Cluster kann bis zu 1000 Knoten skalieren. Knoten können entfernt oder dynamisch hinzugefügt werden.
  • Automatisches Failover
    • Redis Cluster unterstützt Master-Slave-Architektur und ermöglicht die integrierte Master-Failover-Technik.


Nachteile:

  • Nicht ganz gut verfügbar
    • Im Falle eines großen Versagens können die meisten Master -Knoten sinken, was dazu führt, dass der gesamte Cluster untergeht.
  • Die hohe Anzahl von Knoten pro einzelner Cluster
    • Es ist ein Muss, mindestens drei Master -Instanzen und einen einzelnen Sklavenknoten pro Master zu haben, der mit sechs Knoten endet, um einen ordnungsgemäß funktionierenden Redis -Cluster einzurichten.
  • Keine Garantie für die Datenkonsistenz
    • Redis -Cluster -Master -Replikation wird asynchron verarbeitet und kann die Konsistenz beeinflussen.
  • Mangel an Kundenbibliotheksunterstützung für den Redis -Cluster
    • Es gibt eine minimale Anzahl von Client -Bibliotheken, die die Redis -Cluster -Implementierungen unterstützen.
  • Einzelschichtreplikation
    • Die Replikationsarchitektur der Redis -Cluster -Master -Replikation ermöglicht nur eine einzige Ebene. Eine bestimmte Sklaveninstanz kann nur den Masterknoten replizieren.
  • Redis -Cluster kann in einigen Szenarien anerkannte Schreibvorgänge verlieren
  • Die Datenbearbeitung ist komplizierter
    • Aufgrund der Daten Sharding sollten Cluster -Administratoren mehrere RDB- und AOF -Dateien verwalten. Darüber hinaus sind zusätzliche Anstrengungen erforderlich, um Persistenzdateien von mehreren Knoten zu aggregieren, um eine Sicherung zu erstellen.

Redis Sentinel

Redis Sentinel ist ein hochverfügbarkeitsansatz für Redis-Bereitstellungen, der als separates Programm im Hintergrund ausgeführt wird. Es bringt viele Funktionen in Ihre Redis -Bereitstellungen ein, indem Sie den Status des Master- und Slave -Knotens ständig überprüfen, die wesentlichen Änderungen im Zusammenhang mit den überwachten Instanzen über eine API informieren, den automatischen Failover -Prozess initialisieren, wenn ein Masterfehler auftritt, und als Quelle von Die Behörde für Kunden, die aktuell Active Redis Master Node IP -Adresse herauszufinden.

Ein Redis -Sentinel -Setup kann mit mindestens drei Sentinel -Knoten implementiert werden, wodurch die meisten Probleme in einer bestimmten Redis -Bereitstellung vermieden werden können. Darüber hinaus definiert der Quorum -Wert in einer bestimmten Sentinel -Konfiguration die Mindestanzahl der Sentinel -Knoten, die bestätigen sollten, wenn ein Master fehlgeschlagen ist.

Im Allgemeinen wird der Redis -Sentinel in erster Linie verwendet, um die hohe Verfügbarkeit einer Redis -Datenbank zu unterstützen, in der sie besser abschneidet als im Clustering.

Das Folgende ist eine hochrangige Darstellung einer minimalen Redis-Sentinel-Konfiguration:


Profis:

  • Minimale Anzahl von Knoten
    • Eine vollständig funktionierende Redis -Sentinel -Bereitstellung kann mit drei Knoten gebildet werden.
  • Sehr verfügbar
    • Die Bereitstellung von Redis Sentinel kann kritische Knotenfehler ohne menschliche Intervention überleben.
    • Es kann funktionieren, wenn mindestens eine einzelne Master -Instanz verfügbar ist, obwohl jeder Sklave unten ist.
  • Verbesserte Master -Replikation
    • In Redis Sentinel -Bereitstellung können mehrere Sklaven eine bestimmte Master -Instanz replizieren.
  • Einfachheit und Flexibilität
    • Redis Sentinel ist sehr einfach zu warten und verfügt auch über flexible Konfigurationsoptionen.


Nachteile:

  • Kein Sharding unterstützt
    • Daten Sharding ist nicht möglich. Daher kann groß angelegte Datensätze zugänglich zu einer Verschlechterung der Leistung führen.
  • Mangel an Skalierbarkeit
  • Veraltete Lesevorgänge
    • Normalerweise dienen die Sklavenknoten Lesevorgänge in der Eingabe von Redis Sentinel. Aufgrund der asynchronen Replikation sind Lesevorgänge möglicherweise nicht auf dem neuesten Stand.
  • Redis Sentinel sollte von der Client Library unterstützt werden
  • Der Sklavenknoten fungiert nicht als Backup -Knoten

Redis Sentinel gegen Cluster

Redis -Cluster und Sentinel sind zwei Ansätze, bei denen jeweils unterschiedliche Aspekte im Zusammenhang mit einer Redis -Bereitstellung angesprochen werden. Der REDIS -Cluster -Ansatz ist für komplizierte Implementierungen besser geeignet, die sich mit massiven Datensätzen befassen, in denen er automatische Daten zum Lesen/Schreiben von Abfragen, automatischem Master -Failover und Replikation mit hoher Verfügbarkeit bis zu einem gewissen Grad zur Verfügung stellt. Darüber hinaus können die Redis -Clusterknoten mühelos skaliert werden.

Andererseits konzentriert sich der Redis -Sentinel mehr auf kleinere Implementierungen, wobei die hohe Verfügbarkeit berücksichtigt wird.

Verfügbarkeit

Redis Cluster unterstützt keine hohe Verfügbarkeit nicht vollständig. Denn wenn die Mehrheit der Meister nicht verfügbar ist, kann der Cluster sinken. Im Gegensatz zum Cluster -Ansatz bietet der Redis Sentinel eine hohe Verfügbarkeit ohne menschliche Intervention. Am wichtigsten ist, dass der Sentinel auch mit einer einzigen laufenden Master -Instanz überleben kann, wenn ein kritischer Fehler auftritt.

Daten Sharding

Redis Cluster bietet Sharding -Funktionen, bei denen die Daten auf mehrere Knoten verteilt sind, wenn Clients Netzwerkzugriff auf alle Knoten haben. Es ermöglicht eine erhöhte Leistung und Datenspeicherkapazität.

Andererseits bietet Redis Sentinel keine Ruhemöglichkeiten an. Weil das Sharding die Ungleichgewichtsnutzung des Meisters und des Sklaven verursacht.

Reproduzieren

Beide Ansätze bieten Master -Replikation mit einigen Einschränkungen. Redis Sentinel ermöglicht die Replikation für mehrere Schichten, bei denen mehrere Sklavenknoten sich von einer bestimmten Master -Instanz replizieren können. Im Gegensatz dazu erlaubt der Redis -Cluster -Ansatz keine Replikation für mehrere Ebenen. Es ist nur in der Lage, die Master -Instanz zu einem einzelnen Sklavenknoten zu replizieren. Beide Ansätze beeinträchtigen die Konsistenz aufgrund der asynchronen Replikation.

Skalierbarkeit

Redis -Cluster sind sehr skalierbar. Es unterstützt bis zu tausend Knoten in einem bestimmten Einzelcluster -Setup. Darüber hinaus ermöglichen Cluster das Hinzufügen und Entfernen von Knoten dynamisch und mühelos. Redis Sentinel ist nicht skalierbar und schreibt an die Master-Instanz, daher ist der Sentinel nicht in der Lage, mit den Les-Schreib-Trennungsproblemen zu befassen.

Die Architektur

Ein voll funktionsfähiger Redis -Sentinel kann mit nur drei Knoten erstellt werden. Um jedoch einen Redis -Cluster einzurichten, sind mindestens drei Master -Knoten und drei Sklaven erforderlich.

Abschluss

Zusammenfassend lässt sich sagen. Auf der anderen Seite wurde Redis Sentinel hauptsächlich für einfache Anwendungen erstellt, die sich hauptsächlich auf hohe Verfügbarkeit konzentrieren. Im Vergleich sind beide Lösungen mit ihren Vor- und Nachteilen ausgestattet, aber die Endbenutzer mit einer fein abgestimmten Redis-Bereitstellung zu unterstützen.