Alles, was Sie über Caching wissen müssen



Schönen Tag.

Ich präsentiere Ihnen die Übersetzung des Artikels "Alles, was Sie über Caching wissen müssen - Systemdesign " von Animesh Gaitonde.

Einführung


Haben Sie bemerkt, dass beim Surfen auf einer Webseite mit einer schlechten Internetverbindung Text vor qualitativ hochwertigen Bildern geladen wird? Wenn Sie dieselbe Seite jedoch erneut besuchen, wird sie viel schneller geladen. Wenn Sie eine neue Website besuchen, dauert das Herunterladen viel länger als das Herunterladen häufig besuchter Websites wie Facebook oder Amazon. Wissen Sie, warum das passiert? Es geht nur um Caching.



So sieht meine Instagram-Seite mit einer langsamen Verbindung aus. Wie Sie sehen können, wird der Text angezeigt, während die Bilder noch nicht geladen wurden.

Es ist sehr wichtig, die bestmögliche Erfahrung mit der Anwendung zu bieten, um Benutzer zu binden und einzubeziehen. In einer modernen Welt, in der der Geist des Wettbewerbs herrscht, leidet das Geschäft stark unter der schlechten Benutzererfahrung. Stellen Sie sich vor, Sie sehen Ihre Lieblingsserie oder Ihr Streaming-Video auf einer Website, aber das Video wird ständig angehalten, um es zusätzlich zu laden (zu puffern). Wie lange werden Sie eine solche „Einstellung“ ertragen und zu einer solchen Site zurückkehren?

Das Caching funktioniert nach dem Prinzip der "Lokalisierung von Links". Der Cache ist ein lokales Data Warehouse, um das Abrufen von Informationen und die Wiederherstellung von Daten zu beschleunigen. Der Hauptzweck des Caches besteht darin, die Verzögerung beim Lesen von Daten zu verringern und den Durchsatz der Anwendung zu erhöhen. Schauen wir uns einige Beispiele aus dem wirklichen Leben an.

Cache-Nutzung


Angenommen, Sie kochen jeden Tag ein Abendessen. Zum Kochen benötigen Sie verschiedene Zutaten, Gemüse, Gewürze usw. Gehen Sie dafür jeden Tag in den Laden? Dies kann sehr lästig und zeitaufwändig sein. Natürlich schaut man als erstes in den Schrank in der Küche oder im Kühlschrank. Dies hilft, eine unnötige Fahrt zum Supermarkt zu vermeiden.



Ihr Kühlschrank ist eine Art Cache für Gemüse. Der offensichtliche Vorteil dieses Caches ist eine erhebliche Einsparung an Vorbereitungszeit für das Abendessen.

Wie funktioniert der Cache?


Serveranwendungen speichern normalerweise Daten in einer Datenbank. Wenn ein Client Daten anfordert, sendet die Anwendung eine Anforderung an die Datenbank, empfängt Daten von dort und sendet sie an den Client. Der Datenbankserver ist offline und kann sich auf einem anderen Computer befinden als der Computer, auf dem sich der Anwendungsserver befindet.



Das Lesen von Daten aus der Datenbank ist ein sehr langsamer Prozess, da Sie eine Anforderung senden und E / A ausführen müssen, um Daten aus dem Dateisystem abzurufen. Wenn die Daten im Cache gespeichert sind, ist der Lesevorgang sehr schnell. Wenn ein Client wiederholt dieselben Daten anfordert, ist es sinnvoll, Daten aus dem Cache anstelle der Datenbank zurückzugeben.

Beispiel: Wenn ein Tweet viral ist, fordern alle Clients Daten für denselben Tweet an. Da Twitter Millionen von Benutzern hat, werden durch die Verwendung eines Caches Millionen von Datenbankabfragen vermieden.

Somit reduziert der Cache die Belastung der Datenbank. Befinden sich die angeforderten Daten im Cache, wird die Datenbankanforderung umgeleitet (abgefangen). Sie können eine Analogie zu einer Hash-Tabelle ziehen, in der Schlüssel-Wert-Paare gespeichert sind.

Das folgende Diagramm zeigt den Vorgang des Lesens von Daten aus dem Cache:



Schlüssel-Cache-Konzepte


Zeit zum Leben (TTL)


Dies sind Beschränkungen für die Datenmenge, die im Cache gespeichert werden kann. Sie müssen Einträge im Cache löschen, die der Anwendungsserver nicht mehr benötigt.

Im Fall von Netflix speichert der Server die meistgesehenen oder beliebtesten Shows zwischen. Es ist nicht erforderlich, Shows zwischenzuspeichern, die niemand sieht.

Zum Beispiel: Das Zwischenspeichern der Paper House-Serie ist rationaler als der Indiana Jones-Film.

Richtlinie löschen


Irgendwann ist der Cache voll. Daher besteht die Notwendigkeit, alte (irrelevante) Daten zu löschen und durch neue (relevante) Informationen zu ersetzen.

Es gibt verschiedene Richtlinien zum Löschen des Caches, z. B. "alt (am wenigsten verwendet)," (am wenigsten verwendet, LRU), "selten angefordert (am wenigsten verwendet)" (am wenigsten häufig verwendet, LFU), "zuletzt (zuletzt verwendet)" ( Zuletzt verwendet, MRU). Diese Richtlinien löschen Daten nach einem bestimmten Prinzip aus dem Cache.

