API7 Enterprise v3.5.0: Configuración de Multi-Upstream

Sijing Zhang

Sijing Zhang

February 19, 2025

Products

Upstream: Navegación precisa de solicitudes

Para comprender mejor el concepto de upstream, usemos una metáfora: Imagina un aeropuerto bullicioso donde las personas están constantemente entrando y saliendo. Los viajeros, como las solicitudes de API, llegan en masa, ansiosos por encontrar sus puertas de embarque para comenzar sus viajes. En el mundo de API7 Gateway, los upstreams son similares a estas puertas de embarque. Sin embargo, no son ubicaciones físicas, sino agrupaciones lógicas. Estas agrupaciones lógicas definen claramente a dónde deben enviarse las solicitudes de API entrantes.

Un upstream podría representar un único servicio backend, como una puerta de embarque dedicada, donde todas las solicitudes relacionadas pueden llegar con precisión a su destino. También podría representar un grupo de servicios idénticos para el balanceo de carga, similar a múltiples puertas de embarque funcionalmente idénticas que distribuyen eficientemente el tráfico de pasajeros. Alternativamente, podría apuntar a un registro de servicios donde los backends correspondientes cambian dinámicamente para adaptarse a las necesidades empresariales en evolución. En la mayoría de los casos, un único upstream dentro de un servicio puede conectar múltiples rutas dentro del servicio, permitiendo un flujo eficiente de solicitudes.

En esencia, los upstreams crean inteligentemente una capa de abstracción entre las rutas y los servicios backend reales. Esta abstracción es altamente significativa. Simplifica enormemente la gestión de la configuración, haciendo que el proceso de configuración engorroso sea claro y ordenado. También permite sin problemas el balanceo de carga, asegurando que la carga en cada servicio backend sea razonable y mejorando el rendimiento general del sistema.

Configuración de múltiples upstreams: Una nueva era en la gestión del tráfico

La configuración de múltiples upstreams es una característica destacada de API7 Enterprise. Rompe las limitaciones tradicionales, permitiendo que un servicio configure libremente múltiples servicios upstream en cualquier momento y lugar. Esto no se limita a escenarios de canary, sino que se extiende aún más a varios escenarios avanzados de gestión de tráfico. Combinado con plugins, puede configurar de manera flexible reglas de enrutamiento para distribuir con precisión las solicitudes a diferentes servicios upstream.

Escenarios de uso

  1. Despliegue Canary: Durante las pruebas de canary, crea un nuevo upstream que apunte a una nueva versión del mismo servicio. Luego, enrute inteligentemente una parte del tráfico a la nueva versión del microservicio. Esto le permite verificar la corrección de nuevas características a pequeña escala, reduciendo efectivamente el riesgo, como un ensayo a pequeña escala antes de la presentación oficial.

  2. Despliegue Blue-Green: Primero, cambie suavemente todo el tráfico a la nueva versión. Después de confirmar que la nueva versión se está ejecutando de manera estable, retire de manera segura la versión anterior. Esto logra un despliegue sin tiempo de inactividad, asegurando la disponibilidad continua del servicio y haciendo que los usuarios casi no noten la actualización del sistema.

Despliegue de API

  1. Pruebas A/B: Divida el tráfico en múltiples grupos y enrútelos a diferentes servicios upstream. Esto le permite comparar intuitivamente los efectos de diferentes soluciones, proporcionando un fuerte soporte de datos para la toma de decisiones, como comparar diferentes soluciones de productos en la investigación de mercado.

  2. Conmutación por error: Cuando el servicio upstream principal falla desafortunadamente, el sistema puede cambiar rápidamente el tráfico al servicio upstream de respaldo. Esto actúa como un "seguro" para el servicio, asegurando su disponibilidad y manteniendo una buena experiencia de usuario.

  3. Gestión de múltiples clústeres: En entornos de múltiples centros de datos o múltiples nubes, la configuración de múltiples upstreams puede distribuir razonablemente el tráfico a diferentes clústeres, como clústeres regulares y VIP. Esto no solo mejora la disponibilidad del sistema y las capacidades de recuperación ante desastres, sino que también logra el balanceo de carga y el aislamiento de recursos, asegurando la operación estable del sistema en entornos complejos.

Sin embargo, es importante tener en cuenta que, aunque la configuración de múltiples upstreams trae una funcionalidad poderosa, también aumenta significativamente la complejidad y la dificultad de gestión. Esto requiere una planificación meticulosa del negocio y una comprensión profunda de la configuración de la puerta de enlace de API.

Consejos para usar efectivamente la configuración de múltiples upstreams

  1. Introducción gradual: Al introducir la configuración de múltiples upstreams, comience con escenarios simples, como pruebas básicas de división de tráfico. Acumule experiencia antes de expandirse gradualmente a escenarios más complejos para evitar sentirse abrumado por la complejidad desde el principio.

  2. Pruebas exhaustivas: Las pruebas exhaustivas antes de la publicación son esenciales. Simule varios escenarios posibles para asegurar la corrección de la configuración, como realizar controles de calidad estrictos antes de lanzar un nuevo producto.

  3. Monitoreo y alertas: Establezca un mecanismo robusto de monitoreo y alertas para monitorear continuamente la operación del sistema. Si se detectan anomalías, se pueden tomar medidas oportunas para abordar los problemas, salvaguardando la operación estable del sistema.

Monitoreo y alertas

Herramienta poderosa: El plugin traffic-split

Para lograr la poderosa funcionalidad de la configuración de múltiples upstreams, el plugin traffic-split es indispensable. Este plugin es altamente funcional, distribuyendo dinámicamente el tráfico a diferentes servicios upstream basándose en condiciones y pesos predefinidos.

En términos de coincidencia de condiciones, puede formular reglas complejas de distribución de tráfico basadas en información como la URL de la solicitud, el encabezado, la cookie e incluso factores externos como la hora y la fecha. Por ejemplo, puede dirigir solicitudes de usuarios VIP específicos al servicio upstream correspondiente al clúster VIP o enrutar una parte del tráfico al servicio upstream correspondiente a la nueva versión durante un período de tiempo específico. En términos de configuración de pesos, al establecer diferentes pesos, puede controlar con precisión la proporción de distribución del tráfico entre varios servicios upstream. Por ejemplo, durante un lanzamiento canary, puede dirigir el 90% del tráfico al upstream correspondiente al entorno de producción y el 10% al upstream correspondiente al entorno de pruebas.

Al utilizar efectivamente la función de configuración de múltiples upstreams y el plugin traffic-split, puede mejorar enormemente la flexibilidad y confiabilidad de la puerta de enlace de API. Esto sienta una base sólida para la implementación exitosa de la arquitectura de microservicios, permitiéndonos avanzar firmemente en el camino digital y abordar varios desafíos empresariales complejos.

Conclusión

Sirviendo como un sistema de navegación preciso para solicitudes, los upstreams enrutan eficientemente las solicitudes de API a los servicios objetivo a través de agrupaciones lógicas. La configuración de múltiples upstreams de API7 Enterprise mejora aún más la flexibilidad de la gestión del tráfico, apoyando escenarios avanzados como despliegues canary, despliegues blue-green, pruebas A/B, conmutación por error y gestión de múltiples clústeres. Con la ayuda del plugin traffic-split, el tráfico puede asignarse dinámicamente basándose en condiciones y pesos predefinidos, asegurando el alto rendimiento y la estabilidad del sistema.

Tags: