2017-02-03 2 views
0

Momentan hat meine Spring-Boot-Anwendung einen Redis-Server.Redis-Replikation und Cluster-Unterschied

Nun, dass ich den Redis-Server hoch verfügbar machen möchte, welchen Ansatz sollte ich folgen?

Zum Beispiel würde ich Master, Sklaven und Sentinel eingerichtet haben, wo, wenn mein Master automatisch abstürzt, neue Master gewählt und Anwendung funktioniert normal. Wird diese Vorgehensweise Replikation mit automatischem Failover genannt?

Auf der anderen Seite wie unterscheidet sich Cluster von oben genannten (Replikation) eingerichtet. Hat es auch die Unterstützung von Sentinel-Servern für automatisches Failover?

Und in Bezug auf Daten, ich lese, geteilte Daten zwischen mehreren Knoten Cluster statt Replikation hat die genaue Kopie der Daten des Masters in allen Slaves. In diesem Fall Splitting Daten in mehreren Knoten eines Clusters, würde zu veralteten Daten Situation führen, wenn einige Knoten gehen?

Antwort

1

Wenn auf einem Computer mehr Daten als RAM vorhanden sind, verwenden Sie redis cluster, um die Daten auf den verschiedenen Maschinen zu teilen. Der Redis-Cluster unterstützt die Master-Slave-Replikation und das Failover selbst und benötigt kein Sentinel. Wenn Sie Fehler mit einem Knoten haben, wird er weiter funktionieren, bis die Mehrheit der Master-Knoten fehlschlägt.

I Sie haben weniger Daten als RAM auf einer Maschine, richten Sie eine Master/Slave-Replikation mit Sentinel vor, um das Failover zu behandeln.

https://redis.io/topics/cluster-tutorial

+0

Aber dann in einem redis Cluster einig Master-Knoten konnte nicht einige Daten Recht hat? In diesem Fall, wenn eine Anfrage zum Abrufen von Daten kommt, durchsucht sie die Daten in allen Mastern? Wenn nicht, führt das zu einer veralteten Datensituation? – Harshana

+1

Wenn ein Client eine Verbindung zu einem Cluster-Knoten herstellt und nach Daten fragt, antwortet der Knoten entweder mit den Daten, falls vorhanden, oder teilt dem Client mit, welcher andere Knoten die Daten enthält. Es sollte keine veralteten Daten geben, wenn nicht etwas schief geht, siehe https://redis.io/topics/cluster-tutorial#redis-cluster-consistency- guarantees –

+0

Tatsächlich muss der Client den Knoten kennen, auf den er trifft. Alle Java-Clients tun dies, so dass der Client den Knoten auswählt, mit dem er spricht, um einen bestimmten Schlüssel zu lesen oder zu schreiben. – mp911de