Processi interni della cache

Questa pagina si applica a Apigee e Apigee ibrido.

Visualizza la documentazione di Apigee Edge.

Questo argomento descrive il funzionamento della cache al di sotto di criteri come il criterio compileCache, il criterio LookupCache, il criterio InvalidateCache e il criterio 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 si accede a un elemento memorizzato nella cache, questo viene mantenuto in un database in cui è disponibile per tutti i processori di messaggi di cui è stato eseguito il deployment in un ambiente fino alla scadenza della cache. La configurazione della scadenza viene configurata direttamente nel criterio della cache.

Livelli di cache in memoria e permanente

Sia la cache condivisa che quella in ambiente sono basate su un sistema a due livelli composto da un livello in memoria e uno 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 i processori di messaggi di livello 1 che interagiscono con l'archiviazione permanente
            di livello 2
  • Il livello 1 è una cache in memoria (L1) per un accesso rapido. Ogni nodo di elaborazione dei messaggi (MP) dispone di una propria cache in memoria per garantire la risposta più rapida alle richieste.
    • L1 è una cache in memoria di breve durata (1 secondo).
    • Al raggiungimento del limite di memoria, Apigee rimuove le voci della cache dalla memoria (sebbene vengano ancora conservate nella cache permanente L2) per garantire che la memoria rimanga disponibile per altri processi.
    • L1 dispone di una cache di un secondo di breve durata per eseguire ricerche più veloci per richieste in parallelo con la stessa chiave 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 le voci della cache persistenti.
    • 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 permanente è condivisa tra i processori dei 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 certa dimensione possono essere memorizzate nella cache e si applicano altri limiti di cache. Vedi Gestione dei limiti della cache.
    • Nella versione L2, il contenuto della cache è criptato con l'algoritmo AES-256. I dati vengono decriptati prima di essere utilizzati dal runtime e vengono criptati prima di essere scritti in L2. per cui il processo di crittografia è invisibile agli utenti.

Utilizzo della cache da parte dei criteri

Di seguito viene descritto in che modo Apigee gestisce le voci della cache man mano che i criteri di memorizzazione nella cache funzionano.

  • Quando un criterio scrive una nuova voce nella cache (criterio compileCache o ResponseCache):
    1. Apigee scrive la voce nella cache L1 in memoria solo sul processore di messaggi che ha gestito la richiesta. Se i limiti di memoria nel processore di 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 per prima la voce nella cache L1 in memoria del processore di messaggi che gestisce la richiesta.
    2. Se non esiste una voce in memoria corrispondente, Apigee cerca la voce nella cache permanente L2.
    3. Se la voce non si trova nella cache permanente:
      • Criterio LookupCache: non viene recuperato nessun valore dalla cache.
      • Criterio diResponseCache: Apigee restituisce la risposta effettiva dalla destinazione al client e archivia la voce nella cache fino a quando non scade o viene invalidata.
  • Quando un criterio aggiorna o non è valido una voce della cache esistente (criterio InvalidateCache, criterio compileCache o criterioResponseCache):
    1. Il processore di messaggi che riceve la richiesta elimina la voce dalla cache L1 in memoria di un secondo e la voce anche dalla cache L2.
    2. Dopo un aggiornamento o un'annullamento della convalida, è possibile che gli altri processori dei messaggi mantengano ancora la cache L1 in memoria.
    3. Poiché L1 è configurato per scadere tra un secondo, non è necessario un evento di eliminazione/aggiornamento per rimuovere la voce da L1.

Gestione dei limiti di 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: si applicano vari limiti di cache, tra cui le dimensioni di nomi e valori, 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 processore di messaggi che ospita cache per più clienti.

    In un ambiente cloud ospitato, in cui le cache in memoria per tutti i deployment dei clienti sono ospitate su più processori di messaggi condivisi, ogni processore dispone di una soglia percentuale di memoria configurabile con Apigee per garantire che la memorizzazione nella cache non consumi tutta la memoria dell'applicazione. Quando la soglia viene superata per un determinato processore di messaggi, le voci della cache vengono rimosse dalla memoria nelle modalità meno recenti. Le voci rimosse dalla memoria rimangono nella cache L2 fino alla scadenza o alla convalida.

  • Cache permanente (L2). Le voci rimosse dalla cache in memoria rimangono nella cache permanente in base alle impostazioni di durata configurabile.

Ottimizzazioni configurabili

La tabella seguente elenca le impostazioni che puoi utilizzare per ottimizzare le prestazioni della cache.

Impostazione Descrizione Note
Scadenza Specifica la durata delle voci della cache. Nessuna