Was ist Redis Lawine? Der folgende Artikel gibt Ihnen eine kurze Einführung und hoffe, dass er Ihnen hilfreich sein wird.
Was ist eine Lawine?
Da die Cache-Schicht eine große Anzahl von Anfragen trägt, schützt sie die Speicherschicht effektiv. Wenn der Cache jedoch aus bestimmten Gründen keine Dienste bereitstellen kann, kommen alle Anfragen an Schicht wird die Anzahl der Aufrufe an die Speicherschicht dramatisch ansteigen, was dazu führt, dass auch die Speicherschicht aufhängt. Die englische Erklärung für die Cache-Lawine lautet „Running Bison“, was bedeutet, dass nach dem Absturz der Cache-Schicht gleichzeitiger Datenverkehr in großen Mengen auf den Back-End-Speicher zugreift, wie ein galoppierender Bison.
Das einfache Verständnis der Cache-Lawine ist: Aufgrund des Ausfalls des ursprünglichen Caches (oder der Daten werden nicht in den Cache geladen) während des Zeitraums, in dem der neue Cache nicht angekommen ist (der Cache wird normalerweise abgerufen). Von Redis aus (siehe unten) sollte ursprünglich auf den gesamten Cache zugegriffen werden. Alle Anforderungen dienen dazu, die Datenbank abzufragen, was eine enorme Belastung für die Datenbank-CPU und den Speicher darstellt. In schweren Fällen kann es zu Datenbankausfällen und Systemabstürzen kommen.
Der Cache-Fehler ist wie unten dargestellt:
Ein Szenario, in dem dieses Problem auftritt, ist: wenn der Cache-Server wird neu gestartet Oder eine große Anzahl von Caches kann in einem bestimmten Zeitraum ausfallen. Wenn sie also ausfallen, greift eine große Datenmenge direkt auf die Datenbank zu, was einen großen Druck auf die Datenbank ausübt.
Der Lawineneffekt der Cache-Ungültigmachung hat schreckliche Auswirkungen auf das zugrunde liegende System! Was sind also die Lösungen für dieses Problem?
Lösung
1) Richten Sie die Hochverfügbarkeit von Redis-Cluster und DB-Cluster ein. Wenn Redis ausfällt, kann es sofort durch eine andere Maschine ersetzt werden. Dadurch können einige Risiken vermieden werden.
2) Mutex-Sperren verwenden
Nach Ablauf des Caches steuern Sie die Anzahl der Threads, die die Datenbank lesen und schreiben, durch Sperren oder Warteschlangen. Beispiel: Nur ein Thread darf Daten abfragen und 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) Für verschiedene Schlüssel können Sie unterschiedliche Ablaufzeiten festlegen, um die Cache-Ungültigmachungszeitpunkte inkonsistent zu machen und zu versuchen, 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.
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!