Processi interni della cache

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questo argomento descrive il funzionamento della cache sotto i criteri come PopulateCache, LookupCache, InvalidateCache e ResponseCache.

Informazioni sulle cache

Quando viene eseguito un criterio 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 mantenuto in un database dove è disponibile per tutti gli elaboratori di messaggi di cui è stato eseguito il deployment in un ambiente fino alla scadenza della cache. La scadenza viene configurata direttamente nel criterio della cache.

Livelli di cache in memoria e persistenti

Sia le cache condivise sia quelle dell'ambiente sono basate su un sistema a due livelli costituito da un livello in memoria e da un livello permanente, come mostrato nella figura seguente. I criteri interagiscono con entrambi i livelli come framework combinato. Apigee gestisce la relazione tra i livelli.

I criteri di memorizzazione nella cache interagiscono con gli elaboratori di messaggi di Livello 1, che interagiscono con lo spazio di archiviazione permanente di Livello 2
  • 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 una risposta più rapida 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 rimangono nella cache L2 persistente) per garantire che la memoria rimanga disponibile per altri processi.
    • L1 è dotato di una cache di un secondo di breve durata per eseguire ricerche più rapide per richieste concorrenti con la stessa chiave della cache.
  • Il livello 2 è una cache permanente (L2) sotto la cache in memoria. Tutti i nodi di elaborazione dei messaggi condividono un datastore della cache (Cassandra) per la persistenza delle voci della cache.
    • Le voci della cache rimangono 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.
    • È possibile memorizzare nella cache solo voci di una determinata dimensione e si applicano altri limiti alla cache. Vedi Gestire i limiti della cache.
    • I contenuti della cache in L2 sono criptati con l'algoritmo AES-256. I dati vengono decriptati prima di essere utilizzati dal runtime e vengono criptati prima di essere scritti in L2. Pertanto, il processo di crittografia è invisibile agli utenti.

Come i criteri utilizzano la cache

Di seguito viene descritto in che modo Apigee gestisce le voci della cache quando i tuoi criteri di memorizzazione nella cache svolgono il loro compito.

  • Quando un criterio scrive una nuova voce nella cache (norma PopulateCache o ResponseCache):
    1. Apigee scrive la voce nella cache L1 in memoria solo nell'elaboratore dei messaggi che ha gestito la richiesta. Se i limiti di memoria del processore dei messaggi vengono raggiunti prima della scadenza della voce, Apigee rimuove la voce dalla cache L1.
    2. Apigee scrive anche la voce nella cache L2.
  • Quando un criterio legge dalla cache (criterio LookupCache o ResponseCache):
    1. Apigee cerca prima la voce nella cache L1 in memoria dell'elaboratore dei messaggi che gestisce la richiesta.
    2. Se non esiste una voce in memoria corrispondente, Apigee la cerca nella cache permanente L2.
    3. Se la voce non è nella cache permanente:
      • Criterio LookupCache: nessun valore viene recuperato dalla cache.
      • Criterio ResponseCache: Apigee restituisce la risposta effettiva dal target al client e memorizza la voce in cache fino alla scadenza o all'invalidazione.
  • Quando una norma aggiorna o rende non valida una voce della cache esistente (norma InvalidateCache, norma PopulateCache o norma ResponseCache):
    1. L'elaboratore dei messaggi che riceve la richiesta elimina la voce dalla cache L1 in-memory di un secondo e anche dalla cache L2.
    2. Dopo un aggiornamento o l'invalidazione, è possibile che gli altri elaboratori dei messaggi trattengano ancora la cache L1 in memoria.
    3. Poiché L1 è configurato per scadere in un secondo, non è necessario un 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 complessivo disponibile per la cache in memoria è limitato dalle risorse di sistema e non è configurabile. Alla cache si applicano i seguenti vincoli:

  • Limiti della cache: vengono applicati diversi limiti della cache, ad esempio le dimensioni del nome e del valore, il numero totale di cache, il numero di elementi in una cache e la scadenza.
  • Cache in memoria (L1). I limiti di memoria per la cache non sono configurabili. I limiti vengono impostati da Apigee per ogni elaboratore di messaggi che ospita cache per più clienti.

    In un ambiente cloud ospitato, in cui le cache in-memory per tutti gli implementazioni dei clienti sono ospitate su più processori di messaggi condivisi, ogni processore dispone di una soglia 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 elaboratore di messaggi, le voci della cache vengono espulse dalla memoria in base all'utilizzo meno recente. Le voci espulse dalla memoria rimangono nella cache L2 fino alla scadenza o all'invalidazione.

  • Cache permanente (L2). Le voci espulse dalla cache in memoria rimangono nella cache permanente in base alle impostazioni di TTL (Time-To-Live) 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 (TTL) delle voci della cache. Nessuno