Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Generatore API dati supportato a lungo livello 1 (L1) nella cache e intestazioni di richiesta HTTP correlate alla cache, ad esempio no-store, no-cachee only-if-cached per influenzare il comportamento della cache.
La cache di livello 2 (L2) estende la memorizzazione nella cache oltre il processo locale aggiungendo un livello di cache distribuita. Con L2, i risultati memorizzati nella cache possono essere riutilizzati in più istanze di DAB e possono sopravvivere ai singoli riavvii dei contenitori, in modo da rendere le distribuzioni senza stato meno in tutti i modi giusti.
Vantaggi della cache di livello 2
Usare la cache di livello 2 quando si vuole:
- Condividere i risultati memorizzati nella cache tra istanze di DAB con scalabilità orizzontale
- Ridurre i round trip del database per letture ripetute
- Mantenere i contenitori senza stato ad accesso frequente dopo il riciclo o la ridistribuitura
- Migliorare le prestazioni per carichi di lavoro con elevato utilizzo di lettura
- Partecipazione alla cache dello spazio dei nomi con partizioni
Configurare le impostazioni della cache di runtime
La cache di livello 2 è configurata a livello globale in runtime.cache. Il blocco cache di runtime abilita la memorizzazione nella cache, imposta la durata predefinita (TTL) e configura il provider di cache distribuita.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Proprietà di runtime
| Proprietà | Descrizione |
|---|---|
enabled |
Abilita il supporto della cache a livello globale. |
ttl-seconds |
Imposta la durata predefinita della cache in secondi. |
level-2.enabled |
Attiva il livello cache distribuita. |
level-2.provider |
Seleziona il provider di cache distribuita. Attualmente redis è supportato. |
level-2.connection-string |
Stringa di connessione per l'istanza di Redis. |
level-2.partition |
Spazio dei nomi facoltativo per le chiavi Redis e il canale backplane. Solo i contenitori che usano la stessa partizione condividono lo stesso spazio della cache distribuita. |
Configurare il comportamento della cache specifico dell'entità
Le entità possono eseguire l'override del comportamento della cache globale. Usare il blocco di entità cache per abilitare la memorizzazione nella cache, impostare un TTL personalizzato e scegliere il livello di cache.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
Proprietà cache.level
Usare cache.level per controllare i livelli di cache usati da un'entità.
| Valore | Descrizione |
|---|---|
L1 |
Solo cache in memoria. Veloce e locale per il processo DAB corrente. |
L1L2 |
In memoria più cache distribuita. Questo livello è l'impostazione predefinita per le entità memorizzate nella cache. |
Se L2 non è abilitato a livello globale, un'entità configurata con L1L2 si comporta come L1.
Funzionamento di L1L2
Suggerimento
TL; DRL1L2 = Request → L1 → L2 → database → L2 → L1 → Response
Per impostazione predefinita, un'entità con memorizzazione nella cache abilitata usa il livello L1L2.
-
L1è la cache in memoria per processo. -
L2è il livello cache distribuita, attualmente Redis, più un backplane per coerenza tra istanze.
Con L1L2, una ricerca nella cache controlla L1innanzitutto . In caso L1 di mancato appuntamento, verifica L2 se la memorizzazione nella cache di livello 2 è abilitata e configurata a livello globale. Se la voce non viene trovata in entrambi i livelli, DAB esegue la query di database. Il risultato viene quindi archiviato sia in che L2in L1 .
Ciò significa che:
- Le richieste future nella stessa istanza vengono gestite da locale
L1 - Le richieste su altre istanze possono leggere
L2e promuovere l'immissione nel proprioL1 - Se un contenitore viene riavviato, un
L1errore seguito da unL2hit può comunque evitare un round trip del database
Questa combinazione offre una cache distribuita ad accesso frequente tra istanze con scalabilità orizzontale o riciclata.
Compatibilità con Redis
Redis è il provider corrente per la cache di livello 2. È particolarmente adatto per questo scenario perché supporta:
- Accesso condiviso tra più istanze DAB
- Scadenza della chiave per la memorizzazione nella cache basata su TTL
- Letture e scritture veloci per carichi di lavoro con velocità effettiva elevata
- Coordinamento del backplane tra istanze
Spazi cache partizionati
Usare l'impostazione facoltativa partition per isolare l'attività della cache distribuita. DAB usa il valore della partizione per le chiavi Redis dello spazio dei nomi e il canale backplane. Solo i contenitori che condividono la stessa partizione partecipano allo stesso spazio della cache distribuita.
Questa impostazione è utile quando si vuole:
- Separare il traffico di produzione e non di produzione
- Isolare tenant o ambienti
- Impedire ai servizi non correlati di condividere voci memorizzate nella cache