Die englische Erklärung für die Redis-Cache-Lawine ist „Running Bison“, was bedeutet, dass der gleichzeitige Datenverkehr nach dem Absturz der Cache-Ebene wie ein galoppierender Bison ist und eine große Menge an Back-End-Speicher aufweist Aus bestimmten Gründen und aufgrund des Gesamtausfalls bei der Bereitstellung von Diensten erreichen alle Anforderungen die Speicherschicht, und die Anzahl der Aufrufe an die Speicherschicht nimmt dramatisch zu, was dazu führt, dass die Speicherschicht aufhängt.
1. Was ist Lawine
Da die Cache-Schicht eine große Anzahl von Anforderungen trägt, schützt sie effektiv die Speicherschicht. aber wenn Aus bestimmten Gründen kann der Cache keine Dienste als Ganzes bereitstellen, sodass alle Anforderungen die Speicherschicht erreichen und die Anzahl der Aufrufe an die Speicherschicht dramatisch ansteigt, was dazu führt, dass die Speicherschicht aufhängt. Die englische Erklärung für die Cache-Lawine lautet „Bison ausführen“, was bedeutet, dass der gleichzeitige Datenverkehr nach dem Absturz der Cache-Schicht einem galoppierenden Bison mit einer großen Menge an Back-End-Speicher ähnelt.
Ein Szenario, in dem dieses Problem auftritt, ist: Wenn der Cache-Server neu gestartet wird oder eine große Anzahl von Caches in einem bestimmten Zeitraum ausfällt, sodass bei einem Ausfall eine große Datenmenge direkt auf die Datenbank zugreift, was ein großes Problem für den DB-Druck darstellen wird.
2. Lösung
(1) Richten Sie die Hochverfügbarkeit von Redis-Cluster und DB-Cluster ein. Wenn Redis ausfällt, kann es sofort ersetzt werden ein anderer Die Maschine übernimmt. Dadurch können einige Risiken vermieden werden.
(2) Verwenden Sie Mutex-Sperren
Steuern Sie nach Ablauf des Caches die Anzahl der Threads, die die Datenbank lesen und schreiben, indem Sie sie sperren oder in die Warteschlange stellen. Beispiel: Nur ein Thread darf Daten abfragen und den Cache für einen bestimmten Schlüssel schreiben, während andere Threads warten. Wenn es sich um eine eigenständige Maschine handelt, können Sie das Problem mit „synchoned“ oder „lock“ lösen. Wenn es sich um eine verteilte Umgebung handelt, können Sie das Problem mit dem Befehl „redis setnx“ lösen.
(3) Verschiedene Schlüssel können auf unterschiedliche Ablaufzeiten eingestellt werden, um die Zeitpunkte der Cache-Ungültigmachung inkonsistent zu machen und eine gleichmäßige Verteilung zu erreichen.
(4) Läuft nie ab
Redis ist so eingestellt, dass es nie abläuft. Dadurch wird sichergestellt, dass es keine Hotspot-Probleme gibt, das heißt, es läuft nicht physisch ab.
(5) Ressourcenschutz
Mit der Hystrix von Netflix können Sie den Thread-Pool verschiedener Ressourcen isolieren, um den Haupt-Thread-Pool zu schützen.
Empfohlenes Tutorial: „Redis-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist Redis-Lawine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!