Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
咔咔
Freigeben: 2020-08-28 17:31:30
Original
1887 Leute haben es durchsucht
❝
Sentinel zielt hauptsächlich auf Lösungen für Einzelknotenausfälle ab, die nicht automatisch wiederhergestellt werden können. Dieser Artikel verwendet den offiziell bereitgestellten Redis-Cluster Am Ende des Artikels gibt es etwas, das Sie möchten. Richten Sie den SSH-Hintergrund ein! Artikel gemäß dieser Roadmap Ich habe einige Wissenspunkte gefunden, die noch nicht hinzugefügt wurden, und freue mich darauf, Sie im Kommentarbereich zu sehen.❞
Dieser Artikel stellt den Cluster hauptsächlich unter folgenden Gesichtspunkten vor:
Einführung in. Cluster
Die Rolle des Clusters
Konfigurieren Sie den Cluster.
Manuelles und automatisches Failover
re dis 4.0
Redis-Arbeitsverzeichnis /usr /local/redisAlle Vorgänge werden in der Simulation einer virtuellen Maschine ausgeführt
1. Cluster-Einführung
Der Cluster soll das Speicherlimit und die Parallelität einzelner Maschinen lösen Probleme bei der Master-Slave-Replikation. Wenn dieser Speicher erreicht ist, ist Redis nicht mehr in der Lage, Dienste bereitzustellen Die geschriebenen Daten werden sehr groß sein, was leicht zu einem Pufferüberlauf führen kann und dazu führen kann, dass unbegrenzte vollständige Kopien vom Master und Slave nicht ordnungsgemäß funktionieren
.
Dann müssen wir den Master-Slave einer einzelnen Maschine in einen Viele-zu-Viele-Modus ändern und alle Masterknoten werden miteinander verbunden, um miteinander zu kommunizieren. Diese Methode kann nicht nur den Speicher einer einzelnen Maschine gemeinsam nutzen, sondern auch Anfragen verteilen und die Verfügbarkeit des Systems verbessern.
Wie im Bild gezeigt: Wenn eine große Anzahl von Schreibanforderungen vorliegt, werden Anweisungen nicht mehr an einen einzelnen Masterknoten gesendet, sondern die Anweisungen werden an verschiedene Masterknoten verteilt, um den Speicher gemeinsam zu nutzen und eine große Anzahl zu vermeiden von Anfragen.
Wie werden also Anweisungen weitergeleitet und gespeichert? Wir müssen mehr über die Cluster-Speicherstruktur herausfinden.
2. Cluster-Funktion
verteilt die Speicherkapazität einer einzelnen Maschine und kann auch problemlos erweitert werden.
Umleitung von Zugriffsanfragen von einer einzelnen Maschine
Verbesserung der Systemverfügbarkeit
Wie ist der Satz zur Verbesserung der Systemverfügbarkeit zu verstehen? Schauen wir uns das Bild unten an, die Auswirkungen auf das System wird nicht so groß sein.
Zu diesem Zeitpunkt wird jemand fragen: Wie funktioniert der Cluster, wenn Master1 ausfällt? Diese Frage wird im folgenden Failover für Sie beantwortet. Und dieses Problem wird im Hauptkapitel ausführlich erläutert
3. Cluster-Speicherstruktur
Die Speicherstruktur des Clusters ist nicht so einfach. Erstens: Was muss getan werden, wenn der Benutzer einen Tastenbefehl auslöst? Ein Wert wird über CRC16 (Schlüssel) berechnet.
Verwenden Sie diesen Wert modulo 16384, und Sie erhalten zunächst einen Wert von 28 Schlüssel ist gespeichertJetzt kommt die Frage, in welchem Redis-Speicherplatz soll dieser Schlüssel gespeichert werden?
Tatsächlich hat Redis den Speicherplatz bereits nach dem Start des Clusters aufgeteilt16384 Kopien, jeder Host speichert einen Teil.
Hier muss beachtet werden, dass die Nummer, die ich jedem Redis-Speicherplatz gegeben habe, einem kleinen Speicherplatz entspricht (Der Fachbegriff "Hash-Slot"), man kann darunter die Zahl innerhalb eines Gebäudes verstehen, und ein Gebäude ist der gesamte Lagerraum davon Redis. Die Nummer jedes Hauses entspricht einem Speicherplatz. Dieser Speicherplatz verfügt über einen bestimmten Bereich zum Speichern des entsprechenden Schlüssels, was nach der Aufnahme des Modells im obigen Bild nicht der Fall ist.
Die 28, auf die der Pfeil zeigt, bedeutet, dass 28 in diesem Bereich gelagert werden. Dieses Haus kann 29, 30, 31 usw. lagern.
Nun stellt sich die Frage: Was sollen wir tun, wenn wir eine Maschine hinzufügen oder entfernen? Schauen Sie sich Bilder an, um zu sprechen, und versuchen Sie, keine Worte zu verwenden, wenn Sie Bilder zur Erklärung verwenden können.
Nach dem Hinzufügen einer neuen Maschine werden der neuen Maschine bestimmte Slots aus den anderen drei Speicherplätzen zugewiesen. Hier können Sie einstellen, wie viele Slots Sie in die neue Maschine einbauen möchten.
In ähnlicher Weise werden nach dem Reduzieren einer Maschine die entfernten Slots anderen vorhandenen Maschinen neu zugewiesen. Genau wie beim Hinzufügen eines neuen Knotens können Sie den Node-Empfangsslot angeben.
Das sogenannte Hinzufügen eines Knotens oder Entfernen eines Knotens besteht darin, den Speicherort des Slots zu ändern. Nachdem wir die Speicherstruktur des Clusters verstanden haben, müssen wir eine weitere Frage klären: Wie gestaltet man die interne Kommunikation des Clusters? Ein Wert kommt, ein Schlüssel wird erhalten, woher kommen die Daten, und wir werden uns diese Frage weiter unten ansehen.
2. Kommunikationsdesign
Jeder Knoten im Cluster sendet in einem bestimmten Zeitraum Ping-Nachrichten an andere Knoten, und andere Knoten geben Pong als Antwort zurück. Nach einer gewissen Zeit kennen alle Knoten die Slot-Informationen aller Knoten im Cluster.
Wie in der Abbildung unten gezeigt, werden die 16384 Hash-Slots bei drei Knoten in drei Teile unterteilt.
Sie lauten 0-5500, 5501-11000 bzw. 11001-16384
Wie verarbeitet der Cluster die Anfrage, wenn ein Benutzer eine Schlüsselanforderung initiiert?
Das schwarze Kästchen im Bild unten stellt die Slot-Informationen aller Knoten im Cluster dar und enthält viele weitere Informationen.
Wie in der Abbildung gezeigt, initiiert der Benutzer eine Schlüsselanforderung, Redis berechnet nach Erhalt die Steckplatzposition des Schlüssels und findet den entsprechenden Knoten basierend auf der Steckplatzposition.
Wenn sich der Zugriffssteckplatz auf dem Knoten selbst befindet Dann werden die dem Schlüssel entsprechenden Daten direkt zurückgegeben.
Andernfalls wird ein verschobener Umleitungsfehler beantwortet und der richtige Knoten wird an den Client zurückgegeben.
Dann den Tastaturbefehl erneut senden
4. Cluster konfigurieren
1. Konfigurationsdatei ändern
Einfach bezahlen Achtung Klicken Sie einfach auf die Konfigurationsinformationen im Kreis
clustre-node-timeout 10000: Knoten-Timeout, hier zur Vereinfachung des Testens , es ist auf 10s eingestellt Ersetzen Sie die Datei sed 's/6380 /g' 6379-redis.conf > 6380-redis.conf
Erstellen Sie auf diese Weise Konfigurationsdateien für 6 verschiedene Ports
Das obige ist der detaillierte Inhalt vonAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert .... Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
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