Exploración de la arquitectura flexible de la aplicación Taobao
Autor | Xu Zebin (Zebin)
Producido por | Departamento de tecnología de Alibaba New Retail Taobao
Actualmente, nuestros microservicios se basan principalmente en el modelo de llamadas sincrónicas. ha traído los siguientes desafíos:
Con este fin, hemos introducido un modelo de programación basado en Reactive para abordar los desafíos anteriores con capacidades totalmente asíncronas y orquestables:
Totalmente asíncrono basado en Reactive La solución abre toda la pila, lo que permite que las aplicaciones se actualicen de forma totalmente asincrónica. El QPS de una de las aplicaciones principales recomendadas de Taobao aumentó en un 90 % después de estar en línea, y el RT de otra aplicación principal también disminuyó en un 40 % después de estar en línea.
Por ejemplo, durante un evento a gran escala, nuestra dirección de cosecha experimentó algunos problemas de indisponibilidad temporal; por otro ejemplo, durante otro evento de fiesta a gran escala, nuestro sistema de inicio de sesión también experimentó una indisponibilidad temporal. Estos dos casos clásicos son causados por errores en nuestra estimación de la capacidad de la aplicación y el tráfico activo.
Aunque podemos mejorar en gran medida la estabilidad de la aplicación en términos de tráfico mediante la limitación de corriente, a través de los dos casos anteriores y la práctica comercial continua, creemos que si solo se utiliza la limitación de corriente estática, el sistema seguirá funcionando. Hay peligros y riesgos ocultos en la estabilidad causados por algunos factores inciertos.
La limitación actual es un arma poderosa para proteger la estabilidad de la aplicación. Cuando una aplicación estima correctamente su propia capacidad y el tráfico externo, la limitación actual puede proteger la aplicación de ser abrumada por el tráfico, mejorando así su propia estabilidad. actividades durante tantos años, la limitación actual ha desempeñado un papel indispensable para estabilizarla.
A medida que aumenta el número de microservicios, descubrimos que cuando las aplicaciones utilizan limitación de corriente estática, también conlleva algunos riesgos de estabilidad: existe una brecha de tiempo entre la limitación de corriente estática y las aplicaciones en evolución. En otras palabras, una vez que una aplicación establece un límite de corriente, mientras la aplicación continúe desarrollándose, el límite de corriente estático puede correr el riesgo de volverse obsoleto. Los factores que causan peligros y riesgos de obsolescencia incluyen principalmente:
1. Incertidumbre causada por la evolución del negocio/cambios de dependencia
El negocio siempre está en desarrollo y nuestro código de aplicación también cambia constantemente. Es posible que el QPS límite actual que se estableció ayer ya no sea aplicable tan pronto como se publique la aplicación hoy. Incluso si la aplicación en sí no se lanza, la topología de los servicios back-end en los que se basa la aplicación seguirá cambiando, lo que también provocará cambios en el QPS que la aplicación puede soportar, generando incertidumbre
2. Incertidumbre causada por cambios en el modelo de tráfico
Las aplicaciones y servicios generalmente incluyen múltiples llamadas a métodos, y cada llamada a método consume diferentes recursos del sistema. Esto requiere que el modelo de tráfico al realizar pruebas de estrés de la aplicación sea razonablemente preciso. suficiente. Encuentre un valor límite actual efectivo. Sin embargo, el modelo de tráfico del negocio a menudo cambia constantemente, lo que también traerá incertidumbre a la evaluación QPS de la aplicación.
3. Incertidumbre causada por diferentes capacidades de instancias de contenedores
A medida que el entorno y los métodos de operación y mantenimiento se vuelven cada vez más complejos, los contenedores entregados a la empresa también se vuelven inciertos, como nuestro departamento híbrido, CPU Sharing. Al mismo tiempo, es probable que diferentes contenedores de la misma aplicación tengan diferentes capacidades. Al igual que diferentes contenedores de la misma aplicación, el QPS básico extraído puede ser muy diferente. La incertidumbre de los recursos de la máquina subyacente también trae incertidumbre a la aplicación que limita la evaluación QPS actual.
Por lo tanto, el desarrollo de aplicaciones estará muy enredado en establecer el umbral límite actual de la aplicación:
La incertidumbre antes mencionada es también una de las razones por las que bloqueamos Internet antes de eventos de gran escala.
Ante tanta incertidumbre, esperamos que nuestra aplicación en sí pueda tener algunas características "flexibles" para que cuando surjan escenarios inciertos, la aplicación aún pueda resistir estos cambios, al igual que el Tai Chi, pueda superar. dureza con suavidad.
Creemos que para que una arquitectura de aplicación sea flexible, debe tener al menos las siguientes características (también continuamos explorando las características de la arquitectura flexible de aplicaciones):
1. Tolerancia a fallos
2. Protección contra sobrecarga
Para resolver el problema potencial de sobrecarga de la aplicación causado por la incertidumbre mencionada anteriormente, hemos introducido un ajuste de carga adaptativo para actualizar la capacidad de protección contra sobrecarga de la aplicación y resolver la estabilidad potencial. riesgo de sobrecarga de aplicaciones.
El ajuste de carga adaptativo se utiliza para abordar las incertidumbres anteriores, permitiendo que la aplicación evalúe su propia carga en tiempo real, sincronizando el QPS aceptado con la capacidad de procesamiento y previniendo problemas de estabilidad causados por errores en el límite actual. problemas de evaluación y utilización de recursos; al mismo tiempo, cuando la aplicación recibe una presión ultraalta, el QPS de una sola máquina puede ser aún mayor. Esto le permite hacer frente a un mayor tráfico en ráfagas y mejorar la estabilidad de la propia aplicación.
La solución completa consta principalmente de dos partes:
1. El componente de retroalimentación negativa integrado con la aplicación
2. El mecanismo de iteración rápida del componente en sí
En última instancia, toda la solución precipita una plataforma de iteración automática para el ajuste de carga adaptativo e itera un algoritmo de control automático basado en CPU.
El efecto de una aplicación empresarial principal de Taobao se verificó en una prueba de estrés de eventos a gran escala: cuando el número de máquinas en una determinada sala de ordenadores era 22,2 menos de lo esperado, resistió un tráfico de prueba de estrés de 130 %. Según experiencias pasadas de pruebas de estrés durante Double Eleven, con tan pocas máquinas, la aplicación en esta sala de computadoras no puede manejar una cantidad tan grande de tráfico.
En otra aplicación principal, debido a preocupaciones sobre la incertidumbre, el valor límite de corriente estática se establece de manera conservadora. Después de conectar el ajuste de carga adaptativo, el valor límite de corriente se puede aumentar aún más, aumentando el QPS efectivo del servicio. Llegó a 230 y el aplastante QPS de la aplicación simultánea se multiplicó por 3. Después del gran tráfico de la prueba de estrés, se recuperó en segundos y brindó servicios normales rápidamente (originalmente tomó 6 minutos).
Para que las aplicaciones tengan una mayor disponibilidad, nos centramos en las capacidades de prevención antes de que ocurran fallas, las capacidades de defensa cuando ocurren las fallas y las capacidades de recuperación cuando ocurren las fallas, desde la perspectiva de las fallas. -capacidades de disponibilidad para aplicaciones y actualización de la arquitectura flexible de las aplicaciones.
Al mismo tiempo, para el ajuste de carga adaptativo, la estrategia actual es rechazar en el lugar, lo que mejora la estabilidad, pero todavía existen riesgos de estabilidad. En el futuro, necesitamos enriquecer aún más la estrategia, como. como combinar los productos de middleware del grupo, realizar operaciones rápidas de expansión/reducción; aplicar retroalimentación de presión al flujo ascendente para eliminar la presión del flujo ascendente (contrapresión distribuida), etc. Al mismo tiempo, para seguir teniendo flexibilidad cuando surjan problemas en las dependencias de la aplicación, también introduciremos capacidades de aislamiento/interrupción de circuitos adaptativos para la aplicación de modelos de sincronización, de modo que cuando ocurran problemas aguas abajo de la aplicación, la aplicación en sí no lo hará. verse afectado.
Bienvenido a unirse al equipo de servicio básico de la plataforma básica de Taobao. Los miembros del equipo están reunidos con expertos, incluidos los fundadores de Alibaba Mobile Middleware, miembros principales de Dubbo y un grupo de socios que aman la tecnología y la esperanza. utilizar la tecnología para promover los negocios.
El equipo de servicio básico de la plataforma básica de Taobao promueve la actualización estructural de Taobao (Taobao, Tmall, etc.) (nombre en clave Tango) y se compromete a proporcionar capacidades, productos y soluciones centrales básicos para Taobao y todo grupo:
Esperamos participar en la construcción de la plataforma básica de Taobao ~
Envíe su currículum a: Zheliang ding.lid@alibaba-inc.com (Servicios básicos de plataforma básica - Líder de Infraestructura)
p>