Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Daten-API-Generator unterstützt lange unterstützte Cache der Ebene 1 (L1) im Arbeitsspeicher und cachebezogene HTTP-Anforderungsheader wie no-store, no-cacheund only-if-cached um das Cacheverhalten zu beeinflussen.
Der Cache der Ebene 2 (L2) erweitert die Zwischenspeicherung über den lokalen Prozess hinaus, indem eine verteilte Cacheebene hinzugefügt wird. Mit L2, zwischengespeicherten Ergebnissen können in mehreren DAB-Instanzen wiederverwendet werden und einzelne Containerneustarts überleben, wodurch zustandslose Bereitstellungen auf alle richtigen Weise weniger zustandslos wirken.
Vorteile des Caches der Ebene 2
Verwenden Sie den Cache der Ebene 2, wenn Sie Folgendes ausführen möchten:
- Freigeben zwischengespeicherter Ergebnisse für skalierte DAB-Instanzen
- Reduzieren von Datenbank-Roundtrips für wiederholte Lesevorgänge
- Halten Sie zustandslose Container warm, nachdem sie wiederverwendet oder erneut bereitgestellt wurden.
- Verbessern der Leistung für Leselasten
- Teilnahme am Namespacecache mit Partitionen
Konfigurieren von Einstellungen für den Laufzeitcache
Der Cache der Ebene 2 ist global unter runtime.cache. Der Laufzeitcacheblock ermöglicht das Zwischenspeichern, legt die Standardzeit auf Live (TTL) fest und konfiguriert den verteilten Cacheanbieter.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Laufzeiteigenschaften
| Eigentum | Beschreibung |
|---|---|
enabled |
Aktiviert die Cacheunterstützung global. |
ttl-seconds |
Legt die Standardcachezeit in Sekunden fest. |
level-2.enabled |
Aktiviert die verteilte Cacheebene. |
level-2.provider |
Wählt den verteilten Cacheanbieter aus. Derzeit redis wird unterstützt. |
level-2.connection-string |
Verbindungszeichenfolge für die Redis-Instanz. |
level-2.partition |
Optionaler Namespace für Redis-Schlüssel und den Backplane-Kanal. Nur Container, die dieselbe Partition verwenden, verwenden denselben verteilten Cacheraum. |
Konfigurieren des entitätsspezifischen Cacheverhaltens
Entitäten können das globale Cacheverhalten außer Kraft setzen. Verwenden Sie den Entitätsblock cache , um das Zwischenspeichern zu aktivieren, einen benutzerdefinierten TTL festzulegen und die Cacheebene auszuwählen.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
Die cache.level-Eigenschaft.
Dient cache.level zum Steuern, welche Cacheebenen eine Entität verwendet.
| Wert | Beschreibung |
|---|---|
L1 |
Nur Im Arbeitsspeichercache. Schnell und lokal für den aktuellen DAB-Prozess. |
L1L2 |
Im Arbeitsspeicher plus verteilter Cache. Diese Ebene ist die Standardeinstellung für zwischengespeicherte Entitäten. |
Wenn L2 dies nicht global aktiviert ist, verhält sich eine Entität, die mit L1L2 dem Verhalten L1konfiguriert ist.
Funktionsweise von L1L2
Tipp
TL; DRL1L2 = Anforderung → L1 → L2 → Datenbank → L2 → L1 → Antwort
Standardmäßig verwendet eine Entität mit aktivierter Zwischenspeicherung ebene L1L2.
-
L1ist der speicherinterne Cache pro Prozess. -
L2ist die verteilte Cacheebene, derzeit Redis und ein Backplane für die instanzübergreifende Kohärenz.
Mit L1L2, eine Cache-Nachschlagevorgang zuerst überprüft L1. Bei einem L1 Fehler wird überprüft L2 , ob die Zwischenspeicherung der Ebene 2 global aktiviert und konfiguriert ist. Wenn der Eintrag in beiden Ebenen nicht gefunden wird, führt DAB die Datenbankabfrage aus. Das Ergebnis wird dann in beiden L1 und L2.
Dies bedeutet:
- Zukünftige Anforderungen für dieselbe Instanz werden von der lokalen Instanz bereitgestellt.
L1 - Anforderungen für andere Instanzen können auslesen
L2und den Eintrag in eigene Instanzen höher stufenL1 - Wenn ein Container neu gestartet wird, kann ein
L1Treffer, gefolgt von einemL2Treffer, trotzdem eine Datenbank roundtrip vermeiden.
Diese Kombination bietet Ihnen einen warm verteilten Cache über skalierte oder wiederverwendete Instanzen.
Redis-Unterstützung
Redis ist der aktuelle Anbieter für den Cache der Ebene 2. Es eignet sich gut für dieses Szenario, da es Folgendes unterstützt:
- Gemeinsam genutzter Zugriff über mehrere DAB-Instanzen hinweg
- Schlüsselablauf für TTL-basierte Zwischenspeicherung
- Schnelle Lese- und Schreibvorgänge für Workloads mit hohem Durchsatz
- Backplane-Koordination über Instanzen hinweg
Partitionierte Cacheplätze
Verwenden Sie die optionale partition Einstellung, um verteilte Cacheaktivitäten zu isolieren. DAB verwendet den Partitionswert für den Namespace Redis-Schlüssel und den Backplane-Kanal. Nur Container, die dieselbe Partition gemeinsam nutzen, nehmen am gleichen verteilten Cachespeicherplatz teil.
Diese Einstellung ist nützlich, wenn Sie:
- Trennen des Produktions- und Nichtproduktionsverkehrs
- Isolieren von Mandanten oder Umgebungen
- Verhindern, dass nicht verknüpfte Dienste zwischengespeicherte Einträge freigeben