Caché de múltiples capas en API Gateway aborda los desafíos del tráfico elevado

January 26, 2024

Technology

A medida que el uso de APIs continúa creciendo en el desarrollo moderno, la demanda de una puerta de enlace de API eficiente y confiable también ha aumentado. La puerta de enlace de API sirve como el punto de entrada único para todas las solicitudes de API entrantes, permitiendo que se gestionen y distribuyan de manera eficiente a través de varios microservicios. Aunque la puerta de enlace de API ofrece numerosos beneficios, puede enfrentar desafíos al manejar escenarios de alto tráfico.

Mecanismo de Caché de APISIX

El siguiente diagrama de flujo ilustra el eficiente mecanismo de caché utilizado por APISIX para minimizar la latencia y mejorar el rendimiento. Al almacenar en caché las respuestas en múltiples niveles, APISIX puede reducir efectivamente la carga en los servidores ascendentes y proporcionar una experiencia más rápida para los clientes.

Cliente <-- Solicitud HTTP --> Trabajador de APISIX
    (Verificar caché LRU a nivel de proceso)
    (No hay coincidencia en la caché)
    (Verificar caché de DICT compartido a nivel de plano de datos)
        (No se adquiere el bloqueo)
            (Adquirir bloqueo, verificar caché)
                (Coincidencia en la caché)
                (Devolver respuesta en caché, liberar bloqueos)
                (Fallo en la caché)
                    (Consultar Redis)
                        (Adquirir Mutex)
                            (Consultar Redis)
                                (Fallo en la caché)
                                    (Recuperar respuesta del servidor ascendente)
                                    (Almacenar respuesta en la caché de DICT compartido)
                                    (Devolver respuesta al cliente)
                                (Coincidencia en la caché)
                                    (Copiar respuesta a la caché de DICT compartido)
                                    (Devolver respuesta en caché al cliente)
                                (Liberar Mutex de Redis)
                        (Liberar bloqueo)
    (Coincidencia en la caché)
        (Devolver respuesta en caché)

LRU: Caché de Primera Capa en el Nivel de Trabajador Único de APISIX

La caché LRU (Menos Recientemente Usado) a nivel de trabajador de APISIX es un componente crucial responsable de almacenar en caché los datos accedidos con frecuencia dentro de cada proceso de trabajo. Este sistema de caché emplea el algoritmo de eliminación LRU, almacenando y recuperando datos de manera eficiente mientras prioriza el manejo de los datos menos recientemente utilizados. Al almacenar en caché los datos accedidos con frecuencia en la memoria, APISIX reduce significativamente la latencia y los costos al consultar fuentes de datos externas, como reglas de enrutamiento o tokens de autenticación, mejorando así la velocidad de respuesta del sistema.

A través de este mecanismo de caché inteligente, APISIX utiliza eficientemente los recursos del sistema al manejar un gran volumen de solicitudes, mejorando el rendimiento y la estabilidad general del sistema. APISIX, con su avanzada caché LRU, proporciona a los desarrolladores una solución de puerta de enlace de API confiable y eficiente, facilitando una comunicación fluida con servicios externos.

DICT Compartido: Caché de Segunda Capa en el Nivel de Nodo de APISIX

El diccionario de memoria compartida (shared dict) entre todos los procesos de trabajo en un nodo de APISIX. Sirve como una caché centralizada para datos accedidos comúnmente, incluyendo datos de respuesta de API o encabezados de respuesta. Múltiples procesos de trabajo pueden acceder y actualizar esta caché simultáneamente para garantizar la consistencia de los datos y evitar duplicaciones innecesarias.

Este diccionario de memoria compartida exhibe un rendimiento excepcional, aprovechando tecnologías avanzadas como el bloqueo de memoria y estructuras de datos eficientes. Esto le permite alcanzar el objetivo de minimizar la contención y maximizar el rendimiento. A través del bloqueo de memoria, controla eficazmente el acceso concurrente, asegurando la consistencia durante operaciones simultáneas de lectura y escritura en múltiples procesos de trabajo. El diseño eficiente de la estructura de datos permite que el diccionario de memoria compartida ejecute operaciones de recuperación y actualización de datos más rápidamente, mejorando el rendimiento general.

La introducción del diccionario de memoria compartida inyecta un mayor rendimiento y escalabilidad en el plano de datos de APISIX, proporcionando a los desarrolladores una herramienta confiable para sobresalir en el manejo de grandes volúmenes de datos y solicitudes.

Mecanismo de Caché Multinivel de APISIX

El siguiente diagrama ilustra el mecanismo de caché multinivel de APISIX, similar al principio de un embudo. Específicamente, la caché L1 utiliza una caché LRU dentro del trabajador, la caché L2 es un diccionario compartido entre múltiples trabajadores, y la caché L3 es una base de datos Redis externa a la puerta de enlace de API.

Aquí hay un ejemplo para aclarar: cuando 10,000 solicitudes de usuarios consultan datos a través de APISIX, asumiendo que la tasa de aciertos de la caché L1 es del 90%, 9000 solicitudes se devolverán directamente. Las 1000 solicitudes restantes consultarán la caché L2. Asumiendo que la tasa de aciertos de la caché L2 también es del 90%, entonces 100 solicitudes procederán a consultar la caché L3, Redis. Antes de que estas 100 solicitudes consulten Redis, primero consultarán mutex (exclusión mutua) para asegurar que solo una solicitud consulte Redis a la vez, evitando el Efecto Dogpile.

Mecanismo de Caché Multinivel de APISIX

Conclusión

Al aprovechar las capacidades del almacenamiento en caché multinivel, APISIX maneja eficientemente la mayoría de las solicitudes de los clientes sin necesidad de consultas frecuentes a componentes de almacenamiento de datos externos como Redis o Postgres. Esto no solo reduce significativamente la latencia general, sino que también mejora el rendimiento de la puerta de enlace de API, proporcionando a las empresas una solución eficiente y robusta que simplifica la comunicación con servicios externos. El diseño de optimización garantiza la robustez del sistema, permitiendo que APISIX aborde de manera flexible escenarios de alta concurrencia y cree un entorno de desarrollo más confiable y de alto rendimiento para los ingenieros.

Tags: