Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questo argomento descrive il funzionamento della cache alla base di criteri come PopulateCache, LookupCache, InvalidateCache e ResponseCache.
Informazioni sulle cache
Quando viene eseguita una policy di memorizzazione nella cache, viene creata una cache L1 di breve durata. Dopo un secondo, se non viene eseguito l'accesso a un elemento memorizzato nella cache, questo viene reso persistente in un database dove è disponibile per tutti i processori di messaggi distribuiti in un ambiente fino alla scadenza della cache. Configura il tempo di scadenza direttamente nella policy della cache.
Livelli di cache in memoria e persistente
Entrambe le cache condivise e dell'ambiente sono basate su un sistema a due livelli costituito da un livello in memoria e da un livello persistente, come mostrato nella figura seguente. I criteri interagiscono con entrambi i livelli come un framework combinato. Apigee gestisce la relazione tra i livelli.
- Il livello 1 è una cache in memoria (L1) per un accesso rapido. Ogni nodo di elaborazione dei messaggi (MP)
ha una propria cache in memoria per rispondere più rapidamente alle richieste.
- L1 è una cache in memoria di breve durata (1 secondo).
- Quando viene raggiunto il limite di memoria, Apigee rimuove le voci della cache dalla memoria (anche se vengono comunque conservate nella cache persistente di livello 2) per garantire che la memoria rimanga disponibile per altri processi.
- L1 viene fornito con una cache di un secondo di breve durata per eseguire ricerche più rapide per richieste simultanee con la stessa chiave di cache.
- Il livello 2 è una cache persistente (L2) sotto la cache in memoria. Tutti i nodi di elaborazione dei messaggi
condividono un datastore della cache (Cassandra) per rendere persistenti le voci della cache.
- Le voci della cache vengono mantenute qui anche dopo essere state rimosse dalla cache L1, ad esempio quando vengono raggiunti i limiti in memoria.
- Poiché la cache persistente è condivisa tra i processori di messaggi (anche in regioni diverse), le voci della cache sono disponibili indipendentemente dal nodo che riceve una richiesta per i dati memorizzati nella cache.
- Solo le voci di una determinata dimensione possono essere memorizzate nella cache e si applicano altri limiti della cache. Vedi Gestire i limiti della cache.
- I contenuti della cache di livello 2 sono criptati con l'algoritmo AES-256. I dati vengono decriptati prima di essere utilizzati dal runtime e vengono criptati prima di essere scritti nel livello 2. Pertanto, il processo di crittografia è invisibile agli utenti.
Come le norme utilizzano la cache
Di seguito viene descritto il modo in cui Apigee gestisce le voci della cache man mano che le tue norme di memorizzazione nella cache svolgono il loro lavoro.
- Quando una norma scrive una nuova voce nella cache (norma PopulateCache o
ResponseCache):
- Apigee scrive la voce nella cache L1 in memoria solo sul processore di messaggi che ha gestito la richiesta. Se i limiti di memoria del processore di messaggi vengono raggiunti prima della scadenza della voce, Apigee rimuove la voce dalla cache L1.
- Apigee scrive anche la voce nella cache L2.
- Quando una policy legge dalla cache (policy LookupCache o ResponseCache):
- Apigee cerca prima la voce nella cache L1 in memoria del processore di messaggi che gestisce la richiesta.
- Se non è presente alcuna voce corrispondente in memoria, Apigee cerca la voce nella cache persistente L2.
- Se la voce non è nella cache permanente:
- Criterio LookupCache: nessun valore viene recuperato dalla cache.
- Policy ResponseCache: Apigee restituisce la risposta effettiva dalla destinazione al client e memorizza la voce nella cache fino alla scadenza o all'invalidazione.
- Quando una norma aggiorna o invalida una voce della cache esistente (norma InvalidateCache, PopulateCache o ResponseCache):
- Il processore di messaggi che riceve la richiesta elimina la voce dalla cache L1 in memoria di un secondo ed elimina anche la voce dalla cache L2.
- Dopo un aggiornamento o un'invalidazione, è possibile che gli altri processori di messaggi mantengano ancora la cache L1 in memoria.
- Poiché L1 è configurato per scadere in un secondo, non è necessario alcun evento di eliminazione/aggiornamento per rimuovere la voce da L1.
Gestione dei limiti della cache
Tramite la configurazione, puoi gestire alcuni aspetti della cache. Lo spazio totale disponibile per la cache in memoria è limitato dalle risorse di sistema e non è configurabile. Si applicano i seguenti vincoli alla cache:
- Limiti della cache: si applicano vari limiti della cache, ad esempio dimensioni del nome e del valore, numero totale di cache, numero di elementi in una cache ed scadenza.
-
Cache in memoria (L1). I limiti di memoria per la cache non sono configurabili. I limiti sono
impostati da Apigee per ogni processore di messaggi che ospita cache per più clienti.
In un ambiente cloud ospitato, in cui le cache in memoria per tutte le implementazioni dei clienti sono ospitate in più processori di messaggi condivisi, ogni processore dispone di una soglia di percentuale di memoria configurabile da Apigee per garantire che la memorizzazione nella cache non consumi tutta la memoria dell'applicazione. Quando viene superata la soglia per un determinato processore di messaggi, le voci della cache vengono eliminate dalla memoria in base al criterio di utilizzo meno recente. Le voci rimosse dalla memoria rimangono nella cache L2 finché non scadono o vengono invalidate.
- Cache persistente (L2). Le voci rimosse dalla cache in memoria rimangono nella cache permanente in base alle impostazioni di durata configurabili.
Ottimizzazioni configurabili
La seguente tabella elenca le impostazioni che puoi utilizzare per ottimizzare le prestazioni della cache.
Impostazione | Descrizione | Note |
---|---|---|
Scadenza | Specifica la durata delle voci della cache. | Nessuno |