Funcionamiento de la caché

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En este tema se describe el funcionamiento de la caché de las políticas, como la política PopulateCache, la política LookupCache, la política InvalidateCache y la política ResponseCache.

Acerca de las cachés

Cuando se ejecuta una política de almacenamiento en caché, se crea una caché de nivel 1 de corta duración. Si no se accede a un elemento almacenado en caché en un segundo, se conserva en una base de datos donde está disponible para todos los procesadores de mensajes implementados en un entorno hasta que caduca la caché. El tiempo de caducidad se configura directamente en la política de caché.

Niveles de caché persistente y en memoria

Tanto la caché compartida como la de entorno se basan en un sistema de dos niveles formado por un nivel en memoria y un nivel persistente, como se muestra en la siguiente figura. Las políticas interactúan con ambos niveles como un marco combinado. Apigee gestiona la relación entre los niveles.

Las políticas de almacenamiento en caché interactúan con los procesadores de mensajes de nivel 1, que interactúan con el almacenamiento persistente de nivel 2.
  • El nivel 1 es una caché en memoria (L1) para acceder rápidamente. Cada nodo de procesamiento de mensajes (MP) tiene su propia caché en memoria para responder a las solicitudes lo más rápido posible.
    • L1 es una caché en memoria de corta duración (1 segundo).
    • Cuando se alcanza el límite de memoria, Apigee elimina las entradas de caché de la memoria (aunque se conservan en la caché persistente de nivel 2) para asegurarse de que la memoria siga estando disponible para otros procesos.
    • L1 cuenta con una caché de un segundo de duración para realizar búsquedas más rápidas de solicitudes simultáneas con la misma clave de caché.
  • El nivel 2 es una caché persistente (L2) que se encuentra debajo de la caché en memoria. Todos los nodos de procesamiento de mensajes comparten un almacén de datos de caché (Cassandra) para conservar las entradas de caché.
    • Las entradas de la caché permanecen aquí incluso después de que se hayan eliminado de la caché de nivel 1, por ejemplo, cuando se alcanzan los límites de memoria.
    • Como la caché persistente se comparte entre los procesadores de mensajes (incluso en regiones diferentes), las entradas de caché están disponibles independientemente del nodo que reciba una solicitud de los datos almacenados en caché.
    • Solo se pueden almacenar en caché las entradas de un tamaño determinado y se aplican otros límites de caché. Consulta Gestionar los límites de la caché.
    • El contenido de la caché de nivel 2 se cifra con el algoritmo AES-256. Los datos se descifran antes de que el tiempo de ejecución los utilice y se cifran antes de escribirse en la caché de nivel 2. Por lo tanto, el proceso de cifrado es invisible para los usuarios.

Cómo usan las políticas la caché

A continuación se describe cómo gestiona Apigee las entradas de caché a medida que las políticas de almacenamiento en caché hacen su trabajo.

  • Cuando una política escribe una nueva entrada en la caché (política PopulateCache o ResponseCache):
    1. Apigee escribe la entrada en la caché L1 en memoria solo en el procesador de mensajes que ha gestionado la solicitud. Si se alcanzan los límites de memoria del procesador de mensajes antes de que caduque la entrada, Apigee eliminará la entrada de la caché de nivel 1.
    2. Apigee también escribe la entrada en la caché de nivel 2.
  • Cuando una política lee de la caché (política LookupCache o ResponseCache):
    1. Apigee busca primero la entrada en la caché L1 en memoria del procesador de mensajes que gestiona la solicitud.
    2. Si no hay ninguna entrada en memoria correspondiente, Apigee busca la entrada en la caché persistente de nivel 2.
    3. Si la entrada no está en la caché persistente:
  • Cuando una política actualiza o invalida una entrada de caché (política InvalidateCache, política PopulateCache o política ResponseCache):
    1. El procesador de mensajes que recibe la solicitud elimina la entrada de la caché L1 en memoria de un segundo y también la elimina de la caché L2.
    2. Después de una actualización o invalidación, es posible que los demás procesadores de mensajes sigan conservando la caché de nivel 1 en la memoria.
    3. Como L1 está configurada para caducar en un segundo, no es necesario ningún evento de eliminación o actualización para quitar la entrada de L1.

Gestionar los límites de la caché

Mediante la configuración, puede gestionar algunos aspectos de la caché. El espacio total disponible para la caché en memoria está limitado por los recursos del sistema y no se puede configurar. Se aplican las siguientes restricciones a la caché:

  • Límites de la caché: se aplican varios límites de la caché , como el tamaño del nombre y del valor, el número total de cachés, el número de elementos de una caché y la caducidad.
  • Caché en memoria (L1). Los límites de memoria de tu caché no se pueden configurar. Apigee establece límites para cada procesador de mensajes que aloja cachés de varios clientes.

    En un entorno de nube alojado, donde las cachés en memoria de todas las implementaciones de los clientes se alojan en varios procesadores de mensajes compartidos, cada procesador incluye un umbral de porcentaje de memoria configurable por Apigee para asegurarse de que el almacenamiento en caché no consuma toda la memoria de la aplicación. Cuando se supera el umbral de un procesador de mensajes determinado, las entradas de la caché se eliminan de la memoria según el criterio de uso menos reciente. Las entradas expulsadas de la memoria permanecen en la caché de nivel 2 hasta que caducan o se invalidan.

  • Caché persistente (L2). Las entradas expulsadas de la caché en memoria permanecen en la caché persistente según los ajustes de tiempo de vida configurables.

Optimizaciones configurables

En la siguiente tabla se indican los ajustes que puede usar para optimizar el rendimiento de la caché.

Ajuste Descripción Notas
Caducidad Especifica el tiempo de vida de las entradas de la caché. Ninguno