Heim  >  Artikel  >  Datenbank  >  Beispielanalyse des Redis-Cluster-Prinzips

Beispielanalyse des Redis-Cluster-Prinzips

WBOY
WBOYnach vorne
2023-05-27 14:55:06940Durchsuche

Das Prinzip des Redis-Clusters

Wenn Sie sich auf Sentinels verlassen, um eine hohe Verfügbarkeit von Redis zu erreichen, und wenn Sie eine hohe Parallelität unterstützen und gleichzeitig große Datenmengen verarbeiten möchten, benötigen Sie einen Redis-Cluster. Redis-Cluster ist eine von Redis bereitgestellte verteilte Datenspeicherlösung. Der Cluster teilt Daten durch Daten-Sharding und bietet Replikations- und Failover-Funktionen.

Knoten

Ein Redis-Cluster besteht aus mehreren Knoten, und mehrere Knoten werden über den Cluster-Meet-Befehl verbunden. Der Knoten-Handshake-Prozess:

  1. Knoten A empfängt den Cluster-Meet-Befehl vom Client

  2. A sendet einen Meet-Nachricht an B basierend auf der empfangenen IP-Adresse und Portnummer

  3. Knoten B empfängt die Meet-Nachricht und gibt Pong zurück

  4. A weiß, dass B die Meet-Nachricht empfangen hat, gibt eine Ping-Nachricht zurück und der Handshake ist erfolgreich

  5. Schließlich verteilt Knoten A die Informationen von Knoten B über das Klatschprotokoll an andere Knoten im Cluster, und andere Knoten geben B ebenfalls die Hand Daten: Die gesamte Cluster-Datenbank ist in 16384 Slots unterteilt. Jeder Knoten im Cluster kann 0 bis 16384 Slots in der Datenbank verarbeiten. Andernfalls ist der Cluster online verfügbar, die gesamte Verarbeitung übernimmt den Offline-Status. Slots können den entsprechenden Knoten zur Verarbeitung über den Befehl „cluster addslots“ zugewiesen werden.

  6. slot ist ein Bit-Array, die Länge des Arrays beträgt 16384/8 = 2048, und jedes Bit des Arrays wird durch 1 dargestellt, um vom Knoten verarbeitet zu werden, und 0 bedeutet, dass es nicht verarbeitet wird bedeutet, dass Knoten A die Slots 0-7 verarbeitet.

Wenn der Client einen Befehl an den Knoten sendet und feststellt, dass der Steckplatz zum aktuellen Knoten gehört, führt der Knoten den Befehl aus. Andernfalls wird ein MOVED-Befehl an den Client zurückgegeben, um den Client dorthin zu leiten Richtiger Knoten. (Der VERSCHOBEN-Prozess erfolgt automatisch)

Wenn Sie Knoten hinzufügen oder entfernen, ist es auch sehr praktisch, Slots neu zuzuweisen. Redis bietet Tools zur Realisierung der Slot-Migration. Der gesamte Prozess erfolgt vollständig online und erfordert keine Unterbrechung des Dienstes.

Failover

Wenn Knoten A eine Ping-Nachricht an Knoten B sendet und Knoten B nicht innerhalb der angegebenen Zeit auf Pong antwortet, markiert Knoten A Knoten B als pfail und vermutet, dass er offline ist, und gleichzeitig Senden Sie den Status von B in Form einer Nachricht an andere Knoten. Wenn mehr als die Hälfte der Knoten B als pfail markieren, wird B als Failover markiert und es wird ein Slave-Knoten mit mehr replizierten Daten angezeigt wird zuerst als Master-Knoten ausgewählt und übernimmt den Slot des Offline-Knotens. Der gesamte Prozess ist dem von Sentinel sehr ähnlich und basiert auf dem Raft-Protokoll.

Das obige ist der detaillierte Inhalt vonBeispielanalyse des Redis-Cluster-Prinzips. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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