Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Data API Builder heeft lang ondersteund niveau 1 (L1) in-memory cache en cachegerelateerde HTTP-aanvraagheaders zoals no-store, no-cacheen only-if-cached om het cachegedrag te beïnvloeden.
Cache op niveau 2 (L2) breidt caching uit buiten het lokale proces door een gedistribueerde cachelaag toe te voegen. Met L2, in de cache opgeslagen resultaten kunnen opnieuw worden gebruikt in meerdere DAB-exemplaren en kunnen afzonderlijke containerherstarts overleven, waardoor stateless implementaties op de juiste manieren minder stateless voelen.
Voordelen van cache op niveau 2
Gebruik de cache op niveau 2 als u het volgende wilt doen:
- Resultaten in cache delen in uitgeschaalde DAB-exemplaren
- Retouren van databases verminderen voor herhaalde leesbewerkingen
- Staatloze containers warm houden na recyclen of opnieuw implementeren
- Prestaties verbeteren voor leesintensieve werkbelastingen
- Deelname van naamruimtecache aan partities
Instellingen voor runtimecache configureren
De cache op niveau 2 wordt globaal geconfigureerd onder runtime.cache. Met het cacheblok voor runtime kunt u opslaan in cache, de standaard time to live (TTL) instellen en de gedistribueerde-cacheprovider configureren.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Runtime-eigenschappen
| Vastgoed | Beschrijving |
|---|---|
enabled |
Hiermee schakelt u ondersteuning voor cache wereldwijd in. |
ttl-seconds |
Hiermee stelt u de standaardcache time-to-live in seconden in. |
level-2.enabled |
Hiermee schakelt u de gedistribueerde cachelaag in. |
level-2.provider |
Selecteert de gedistribueerde cacheprovider. Momenteel redis wordt dit ondersteund. |
level-2.connection-string |
Verbindingsreeks voor het Redis-exemplaar. |
level-2.partition |
Optionele naamruimte voor Redis-sleutels en het backplane-kanaal. Alleen containers die dezelfde partitie gebruiken, delen dezelfde gedistribueerde cacheruimte. |
Gedrag van entiteitsspecifieke cache configureren
Entiteiten kunnen het gedrag van de globale cache overschrijven. Gebruik het entiteitsblok cache om caching in te schakelen, een aangepaste TTL in te stellen en het cacheniveau te kiezen.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
De eigenschap cache.level
Gebruik cache.level dit om te bepalen welke cachelagen een entiteit gebruikt.
| Waarde | Beschrijving |
|---|---|
L1 |
Alleen cache in het geheugen. Snel en lokaal naar het huidige DAB-proces. |
L1L2 |
In-memory plus gedistribueerde cache. Dit niveau is de standaardinstelling voor entiteiten in de cache. |
Als L2 deze niet globaal is ingeschakeld, gedraagt een entiteit die is geconfigureerd als L1L2L1.
Hoe L1L2 werkt
Aanbeveling
TL; DRL1L2 = Request → L1 → L2 → database → L2 → L1 → Response
Een entiteit waarvoor caching is ingeschakeld, maakt standaard gebruik van niveau L1L2.
-
L1is de cache per proces in het geheugen. -
L2is de gedistribueerde cachelaag, momenteel Redis, plus een backplane voor coherentie tussen exemplaren.
Met L1L2 controleert een cachelookup eerst L1. Bij een L1 miss wordt gecontroleerd L2 of caching op niveau 2 globaal is ingeschakeld en geconfigureerd. Als de vermelding niet in een van beide lagen wordt gevonden, voert DAB de databasequery uit. Het resultaat wordt vervolgens opgeslagen in zowel L1 als L2.
Dat betekent:
- Toekomstige aanvragen op hetzelfde exemplaar worden uitgevoerd vanuit het lokale
L1 - Aanvragen op andere exemplaren kunnen de vermelding in hun eigen exemplaar lezen
L2en promoverenL1 - Als een container opnieuw wordt opgestart, kan een
L1miss gevolgd door eenL2hit nog steeds een retour van een database voorkomen
Deze combinatie biedt u een warme gedistribueerde cache over uitgeschaalde of gerecyclede exemplaren.
Ondersteuning voor Redis
Redis is de huidige provider voor cache op niveau 2. Het is geschikt voor dit scenario, omdat het ondersteuning biedt voor:
- Gedeelde toegang tussen meerdere DAB-exemplaren
- Sleutelverlooptijd voor opslaan in cache op basis van TTL
- Snelle lees- en schrijfbewerkingen voor workloads met hoge doorvoer
- Backplane-coördinatie tussen instanties
Gepartitioneerde cacheruimten
Gebruik de optionele partition instelling om gedistribueerde cacheactiviteit te isoleren. DAB gebruikt de partitiewaarde voor naamruimte Redis-sleutels en het backplane-kanaal. Alleen containers die dezelfde partitie delen, nemen deel aan dezelfde gedistribueerde cacheruimte.
Deze instelling is handig als u het volgende wilt doen:
- Productie- en niet-productieverkeer scheiden
- Tenants of omgevingen isoleren
- Voorkomen dat niet-gerelateerde services items in de cache delen