Desmitificado | La razón detrás del lanzamiento de "suave como la seda" en escenarios de alto tráfico

Introducción: Muchas empresas de Internet publican en medio de la noche, solo para reducir el impacto de los usuarios, y se puede controlar el escenario de los problemas. La gestión del servicio MSE no tiene pérdidas y está fuera de línea, lo que garantiza el tráfico durante el período de lanzamiento, lo que le permite deshacerse de la vergüenza del lanzamiento a medianoche.

¿Por qué muchas empresas de Internet no se atreven a publicar durante el día y optan por publicar en medio de la noche? Si puede deshacerse de la vergüenza de publicar en medio de la noche, ¿no olerá? Elegir publicar en medio de la noche no es más que reducir el impacto en los usuarios y se puede controlar el impacto de los problemas.

Luego, hablemos de los problemas que ocurrirán durante el comunicado de prensa.

  • Si su aplicación no tiene problemas en línea o fuera de línea, cualquiera de sus aplicaciones causará indisponibilidad del servicio a corto plazo durante el proceso de lanzamiento, y aparecerá una gran cantidad de errores anormales de io en el monitoreo comercial dentro de un corto período de tiempo, lo que causará problemas a la continuidad comercial.
  • La versión es el último enlace de la actualización completa de la función en línea. Algunos problemas acumulados durante el proceso de desarrollo solo se activarán en el enlace de la versión final. Si se trata de una escena con mucho tráfico durante el día, los problemas más pequeños se amplificarán rápidamente debido al alto tráfico y el impacto será difícil de controlar.
  • Si el lanzamiento involucra varias aplicaciones, cómo lanzarlo de manera razonable y sin problemas de versión que causarán daños en el tráfico.

Todos los problemas publicados se resumen a grandes rasgos en los tres puntos anteriores. A continuación, discutiré en detalle por qué existen estos problemas en varios artículos y cómo los hemos resuelto. También espero que todos puedan salir temprano del trabajo, deshacerse de la vergüenza de publicar en medio de la noche y pasar más tiempo con sus familias.

Este artículo se centrará en ejemplos de escenarios en línea y fuera de línea, y describirá los problemas en el proceso de publicación.

El estado de la publicación de la aplicación con mucho tráfico

Demostración de la aplicación

Demo Tomando Spring Cloud como ejemplo, hemos preparado la siguiente demo. El tráfico lo inicia el servicio de pruebas de rendimiento de Alibaba Cloud PTS y fluye hacia nuestro sistema a través de la puerta de enlace Zuul de código abierto.

Documento de uso de PTS: https://pts.console.aliyun.com/

El enlace de llamada de servicio se muestra en la siguiente figura:

image.png

En la figura, el tráfico proviene del Ingress correspondiente a Netflix Zuul y llamará al servicio correspondiente a la aplicación SC-A, la aplicación SC-A llama internamente al servicio de aplicación SC-B y la aplicación SC-B llama internamente al servicio de aplicación SC-C.

Demostración de implementación de Helm

Helm install mse / mse-samples
Demo es una arquitectura Spring Cloud de código abierto puro, dirección del proyecto:

https://github.com/aliyun/alibabacloud-microservice-demo/tree/master/microservice-doc-demo/traffic-management

Después de la implementación, la carga de trabajo en Alibaba Cloud Container Service es la siguiente:

image.png

Usamos el comando while true; do curl http: // {ip: port} / A / a; echo; done shell para acceder continuamente al servicio Spring Cloud. Podemos ver que la función de nuestra demostración es solo para imprimir la IP del servicio actual. Podemos ver que la función de nuestra demostración es solo imprimir la IP del servicio actual, y podemos ver el enlace de la llamada general.

while true; do curl http://{ip:port}/A/a;echo;done
A[10.0.0.81] -> B[10.0.0.82] -> C[10.0.0.68]
A[10.0.0.179] -> B[10.0.0.82] -> C[10.0.0.50]
A[10.0.0.80] -> B[10.0.0.82] -> C[10.0.0.68]
A[10.0.0.49] -> B[10.0.0.82] -> C[10.0.0.50]
A[10.0.0.81] -> B[10.0.0.175] -> C[10.0.0.68]
A[10.0.0.179] -> B[10.0.0.175] -> C[10.0.0.50]
A[10.0.0.80] -> B[10.0.0.175] -> C[10.0.0.68]
A[10.0.0.49] -> B[10.0.0.175] -> C[10.0.0.50]
A[10.0.0.81] -> B[10.0.0.82] -> C[10.0.0.68]
...

Configure la prueba de presión a 500 qps y realice el escalado, expansión y liberación de la aplicación durante la prueba de presión, y observe la situación de la prueba de presión.

El rendimiento de las aplicaciones de código abierto con mucho tráfico

Encogimiento

En el caso de la prueba de presión de 500qps, la aplicación de sc-a se reduce de 4 cápsulas a 1 cápsula, y la prueba de presión dura 3 minutos.

  1. Al observar el evento de K8s, vemos que a las 17:35:21, la aplicación se reduce.
    image.png
  2. Al observar el informe de la prueba de esfuerzo de rendimiento, observamos que el error comenzó a las 17:35:21 y se detuvo a las 17:35:36. El error duró 15 segundos y se produjeron un total de 469 excepciones.
    image.png
  3. El informe detallado del proceso es el siguiente.
    image.png

Expansión

Echemos un vistazo al rendimiento de la expansión de la aplicación en el estado de la prueba de esfuerzo. Expandimos la aplicación sc-a de 1 cápsula a 4 cápsulas en el caso de la prueba de esfuerzo de 500 qps, y el tiempo de la prueba de esfuerzo es de 3 minutos.

  1. Al observar el evento K8s, vemos que a las 17:47:03, la aplicación se expande.
    image.png
  2. Al observar el informe de la prueba de esfuerzo de rendimiento, observamos que el error comenzó a las 17:47:12 y se detuvo a las 17:47:19. El error duró 7 segundos y se produjeron un total de 257 excepciones.
    image.png
  3. El informe detallado del proceso es el siguiente.
    image.png

lanzamiento

En el caso de la prueba de presión de 500qps, se libera la aplicación sc-a (4 cápsulas) y la prueba de presión dura 3 minutos.

  1. Al observar el evento K8s, vemos que la aplicación se lanza a las 17:53:42.
    image.png
  2. Al observar el informe de la prueba de esfuerzo de desempeño, observamos que el error comenzó a las 17:53:42 y se detuvo a las 17:54:24. El error duró 42 segundos y hubo más de 10,000 excepciones.
    image.png
  3. El informe detallado del proceso es el siguiente.
    image.png

Status quo y pensamiento

Se puede ver que la cuestión de la liberación de aplicaciones con mucho tráfico es urgente. Con el desarrollo de la arquitectura nativa de la nube, las capacidades nativas de la nube, como el escalado elástico, las actualizaciones continuas y las versiones por lotes, permiten a los usuarios obtener la solución óptima para los recursos, los costos y la estabilidad. Es precisamente por su flexibilidad y otras características que si la aplicación está en línea o fuera de línea Problemas como Internet, estos problemas se ampliarán bajo la arquitectura nativa de la nube.

Imagínese que si hay errores innecesarios en cada expansión, reducción y lanzamiento, la continuidad del negocio y la experiencia del usuario del producto recibirán un gran impacto. Cómo asegurarse de que la empresa no se dé cuenta durante el proceso de implementación de la actualización del servicio es desarrollo El problema que el usuario debe resolver, es decir, desde detener la aplicación hasta volver a ejecutarla, no puede afectar las solicitudes comerciales normales.

Reducir los errores de API innecesarios es la mejor experiencia del cliente.

Este es un punto muy doloroso, en este momento alguien te dice que yo sé cómo solucionarlo, tengo mucha experiencia y sé cómo solucionarlo, debes estar muy feliz.

Luego ingresó con un salario alto. Es realmente bueno. Los diversos diagramas de arquitectura, principios del marco y modificaciones del marco son muy claros y las funciones son realmente perfectas. Finalmente, para evaluar el costo de modificar el sistema actual, es necesario construir tres conjuntos de servidores de middleware, agregar 4 dependencias de middleware y modificar decenas de miles de líneas de código y configuración.

"Disculpe, todavía es importante para el negocio. Los requisitos dados por el gerente de producto aún no se han cumplido. El escenario que acabo de mencionar no es tan doloroso. Hay solo algunos problemas menores. Está realmente bien".

En este momento, MSE le dice que la solución de microservicio de MSE no requiere ninguna modificación de código y configuración para resolver perfectamente los problemas en línea y fuera de línea. Solo necesita conectar su aplicación a la administración de servicios de MSE, puede disfrutar de la capacidad sin pérdidas sin conexión de MSE.

¿No estás conmovido?

Sí, ha leído bien. Siempre que su aplicación esté basada en Spring Cloud o el desarrollo de la versión de Dubbo en los últimos cinco años, puede usar directamente las capacidades completas de administración de microservicios de MSE sin modificar ningún código o configuración.

Lanzamiento de aplicaciones sin pérdida sin conexión

Cómo acceder a MSE sin pérdidas sin conexión

Solo necesita conectar su aplicación a la gobernanza del servicio MSE para tener la capacidad fuera de línea sin pérdidas de la gobernanza de microservicios.

Rendimiento después del acceso

Echemos un vistazo a la expansión, la contracción y el rendimiento del lanzamiento después de acceder a la gobernanza del servicio MSE, que también es el original.

Encogimiento

En el caso de la prueba de presión de 500qps, la aplicación de sc-a se reduce de 4 cápsulas a 1 cápsula, y la prueba de presión dura 3 minutos.

  1. Al observar el evento K8s, vemos que a las 17:41:06, la aplicación se reduce.
    image.png
  2. Al verificar el informe de la prueba de estrés de rendimiento, observamos que el flujo no sufrió daños durante todo el proceso y la concurrencia se mantuvo estable en alrededor de 30.
    image.png
  3. El informe detallado del proceso es el siguiente, puede ver que el escalado de aplicaciones es completamente imperceptible para la empresa.
    image.png

Expansión

En el caso de la prueba de presión de 500qps, la aplicación de sc-a se expande de 1 a 4 cápsulas, y la prueba de presión toma 3 minutos.

  1. Observando el evento K8s, vemos que a las 20:00:19, la aplicación se expande.
    image.png
  2. Verifique el informe de prueba de presión de rendimiento, no se informa ningún error.
    image.png
  3. El informe detallado del proceso es el siguiente. Se puede ver que no hay un informe de error para la reducción de la aplicación para la empresa, pero hay aumentos de concurrencia a las 20:01:07 y la función en línea sin pérdidas se lanzará más tarde. Esta lógica se mejorará para suavizar los golpes.
    image.png

lanzamiento

En el caso de la prueba de presión de 500qps, se libera la aplicación sc-a (4 cápsulas) y la prueba de presión dura 3 minutos.

  1. Observando los eventos de K8s, vemos que la aplicación se lanza a las 20:08:55.
    image.png
  2. Al verificar el informe de la prueba de presión de rendimiento, observamos que no se informó ningún error en todo el flujo.
    image.png
  3. El informe detallado del proceso es el siguiente. Se puede ver que no hay un informe de error para la reducción de la aplicación para el negocio, pero hay un ligero aumento en la concurrencia a las 20:09:39, 20:10:27, y la función en línea sin pérdidas se lanzará más tarde, lo que mejorará la lógica. , Suaviza las protuberancias.
    image.png

Al comparar el rendimiento de las aplicaciones en el proceso de lanzamiento antes y después del acceso a la gestión de servicios de MSE, podemos ver que MSE resuelve por completo los puntos débiles de los informes de errores de tráfico durante el lanzamiento y la expansión, lo que hace que el negocio sea más estable y la experiencia del producto más fluida. Al mismo tiempo, después de acceder a la administración del servicio MSE, puede disfrutar de la capacidad sin conexión sin pérdidas sin modificar una línea de código.

para resumir

Este artículo presenta la capacidad de sin pérdida sin conexión bajo la gobernanza de microservicios, garantiza el tráfico durante el período de lanzamiento y le permite deshacerse del dilema del lanzamiento a medianoche. Su aplicación solo necesita acceder a la gobernanza del servicio MSE, y puede disfrutar sin pérdidas sin conexión sin ninguna operación. capacidad. Además de MSE (motor de microservicio), las capacidades sin pérdida también están integradas por productos en la nube como EDAS y SAE. Al mismo tiempo, se ha implementado sin pérdida sin conexión en el negocio principal de Alibaba Cloud a gran escala, lo que ayuda a garantizar la estabilidad del negocio en la nube y mantener su negocio en línea para siempre.

Los siguientes capítulos explicarán en detalle por qué solo necesita acceder a la administración de servicios de MSE, su aplicación puede liberar la magia oscura que aún es suave como la seda bajo el tráfico pesado durante el día, así que permanezca atento

Más tarde, continuaré hablando sobre la escena del lanzamiento sedoso bajo mucho tráfico durante el día. Se espera que haya de tres a cuatro artículos sobre este tema, ¡así que estad atentos!

No solo la gobernanza del servicio

El motor de microservicios de MSE no solo tiene capacidades de gobernanza de microservicios, sino que también brindamos servicios como alojar un registro de código abierto, un centro de configuración y una puerta de enlace de código abierto. A través de productos administrados basados ​​en Baas, exportamos las capacidades de mejores prácticas de Alibaba Cloud durante más de diez años de microservicios a través de productos en la nube para ayudar a garantizar la estabilidad del negocio en la nube y mantener su negocio en línea para siempre.

Grupo de intercambio de usuarios del motor de microservicios

Si tiene alguna pregunta durante el uso del motor de microservicio MSE, puede buscar el número de grupo Dingding 23371469 o usar Dingding para escanear el siguiente código QR y unirse al grupo Dingding para recibir comentarios.

image.png

Enlace original: https://developer.aliyun.com/article/780231?

Declaración de derechos de autor: El contenido de este artículo es aportado voluntariamente por usuarios registrados de nombre real de Alibaba Cloud. Los derechos de autor pertenecen al autor original. La Comunidad de desarrolladores de Alibaba Cloud no posee sus derechos de autor y no asume las responsabilidades legales correspondientes. Consulte el "Acuerdo de servicio al usuario de la comunidad de desarrolladores de Alibaba Cloud" y las "Directrices de protección de propiedad intelectual de la comunidad de desarrolladores de Alibaba Cloud" para conocer las reglas específicas. Si encuentra sospecha de plagio en esta comunidad, complete el formulario de reclamo por infracción para informarlo. Una vez verificado, esta comunidad eliminará inmediatamente el contenido presunto infractor.

Supongo que te gusta

Origin blog.csdn.net/alitech2017/article/details/112465964
Recomendado
Clasificación