Mejores prácticas de degradación de API en API Gateway

April 1, 2024

Technology

En los sistemas distribuidos modernos, la degradación de API sirve como un mecanismo crucial de tolerancia a fallos y estabilidad. Cuando un sistema enfrenta presión, fallos o limitaciones de recursos, degradar funciones o servicios no esenciales garantiza la estabilidad general del sistema y la continuidad de las operaciones comerciales principales. Este artículo explora los escenarios para la degradación de API y las mejores prácticas para implementar la degradación a nivel de la puerta de enlace de API.

Escenarios para la Degradación de API

  1. Sobrecarga del Sistema: Cuando el sistema experimenta un aumento en las solicitudes que excede la capacidad de procesamiento del servidor, es necesario degradar las API no esenciales para evitar caídas del sistema y garantizar el funcionamiento normal de las funciones principales.

  2. Fallos en los Servicios: En caso de fallos o degradación del rendimiento de los servicios backend, es necesario degradar las API de esos servicios para evitar la propagación de los fallos.

  3. Limitaciones de Recursos: Cuando los recursos del sistema, como CPU, memoria o ancho de banda, están limitados, es esencial degradar las API con alto consumo de recursos para garantizar la estabilidad general del sistema.

Mejores Prácticas para la Degradación de API a Nivel de Puerta de Enlace

Considere un escenario en el que una plataforma de comercio electrónico enfrenta una inmensa presión de tráfico durante un evento de ventas importante como el Black Friday. Para proteger las funciones principales y garantizar la experiencia del usuario, el equipo decide implementar estrategias de degradación de API a nivel de la puerta de enlace.

1. Identificación de API Clave

El equipo identifica API críticas como el inicio de sesión de usuarios, la recuperación de detalles de productos, la adición de artículos al carrito de compras, la presentación de pedidos y el procesamiento de pagos. Estas API son cruciales para que los usuarios completen el proceso de compra.

2. Diseño de Estrategias de Degradación

Para las API clave, se configura el manejo de degradación del rendimiento. Por ejemplo, cuando el servidor upstream devuelve un código de estado 500 tres veces consecutivas, se inicia la interrupción del circuito, con el tiempo de inactividad del circuito aumentando automáticamente, hasta un máximo de 300 segundos, hasta que el servicio upstream se recupere.

Para API no clave, como las reseñas de usuarios, listas de recomendaciones y visualización de anuncios, se diseñan estrategias de degradación específicas:

  • API de Reseñas de Usuarios: Devolver listas de reseñas predeterminadas o datos vacíos para evitar llamadas en tiempo real al sistema de reseñas.

  • API de Listas de Recomendaciones: Utilizar datos de recomendaciones en caché o devolver una lista de recomendaciones fija para reducir la dependencia del motor de recomendaciones.

  • API de Visualización de Anuncios: Devolver anuncios predeterminados o espacios publicitarios vacíos para garantizar que el diseño de la página no se vea afectado.

API

3. Configuración de Apache APISIX / API7 Enterprise

  • Para las API clave, se habilita el plugin "api-breaker" en las rutas correspondientes, con una condición de activación establecida en tres ocurrencias consecutivas de un código de estado 500, y un tiempo máximo de inactividad del circuito de 300 segundos.

  • Para la API de evaluación de usuarios, se habilita el plugin mocking en la ruta correspondiente y se establece response_example en datos vacíos.

  • Para la API de lista de recomendaciones, se habilita el plugin proxy-cache en la ruta correspondiente y se opta por utilizar el almacenamiento en caché de respuestas en memoria.

  • Para la API de visualización de anuncios, se activa el plugin mocking en la ruta correspondiente y se establece response_example en anuncios predeterminados, garantizando la visualización normal de la página mientras se mantienen los anuncios clicables.

4. Gestión Dinámica de Configuraciones

Para adaptarse a las condiciones cambiantes del tráfico, el equipo opta por puertas de enlace recargables dinámicamente: Apache APISIX / API7 Enterprise. Pueden ajustar los umbrales de interrupción del circuito, las estrategias de degradación y habilitar interruptores de degradación basados en datos de monitoreo en tiempo real, degradando selectivamente las API no clave a medida que ocurren picos de tráfico.

5. Monitoreo y Alertas

El equipo configura políticas de alerta convenientemente dentro de la puerta de enlace API7 o se integra con sus sistemas internos de monitoreo y alerta utilizando APISIX. El monitoreo en tiempo real de los tiempos de respuesta de la API, las tasas de error y los volúmenes de llamadas permite la ejecución automática de la degradación al alcanzar los umbrales de degradación o las condiciones de activación. El personal de operaciones es notificado mediante SMS, correo electrónico u otros medios para abordar rápidamente posibles problemas, garantizando la estabilidad del sistema.

6. Evaluación y Ajuste

Tras la implementación de las estrategias de degradación, el equipo monitorea de cerca el rendimiento del sistema y la experiencia del usuario. Evalúan la efectividad de las estrategias de degradación a través de comentarios de los usuarios, análisis de datos comerciales y métricas de monitoreo. Basándose en los resultados de la evaluación, el equipo realiza ajustes oportunos a las estrategias de degradación para equilibrar mejor la carga del sistema y la satisfacción del usuario.

En Conclusión

La degradación de API, como un mecanismo crítico de tolerancia a fallos en los sistemas distribuidos modernos, mejora significativamente la estabilidad del sistema y la experiencia del usuario cuando se implementa a nivel de la puerta de enlace de API. Al identificar API clave, diseñar estrategias de degradación, configurar plugins de la puerta de enlace, gestionar dinámicamente configuraciones, monitorear y alertar, y evaluar la efectividad, los equipos pueden abordar de manera flexible diversos desafíos, garantizando la estabilidad del sistema incluso bajo presión.

Tags: