Bedeutung des Zwischenspeicherns
Durch das Zwischenspeichern werden wiederverwendbare Kopien häufig verwendeter Daten im Arbeitsspeicher gespeichert, sodass Anwendungen wiederholte Datenbankaufrufe vermeiden und Ergebnisse schneller zurückgeben.
Durch das Zwischenspeichern werden wiederverwendbare Kopien häufig verwendeter Daten im Arbeitsspeicher gespeichert, sodass Anwendungen wiederholte Datenbankaufrufe vermeiden und Ergebnisse schneller zurückgeben.
Beim Zwischenspeichern werden Key-Value-Daten im temporären Speicher (z. B. in einer nichtrelationalen strukturierten Abfragesprache NoSQL-Datenbank) gespeichert, damit Anwendungen schneller darauf zugreifen können als aus herkömmlichem Speicher. In Cloudspeicher-Architekturen, in denen Anforderungen oft über Netzwerke laufen und gemeinsam genutzte Dienste berühren, kann Zwischenspeichern helfen, die Antwortzeiten niedrig zu halten und wiederholte Arbeit zu reduzieren.
Die meisten Systeme behalten eine dauerhafte „Quelle der Wahrheit“ (eine Datenbank) für vollständige Datasets und behalten dann einen Cache für vorübergehende Teilmengen bei, die häufig gelesen werden. Wenn eine Anfrage eingeht, überprüft die App zuerst den Cache. wenn die Daten vorhanden sind, werden sie schnell zurückgegeben, ohne das Back-End erneut abzufragen. Entwickelnde können auch verarbeitete Daten zwischenspeichern und wiederverwenden, um Anforderungen schneller zu verarbeiten als Standardabfragen für relationale Datenbanken, SQL-Datenbanken oder Open-Source-PostgreSQL-Datenbanken..
Gute Kandidaten sind wiederholt gelesene Daten und Daten, die sich selten ändern (z. B. Produkt- und Preisinformationen oder freigegebene statische Ressourcen, die teuer zu erstellen sind).
Wenn ein Vorgang Daten transformiert oder eine komplizierte Berechnung durchführt, kann das Zwischenspeichern des Ergebnisses eine Neuberechnung für nachfolgende Anforderungen vermeiden.
Entwickler verwenden mehrschichtige Caches („Cacheebenen“), um verschiedene Daten je nach Bedarf in separaten Caches zu speichern. Das Hinzufügen einer oder mehrerer Cacheebenen kann den Durchsatz und die Latenz in einer Datenschicht verbessern.
In-Memory-Speicher werden häufig verwendet, um große Mengen von Sitzungsdaten wie Benutzereingaben, Einkaufswageneinträge oder Personalisierungseinstellungen für kurze Zeiträume zu speichern. Bei zustandsbehafteten Apps speichern Teams auch den Sitzungszustand im Cache, damit die App zustandslos sein kann.
Das Zwischenspeichern kann die Leistung auf einige konkrete Weise verbessern:
In vielen Clouddesigns befindet sich ein Cache neben einem primären Datenspeicher (z. B. einer Datenbank). Der primäre Speicher hält den vollständigen, dauerhaften Datensatz auf dem Cloudserver, während der Cache eine kleinere, temporäre Teilmenge speichert, die schneller gelesen werden kann.
Ein gängiges Setup ist eine eigenständige Cacheebene oder ein Cache, der sich innerhalb der App- oder Datenbankebene befindet und basierend darauf ausgewählt wird, wo Sie schnelle Lesevorgänge benötigen.
Einige Systeme verwenden mehrstufiges Zwischenspeichern(„Cache-Ebenen“), damit verschiedene Datenarten je nach Bedarf in unterschiedlichen Caches liegen. Das Hinzufügen einer oder mehrerer Cache-Ebenen kann Durchsatz und Latenz für die Datenebene verbessern und die Gesamtkosten senken, indem die Back-End-Last verringert wird.
Teams cachen normalerweise Daten, die in einige wenige Gruppen fallen:
Es gibt mehrere Standardmethoden, wie Apps aus einem Cache lesen und in einen Cache schreiben. Hier sind die gängigsten Muster und ihre Bedeutung in der Praxis aufgeführt.
Die Verwendung von Cacheebenen kann den Durchsatz und die Latenz verbessern, indem allgemeine Anforderungen aus dem Cache verarbeitet werden, anstatt den Back-End-Speicher wiederholt abzufragen. Dies kann die Notwendigkeit verringern, die Datenbankinfrastruktur zu skalieren, da weniger Anfragen die Datenbank überhaupt erreichen.
Bei Apps mit Lastspitzen können In-Memory-Caches helfen, die Latenz zu verringern, indem häufig angeforderte Daten dort bereitgehalten werden, wo sie verwendet werden.
Verwenden Sie diese Hinweise als Ausgangspunkt bei der Wahl eines Workflows:
Das Zwischenspeichern verbessert die Anwendungsleistung, da das Lesen aus einem In-Memory-Cache schneller ist als das Lesen aus einem datenträgergesteuerten Datenspeicher. Wenn mehr Anfragen aus dem Cache verarbeitet werden, senden Systeme weniger Abfragen an Back-End-Datenbanken, wodurch die Notwendigkeit der Skalierung der Datenbankinfrastruktur und die damit verbundenen Kosten reduziert werden können.
Das Zwischenspeichern hilft dabei, wiederholte Arbeit zu reduzieren. Daten, die wiederholt gelesen werden – oder deren Erstellung kostspielig ist – können einmal gespeichert und wiederverwendet werden. Wenn ein Vorgang eine komplizierte Berechnung durchführt oder Daten transformiert, reduziert das Zwischenspeichern des Ergebnisses die wiederholte Berechnung für nachfolgende Anforderungen.
Bei vielen Websites werden Seitenausgaben (z. B. HTML- und Clientskripts) zwischengespeichert, sodass der Server die zwischengespeicherte Ausgabe zurückgeben kann, anstatt den Seitencode jedes Mal erneut auszuführen. Das Zwischenspeichern unterstützt auch Web multimediale Szenarien durch Webcaches und Netzwerkzwischenspeicherung, z. B. Content Delivery Networks (CDNs).
Apps speichern häufig vorübergehende Teilmengen von Daten in einem Cache für den schnellen Abruf, während die primäre Datenbank das vollständige dauerhafte Dataset beibehält. Das Zwischenspeichern verarbeiteter Daten und deren Wiederverwendung kann Anforderungen schneller verarbeiten als Standarddatenbankabfragen.
Teams fügen häufig eine oder mehrere Cacheebenen hinzu, um den Durchsatz und die Latenz zu verbessern, allgemeine Abfragen aus dem Cache zu verarbeiten und die Datenbanklast zu reduzieren. In-Memory-Caches können hilfreich sein, wenn Nutzungsspitzen und Durchsatzbedarf steigen, wodurch die Latenz in diesen Zeiträumen entschärfe wird.
Das Zwischenspeichern wird häufig verwendet, um große Mengen von kurzlebigen Sitzungsdaten (z. B. Benutzereingaben oder Personalisierungseinstellungen) in einem Speicher im Arbeitsspeicher zu speichern. Einige Teams speichern den Sitzungszustand auch im Cache, damit zustandsbehaftete Apps die App-Ebene zustandslos halten können. Für Betriebssysteme sind Daten, die sich nur selten ändern, z. B. Produkt- und Preisinformationen, ein gängiges Zwischenspeicherziel.
Ein Browsercache speichert Kopien statischer Ressourcen auf dem Gerät eines Benutzers, sodass wiederholte Besuche diese Dateien wiederverwenden können, anstatt sie erneut herunterzuladen.
Die serverseitige Zwischenspeicherung erfolgt in den Prozessen, die Geschäftsdienste remote ausführen, und nicht auf dem Gerät des Endbenutzers. Serverseitige Caches sind häufig entweder privat (lokal für eine App-Instanz) oder freigegeben (von vielen App-Instanzen verwendet).
Ein CDN speichert Inhalte auf Edgeservern zwischen, die sich näher an den Endbenutzern befinden, sodass Anforderungen nicht immer zurück an den Ursprung gesendet werden. Im Gegensatz zu einem Browsercache (ein Benutzer) wird ein CDN-Cache freigegeben. Die Anforderung eines Benutzers kann Inhalte auffüllen, die ein anderer Benutzer später empfängt.
Caching ist nicht nur ein Cloud Computing-Muster, sondern wird auch in Hardware- und Speicherebenen verwendet.
Der CPU-Cache ist ein kleiner, schneller Speicherbereich in der Nähe (oder auf dem Prozessor), in dem Kopien häufig verwendeter Daten und Anweisungen gespeichert werden, um den Zeitaufwand für das Warten auf den Hauptspeicher zu reduzieren.
Speicher-(In-Memory-)Cache ist der einfachste Typ eines Softwarecaches: ein In-Memory-Speicher im Adressraum eines einzelnen Prozesses, auf den dieser Prozess direkt zugreift.
Ein verteilter Cache erstreckt sich über mehrere Server, sodass der Cache wachsen kann und die Transaktionskapazität über einen Computer hinausgeht. Viele freigegebene Cachedienste verwenden einen Servercluster und verteilen zwischengespeicherte Daten über den Cluster. Das Skalieren des Caches kann so einfach wie das Hinzufügen weiterer Server sein. Einige verteilte Designs schichten Caches auch. Bei einem Fehler in einer Ebene wird aus einem vorgelagerten Anbieter geladen und das Ergebnis anschließend lokal für die nächste Anforderung gespeichert.
Beim Zwischenspeichern werden häufig verwendete Daten näher an dem Ort gespeichert, an dem sie verwendet werden. Dies kann die Antwortzeiten verbessern und einem System helfen, mehr gleichzeitige Anforderungen zu verarbeiten. Außerdem kann es die Konkurrenz um Ressourcen im ursprünglichen Datenspeicher verringern, etwa wenn eine Datenbank nur über begrenzte Verbindungen verfügt.
In verteilten Anwendungen erfolgt das Zwischenspeichern häufig an mehreren Stellen – clientseitig (z. B. in einem Browser) und serverseitig (in einer Anwendung oder einem freigegebenen Cachedienst).
Fangen Sie klein an und konzentrieren Sie sich auf die Daten, die den klarsten Nutzen bringen:
Ein Cache enthält normalerweise Kopien von Daten aus einem primären Datenspeicher. Deshalb ist die Aktualität wichtig:
Caching ist ein zentraler Baustein für moderne Systeme, weil es zu vielen Architekturen passt – von einzelnen Diensten bis hin zu verteilten Apps und Edge-Bereitstellung. Für einen verwalteten In-Memory-Cache Cloudanbieter können Sie Azure näher kennenlernen.