Objetos internos 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é debajo 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 memorias en caché

Cuando se ejecuta una política de almacenamiento en caché, se crea una caché L1 de corta duración. Después de un segundo, si no se accede a un elemento almacenado en caché, se conserva en una base de datos en la que está disponible para todos los procesadores de mensajes implementados en un entorno hasta que vence la caché. Debes configurar el plazo de vencimiento directamente en la política de caché.

Niveles de caché persistente y en memoria

Los almacenamientos en caché y de entorno se basan en un sistema de dos niveles compuesto por un nivel de memoria y un nivel persistente, como se muestra en la siguiente figura. Las políticas interactúan con ambos niveles como un framework combinado. Edge administra la relación entre los niveles.

Las políticas de almacenamiento en caché interactúan con Message Processor de nivel 1 que interactúan con el almacenamiento persistente de Nivel 2.
  • El nivel 1 es una caché en memoria (L1) para un acceso rápido. Cada nodo de Message Processor (MP) tiene su propia caché en memoria para obtener una respuesta más rápida a las solicitudes.
    • L1 es una caché en memoria de corta duración (1 segundo).
    • A medida que se alcanza el límite de memoria, Apigee quita las entradas de caché de la memoria (aunque permanecerán en la caché persistente L2) a fin de garantizar que la memoria permanezca disponible para otros procesos.
    • L1 se proporciona con una memoria caché de corta duración de un segundo 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) debajo de la caché en memoria. Todos los nodos de procesamiento de mensajes comparten un almacén de datos en caché (Cassandra) para conservar las entradas de caché.
    • Las entradas de caché persisten aquí incluso después de que se quitan de la caché L1, como cuando se alcanzan los límites de memoria.
    • Debido a que la caché persistente se comparte entre los procesadores de mensajes (incluso en diferentes regiones), las entradas de caché están disponibles independientemente del nodo que reciba una solicitud para los datos almacenados en caché.
    • Solo las entradas de un tamaño determinado pueden almacenarse en caché, y se aplican otros límites de caché. Consulta Administra límites de caché.
    • El contenido de la caché en L2 se encripta con el algoritmo AES-256. Los datos se desencriptan antes de que los use el entorno de ejecución y se encriptan antes de escribirse en L2. Por lo tanto, el proceso de encriptación es invisible para los usuarios.

Cómo usan la caché las políticas

A continuación, se describe cómo Apigee Edge maneja las entradas de caché mientras tus políticas de almacenamiento en caché realizan su trabajo.

  • Cuando una política escribe una entrada nueva en la caché (política PopulateCache o ResponseCache):
    1. Apigee escribe la entrada en la caché L1 en la memoria solo en el procesador de mensajes que manejó la solicitud. Si se alcanza la cantidad de memoria en el procesador de mensajes antes de que venza la entrada, el Edge quita la entrada de la caché L1.
    2. Apigee también escribe la entrada en la caché L2.
  • Cuando una política lee de la caché (política LookupCache o ResponseCache):
    1. En primer lugar, Apigee busca la entrada en la memoria caché L1 en la memoria del procesador de mensajes que maneja la solicitud.
    2. Si no hay una entrada en la memoria correspondiente, Edge busca la entrada en la caché persistente L2.
    3. Si la entrada no se encuentra en la caché persistente:
  • Cuándo una política actualiza o invalida una entrada de caché existente (Política de InvalidateCache, política de PopulateCache opolítica de ResponseCache):
    1. El Message Processor que recibe la solicitud borra la entrada de la caché L1 de un segundo de la memoria y también borra la entrada de la caché L2.
    2. Después de una actualización o invalidación, es posible que los otros Message Processor se conserven en la caché L1 en la memoria.
    3. Dado que L1 está configurado para expirar en un segundo, no se necesita un evento de eliminación o actualización para quitar la entrada de L1.

Administra límites de caché

A través de la configuración, puedes administrar algunos aspectos de la caché. El espacio general 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 caché: se aplican varios límites de caché, como el nombre y el tamaño del valor, la cantidad total de cachés, la cantidad de elementos en una caché y un vencimiento.
  • Caché en memoria (L1). Los límites de memoria para la caché no se pueden configurar. Apigee configura los límites para cada procesador de mensajes que aloja cachés de varios clientes.

    En un entorno de nube alojado, en el que las cachés en memoria para todas las implementaciones de clientes se alojan en varios procesadores de mensajes compartidos, cada procesador cuenta con un umbral de porcentaje de memoria configurable de Apigee a fin de garantizar que el almacenamiento en caché no consuma todos los límites de la memoria de la aplicación. A medida que se alcanza el umbral para un procesador de mensajes determinado, las entradas de caché se expulsan de la memoria con menos frecuencia de uso. Las entradas expulsadas de la memoria permanecen en la memoria caché L2 hasta que vencen o se invalidan.

  • Caché persistente (L2) Las entradas expulsadas de la caché en memoria permanecen en la caché persistente de acuerdo con la configuración de tiempo de actividad.

Optimizaciones configurables

En la siguiente tabla, se muestra la configuración que puedes usar para optimizar el rendimiento de la caché.

Configuración Descripción Notas
Expiration Especifica el tiempo de actividad de las entradas de caché. Ninguna