2017-11-02 2 views
0

Gemäß der Antwort this eines Azure Redis Cache-Teammitglieds stellt der Azure Redis Cache einen einzelnen Endpunkt zur Verfügung. Dieser Endpunkt wird automatisch entweder zum Master- oder zum Slave-Knoten geroutet (bei Failover nehme ich an). Die Antwort heißt es auch, dass:Azure Redis Cache - Wie man mit einer replizierten Instanz arbeitet

Azure ... Kontrollen auf der Clientseite erfordert, um sicherzustellen, dass der Knoten tatsächlich Master oder Slave

ist

So Kunden einen einzelnen Endpunkt sehen und müssen irgendwann überprüfen welche Instanz sie sprechen zu -, dass einige Fragen aufwirft:

  1. Wann sollte eine Redis Kundenbetreuung, ob es an den Master spricht oder den Slave-Knoten? Dient es nur dazu, Inkonsistenzen während des Failovers zu verhindern, oder gibt es andere Bedenken?

  2. Wie (und wann) sollte ein Client prüfen, ob er mit dem Master oder der Slave-Instanz verbunden ist? Ist es unter info replication ausgeführt?

Antwort

1

Vom docs:

Wenn der Master-Knoten neu gestartet wird, Azure Redis Cache nicht auf den Replika-Knoten über und fördert es zu meistern. Während dieses Failovers kann es ein kurzes Intervall geben, in dem Verbindungen in den Cache fehlschlagen können.

Mein Verständnis ist, dass Sie nie mit dem Sklaven verbinden, weil es Ihnen nie ausgesetzt ist. Wenn der Master erlischt, wird der Slave zum Master befördert und das ist, womit Sie sich wieder verbinden.

+0

Das bedeutet, dass Clients nicht wissen können, dass sie mit der Slave-Instanz verbunden sind. Kann dies nicht zu Konsistenzproblemen während/nach einem Failover führen, wenn der Slave die einzelnen Schreibvorgänge vor dem Hochstufen nicht erhalten hat? – Malt

+0

Noch einmal, meine eigene Interpretation, aber dies gilt wahrscheinlich immer noch alle - https://redis.io/topics/replication, was bedeutet, dass der Master/Slave wird sein Bestes tun, um Konsistenz zu erreichen, aber es ist nicht garantiert (nun, es ist ein Cache überhaupt keine Datenbank). Wenn Microsoft zusätzliche Hasen aus dem Hut zieht, um den Tanz zu verbessern, können nur sie dies beantworten. – evilSnobu

+0

Korrekt: Verbindungen zu Azure Redis über die Ports 6379/6380 zeigen immer auf den Master-Knoten in einem nicht gruppierten Cache. Wenn ein Failover auftritt, leitet das System alle Verbindungen nach dem Failover automatisch an den neuen Master-Knoten um. Die Replikation ist asynchron, sodass alle Schreibvorgänge, die noch nicht an den Slave repliziert wurden, verloren gehen. Dies ist das Standardverhalten von Redis und nicht spezifisch für Azure Redis. Wenn Sie ein Cluster-Cache sind, dann funktioniert die Sache etwas anders. Die Clusterkonfiguration wird über die erste Verbindung heruntergeladen, und der Client verbindet sich dann direkt mit allen Knoten im Cluster. – JonCole

Verwandte Themen