Alt


Daten, die lange nicht mehr angefordert wurden, werden aus dem Cache gelöscht. Sobald der Cache voll ist, werden alte Daten gelöscht und neue Daten hinzugefügt.

Angenommen, Facebook speichert Promi-Fotos zwischen. Die Analyse der Abonnentenanfragen zeigt die Relevanz neuer Fotos. Wenn der Cache voll ist, wird das älteste Foto daraus gelöscht.

Selten angefordert


Die LFU verfolgt die Häufigkeit oder Anzahl von Datenanforderungen. Wenn sich die Cache-Größe dem Schwellenwert nähert, werden die am seltensten angeforderten Daten gelöscht.

Wenn wir den Text eingeben, bietet das Telefon verschiedene Optionen zum Beenden des Wortes an, von denen eine anstelle des vollständigen Satzes (Vervollständigung) ausgewählt werden kann. Die Smartphone-Software speichert die am häufigsten eingegebenen Wörter zwischen.



Selten eingegebene Wörter werden anschließend aus diesem Cache gelöscht. Wenn Sie im obigen Beispiel die Wörter "Feature", "Features", "Feder" usw. verwenden, bietet das Telefon nach einiger Zeit keine "Leistung" mehr an, da es aus dem Cache entfernt wird.

Letzte


In dieser Richtlinie werden die neuesten Daten gelöscht. Ältere Daten, die im Cache gespeichert sind, werden bevorzugt. Diese Strategie wird verwendet, wenn die Datenerfassungsvorlage so ist, dass der Benutzer am wenigsten daran interessiert ist, die neuesten Daten abzurufen. Betrachten Sie ein Beispiel.



Dating-Anwendungen wie Tinder speichern normalerweise alle potenziellen Partner (potenzielle Übereinstimmungen oder Vorlieben) des Benutzers zwischen. Wenn ein Benutzer einen Feed durchblättert, indem er ein bestimmtes Profil eines potenziellen Partners nach links oder rechts verschiebt, sollte die Anwendung ihm dieses Profil nicht mehr empfehlen. In diesem Fall führt dies zu einer schlechten Benutzererfahrung.

In diesem Fall müssen die neuesten Daten gelöscht werden. Die Anwendung sollte die angezeigten Profile aus dem Cache löschen.

Cache-Typen


Cache-Aufzeichnung


Wie der Name schon sagt, werden die Daten zuerst in den Cache und dann in die Datenbank geschrieben. Dies stellt die Datenkonsistenz im Cache und in der Datenbank sicher. Jeder Lesevorgang von Daten aus dem Cache entspricht dem letzten Datensatz.



Der Nachteil dieses Ansatzes ist die Verlängerung der Aufnahmezeit. Es ist nicht für stark ausgelastete Systeme mit häufigen Datenschreibvorgängen geeignet. Es eignet sich jedoch hervorragend für Anwendungen, bei denen in der Datenbank gespeicherte Daten häufig erneut gelesen werden. Langsames Schreiben wird durch schnelles Lesen und Konsistenz ausgeglichen.

Cache-Eintrag


Eine Alternative zum ersten Ansatz besteht darin, Daten in den Cache zu schreiben und einen Hinweis zu Datenänderungen für die anschließende Aktualisierung der Datenbank hinzuzufügen.



Mithilfe periodischer asynchroner Vorgänge können Sie aktualisierte Daten im Cache lesen und Änderungen an den entsprechenden Daten in der Datenbank vornehmen. Dieser Ansatz erhöht die Lese- / Schreiboperationen nicht. Der einzige Nachteil hierbei ist die Verzögerung bei der Synchronisation zwischen dem Cache und der Datenbank. Dies kann dazu führen, dass Anwendungen, die sich auf die Datenbank als Quelle der Wahrheit stützen, veraltete Daten lesen.

Youtube verwendet diesen Ansatz beispielsweise, um Informationen über die Anzahl der Aufrufe eines bestimmten Videos zu speichern. Das Aktualisieren der Datenbank für jede Ansicht des viralen Videos ist sehr teuer. Die beste Lösung besteht darin, Daten in den Cache zu schreiben und dann mit der Datenbank zu synchronisieren.

Cache-Bypass-Datensatz


Einige Serveranwendungen lesen die neuesten Daten nicht oft erneut. In diesem Fall wird ein Cache-Bypass-Eintrag verwendet.



Bei diesem Ansatz wird die Datenbank ohne Cache aktualisiert. Dadurch wird vermieden, dass nicht beanspruchte Daten in den Cache geladen werden. Wenn die Anwendung jedoch weiterhin die neuesten Daten anfordert, die sich nicht im Cache befinden, führt dies zum Laden dieser Daten aus der Datenbank mit allen sich daraus ergebenden Konsequenzen.

Beispiele für die Verwendung verteilter Caches


Liste der offenen Cache-Projekte:

  • Redis
  • Memcached
  • Voltdb
  • Aerospike dbs
  • Apache entzünden

Vielen Dank für Ihre Aufmerksamkeit.

All Articles