Un gran cambio desconocido detrás de WeChat: ¿Cómo “mueven el elefante al refrigerador”?

A mediados de enero de 2020, menos de una semana antes del Festival de Primavera, Stephen Liu, jefe de arquitectura de tecnología de WeChat, estaba muy ansioso. La próxima Nochevieja es la época más ocupada del año para el negocio de WeChat, y cientos de millones de los usuarios estarán en este momento Al enviar saludos de Año Nuevo y sobres rojos de WeChat, los servidores de WeChat también están experimentando un mayor impacto año tras año.

Para garantizar que todos puedan recibir las bendiciones de Año Nuevo según lo programado y agarrar los sobres rojos de WeChat, el equipo técnico de WeChat ingresa al modo "Garantía del festival de primavera" al final de cada año para realizar pruebas de esfuerzo del servidor para garantizar que WeChat no se caiga. La cadena.

El momento más crítico, problema muy difícil

Pero en la fase de prueba de este Festival de Primavera, algo salió mal.

El sobre rojo de WeChat, que nació en 2014, experimentó un gran tiempo de inactividad durante el Festival de Primavera de ese año, y algunos usuarios no pudieron recibir el sobre rojo en algún momento, ni pudieron ver el monto del sobre rojo. Al año siguiente, WeChat ganó el derecho de interactuar con los anuncios de la Gala del Festival de Primavera. En la víspera de Año Nuevo de ese año, el número total de paquetes rojos de WeChat enviados y recibidos en China llegó a 1010 millones de veces, y el número total de sacudidas de WeChat durante la Gala del Festival de Primavera llegó a 11000 millones de veces. Este año, WeChat estuvo bien preparado y, en general, estable, con tiempo de inactividad ocasional a pequeña escala.

Por lo tanto, no es un buen fenómeno tener problemas con las pruebas antes del Festival de Primavera.

Esteban Liu dijo:

En ese momento, el valor (objetivo) que queríamos para la prueba de esfuerzo era probablemente miles de millones de mensajes enviados por minuto, pero el nivel de estrés que medimos era solo la mitad del objetivo y solo faltaban dos semanas para el Festival de Primavera.

La llamada prueba de estrés es para expandir la capacidad del servidor de WeChat en línea. Una vez completada la expansión, realice una simulación agresiva para simular los datos máximos a las 0:00 en la víspera de Año Nuevo para ver cuánto puede aumentar este año en comparación con el año pasado, y luego simule esa cantidad por completo y aplíquela al sistema.

Una comprensión simple es similar a un sitio web que realiza un ataque DDoS en sí mismo, probando cuántas personas pueden acceder al sitio web al mismo tiempo sin tiempo de inactividad. Un entendimiento más popular es que el restaurante recoge clientes. Los asientos y los chefs de un restaurante solo pueden recibir 100 invitados al mismo tiempo fuera de temporada. Sin embargo, en temporada alta, puede haber 300 invitados que necesitan comer. al mismo tiempo. En este momento, es necesario expandir el restaurante con anticipación para reclutar chefs. Similar a la "expansión", o si realmente no funciona, deje que los invitados hagan cola afuera.

Sin embargo, WeChat no puede enviar ni recibir mensajes haciendo cola.

El problema encontrado por el equipo técnico de WeChat y Stephen Liu esta vez parece haber ampliado claramente el restaurante y contratado a más chefs, pero al mismo tiempo solo se pueden recibir 150 invitados, lo que no alcanzó el objetivo de 300, y en este momento , los chefs todavía están bastante ocupados y los asientos están vacíos. También estaba muy vacío, y había gente haciendo cola afuera.

El equipo técnico de WeChat ha comprobado durante una o dos semanas antes y finalmente ha localizado el problema: hay un problema con el rendimiento de la tarjeta de red. Para tomar otro ejemplo, es como si el recepcionista en la entrada del restaurante fuera perezoso y no llevara a los invitados a la habitación, lo que resultó en insatisfacción en el restaurante y largas colas de clientes afuera.

Detrás del problema hay un gran cambio desconocido para WeChat

La razón por la que no hubo problema con la prueba de estrés en años anteriores, pero sí con la prueba de estrés de este año, implica un gran cambio detrás de WeChat: la nube de desarrollo propio.

Este gran cambio comenzó con la revolución 930 de Tencent en 2018. El 30 de septiembre de 2018, Tencent volvió a realizar un importante ajuste en la estructura de la empresa. Los siete grupos empresariales originales se reorganizaron e integraron, y el recién establecido Grupo Empresarial de la Industria Inteligente y de la Nube (CSIG ), plataforma con el Grupo Empresarial de Contenidos (PCG). Entre ellos, CSIG emprende la gran visión de Tencent ToB, mientras que WeChat Business Group (WXG) conecta a la mayoría de los usuarios finales C.

La nube ya es un negocio central estratégico para Tencent. A partir de este momento, la autoinvestigación y la migración de su propio negocio a la nube se ha convertido en un tema importante para el ajuste del negocio, mientras que la autoinvestigación y la migración del negocio de WeChat a la nube es el máxima prioridad.

Antes de la reforma de Tencent 930, Tencent no proporcionó una infraestructura de nube unificada para su negocio interno de desarrollo propio, sino que adoptó el modelo de servidores de máquinas físicas. Desde una perspectiva macro, teniendo en cuenta la gran cantidad de usuarios y el volumen comercial de WeChat, la migración a la nube de desarrollo propio puede brindar enormes ventajas en costos y eficiencia, que son beneficiosas para los negocios de WeChat y Tencent Cloud.

Pero microscópicamente hablando, un negocio que involucra a más de mil millones de usuarios necesita experimentar un cambio tan drástico y hacer que los usuarios se sientan indiferentes, como si las ruedas de un automóvil de alta velocidad tuvieran que cambiarse, el automóvil no puede detenerse e incluso las ruedas no puede ser golpeado Cambiar.

El problema con la prueba de presión anterior ocurrió durante el proceso de reemplazo de la rueda.

De hecho, es hora de reemplazar las ruedas, dijo Stephen Liu:

En 2014, WeChat era solo un departamento. En ese momento, cuando la empresa propuso tal idea de optimización de costos, estábamos bastante nerviosos, porque no había mucha gente en el departamento en ese momento, solo era un departamento en ese momento, y solo había tres o cuatrocientas personas en ese momento. Antes de 2014, toda la mano de obra de WeChat se dedicaba a la iteración funcional y al pulido constante de nuevas funciones, por lo que se prestó menos atención a cómo se usaba el servidor backend, incluido qué tan bien se hizo la arquitectura.

La empresa volvió a tener este requerimiento. Posteriormente, la empresa hizo arreglos para que la gente viera cómo iba cada departamento comercial y finalmente seleccionó a personas con mucha experiencia. Por ejemplo, el que dirigía el equipo en ese momento también era el VP de la empresa, de todos modos, me impresionó mucho porque él me aprobó muchas veces. Se dice que el costo de WeChat es muy alto y su servidor no se usa bien.

▲ PPT del informe anterior de WeChat

Este requisito de reducir costos y aumentar la eficiencia llevó al equipo de WeChat a optimizar la arquitectura del servidor por primera vez y adoptó una arquitectura de sistema llamada YARD en ese momento.

Sin embargo, esta vez, la plataforma en la nube de desarrollo propio debe ser coherente con Tencent, y se adopta la arquitectura del sistema K8S de código abierto.En comparación con YARD, la arquitectura K8S es más abierta y tiene ventajas inherentes en la adaptación a la inteligencia artificial y los grandes datos. marcos Ahora, muchas funciones de WeChat están relacionadas con la inteligencia artificial y los grandes datos, como la conversión de voz a texto y la traducción de texto.

En otras palabras, en 2014, WeChat adoptó la arquitectura YARD con un propósito muy simple, que era ayudar a programar de manera flexible los recursos del servidor y ahorrar costos. No consideró más complejidad y más largo plazo, y K8S no era de código abierto en ese momento.

A medida que avanza el desarrollo comercial, las ventajas de la arquitectura K8S superan gradualmente el dolor de la migración de la arquitectura, que coincide con la transformación comercial de Tencent, y este cambio es imperativo.

Edsel Wang, un ingeniero de infraestructura de WeChat, le contó a Aifaner los pasos macro del autodesarrollo de WeChat y la migración a la nube:

Para el equipo de WeChat, la migración a la nube se puede dividir en dos niveles: estrecho y amplio. En un sentido estricto, ir a la nube es la reforma 930 en 2018. Después de la reforma 930 de la empresa, la empresa promovió la autoinvestigación y la migración a la nube, y luego WeChat comenzó a utilizar la infraestructura de nube unificada proporcionada por la empresa. En un sentido amplio, ir a la nube significa que WeChat gradualmente ha hecho que todo el modelo de I + D sea nativo de la nube. Esto no incluye simplemente mover algunos servicios de back-end de la máquina física original a la nube. Por supuesto, también incluye la integración de todo el proceso de I+D con la nube.

Tras la reforma 930 de 2018, el impulso de la empresa a la autoinvestigación y la migración a la nube ha pasado hasta el momento por dos etapas. La primera etapa es del 2018 al 2020. La empresa cambió principalmente la forma de proveer servidores, es decir, de la provisión original de máquinas físicas a CVM (Cloud Virtual Machine, máquina virtual en la nube). La segunda etapa comienza a partir de 2020. Además, la empresa requiere que cada departamento comercial cambie algunos sistemas de programación internos a K8S. Para nosotros, esto es migrar de YARD a K8S. En la primera etapa, desde la máquina física original hasta el uso de CVM, ya que diseñamos YARD como su capa de programación, nuestro trabajo principal es hacer que YARD se adapte a la nube, porque YARD originalmente admitía máquinas físicas, ahora YARD admite CVM virtual. máquinas, la capa empresarial no necesita cambiar mucho.

En la segunda etapa, para el equipo de WeChat, se trata de usar K8S, es decir, reemplazar la plataforma YARD de desarrollo propio con las capacidades de programación del clúster K8S proporcionado por Tencent Cloud. Para que esta migración sea más fluida, hemos planeado tres pasos en el proceso de reemplazo de YARD con K8S. El primer paso es resolver el problema de si WeChat puede ejecutarse en K8S y si el programa puede ejecutarse en él. El segundo paso es trasplantar parte de la experiencia acumulada por YARD a K8S, para que K8S pueda alinearse con las capacidades originales de YARD, y luego se puedan usar todas las capacidades proporcionadas por YARD original. En el tercer paso, tenemos que aprovechar al máximo las capacidades de K8S, porque proporcionamos los dos primeros pasos proporcionados por YARD. En el tercer paso, debemos aprovechar al máximo las capacidades de K8S, que se refleja principalmente en costo y eficiencia.

Completamos los primeros dos pasos antes de 2020. A partir de la segunda mitad de 2020, comenzamos a usar K8S a gran escala y en 2021 ingresamos al tercer paso. Desde el punto de vista actual, nuestro costo y eficiencia de investigación se han mejorado aún más, en comparación con el YARD original. Desde la perspectiva de la nube en un sentido amplio, el equipo de WeChat también tiene un evento histórico en la promoción de la máquina virtual CVM antes, es decir, el equipo de almacenamiento también ha hecho un gran avance en la nube, porque WeChat siempre ha utilizado el In the self -desarrollado sistema de almacenamiento, hemos experimentado muchos diferentes DB (base de datos, base de datos) y KV (clave-valor, un tipo de sistema de base de datos) en los últimos diez años, y finalmente nos dimos cuenta de la capacidad de almacenamiento en la nube en la versión de infinityKV. En la segunda mitad de 2020, se lanzará infinityKV y aproximadamente el 80 % de los datos en el fondo de WeChat se almacenarán en el nuevo sistema de infinityKV.

Esta es la nube WeChat (proceso) que mencioné, es decir, hay varios pasos (proceso) para mover el elefante al refrigerador.

Edsel Wang introdujo además las limitaciones emergentes de YARD. En 2014, la definición de plataforma en la nube de la industria no estaba muy clara. Por otro lado, el entorno de hardware de Tencent era bastante diferente del entorno actual de hardware en la nube. YARD se desarrolló y diseñó en ese entorno de hardware en ese momento, lo que provocó que careciera de algunas capacidades básicas, como la virtualización de discos y tarjetas de red.

En un principio, el problema de la prueba de estrés que se produjo durante el desarrollo propio y la migración a la nube de WeChat estaba ubicado en la tarjeta de red. La razón era que Tencent Cloud usaba un nuevo modelo en ese momento, y el sistema operativo y el hardware de CVM no eran bien adaptado.

Finalmente, el equipo de arquitectura técnica de WeChat resolvió temporalmente el problema de que la carga de la CPU era pequeña, pero el rendimiento de la tarjeta de red se vio obstaculizado por el método de salvar el país a través de una curva. En pocas palabras, si la CPU del servidor original tiene 180 núcleos y 90 núcleos están equipados con 1 tarjeta de red después del corte, el resultado es que la tarjeta de red está completamente cargada y la carga de la CPU es solo del 20%. El equipo de arquitectura técnica de WeChat volvió a segmentar el núcleo de la CPU y lo cambió a 48 núcleos de CPU correspondientes a una tarjeta de red, de modo que la carga de la CPU sea más de la mitad y la carga de la tarjeta de red no sea un cuello de botella mientras se aprovecha al máximo el rendimiento.

Esta es una solución a los síntomas, esta es una solución a los síntomas y la solución a la causa raíz es CVM para optimizar el programador de la tarjeta de red. La optimización del programador de tarjetas de red CVM y la migración a K8S permite que el fondo de WeChat controle el tráfico de la red de manera más efectiva, mejorando aún más la flexibilidad y la estabilidad de la implementación del fondo de WeChat.

El cambio no da miedo, el miedo es no cambiar

En 2013, WeChat experimentó su interrupción más larga. Debido a que una excavadora rompió el cable óptico de comunicación, las solicitudes comerciales del Centro de procesamiento de datos de China Oriental se dirigieron al sur y norte de China, lo que provocó la paralización de los servicios de WeChat durante más de cinco horas.

Desde entonces, cuando se implementó la arquitectura YARD al año siguiente, WeChat cumplió una función importante: dar soporte a los tres campus. Es decir construir tres salas de cómputo (parques) en cada ciudad, la red y potencia de las salas de cómputo son independientes, aunque se corte una de las fibras ópticas, hay otras dos como apoyo.

Este es el concepto común de "redundancia" en las implementaciones de servidores en la actualidad.

Ahora, después del autodesarrollo y de pasar a la nube, no solo se virtualizan los recursos del servidor, sino que la nueva arquitectura K8S puede ir más allá. Los recursos del servidor pertenecen a toda la empresa Tencent. Esto es como un préstamo. Anteriormente, WeChat tomaba prestado de las sucursales municipales, pero ahora toma prestado de las oficinas centrales provinciales.

En los 11 años de historia de WeChat hasta el momento, la definición de WeChat también cambia constantemente. Los momentos, los sobres rojos de WeChat, los pequeños programas, las cuentas de video y otras funciones basadas en nodos amplían una y otra vez la definición de WeChat: es una red social, una herramienta de pago y una plataforma de contenido.

El soporte del servidor detrás de WeChat también se enfrenta a un proceso en constante cambio.

Más temprano, la primera nevada en Beijing provocó que los usuarios locales enviaran amigos desesperadamente, lo que también condujo a un aumento instantáneo en la demanda del servidor. En este momento, era necesario responder rápidamente para expandir la capacidad.

Sin embargo, los cambios climáticos y los comportamientos de los usuarios en un lugar determinado son impredecibles. Es inevitable enviar colectivamente sobres rojos a las cero en punto en el Festival de Primavera y la víspera de Año Nuevo, y hay muchos eventos inevitables similares. Por ejemplo, el concierto de Jay Chou El número de video se transmite en vivo y decenas de millones de espectadores tienen razón. Es una gran prueba para el servidor de WeChat, pero se puede probar e implementar con anticipación.

Al recordar una transmisión en vivo en septiembre del año pasado, Bok Zhou, el ingeniero de desarrollo de back-end de la cuenta de video, todavía se sentía emocionado.

Dijo que gracias a las ventajas después de ir a la nube, el equipo de WeChat también puede lanzar más recursos del servidor más rápido ante este aumento inesperado en el tráfico, evitando que algunos usuarios no puedan ver la transmisión en vivo.

La autoinvestigación y la migración a la nube también es un proceso a largo plazo y en constante cambio, y las ventajas se irán descubriendo poco a poco. Ahora no es el final de este proceso, pero algunas ventajas y visiones ya son predecibles.

Stephen Liu, jefe de arquitectura técnica de WeChat, dijo:

Compartí un punto de vista con el equipo hace más de un año, y tomé como analogía los 5 niveles de conducción autónoma. El nivel 0 es la conducción humana sin ningún tipo de automatización. El nivel 1 tiene alguna asistencia de conducción, el nivel 2 es una asistencia de conducción más fuerte, el nivel 3 ya tiene un cierto grado de capacidad de conducción automática, y luego están el nivel 4 y el nivel 5.

Una de mis esperanzas es poder lograr la misma conducción automática en el futuro. En el futuro, cuando la Fiesta de la Primavera lo garantice, podrá ser conducido completamente por máquinas. Probablemente estábamos en el Nivel 0 hace unos años. Más tarde, después de YARD, fue el Nivel 1. Después de explorar las diversas capacidades de K8S a lo largo de 2021, creo que ahora deberíamos estar en un estado de Nivel 2. Espero poder alcanzar el Nivel 3 a continuación, con funciones de conducción automatizada relativamente completas.

En el invernadero de plástico del destino, cada repollo que ha sido rociado con demasiado pesticida alguna vez tuvo el sueño de convertirse en un vegetal orgánico libre de contaminación.

#Bienvenido a prestar atención a la cuenta oficial de WeChat de Aifaner: Aifaner (WeChat: ifanr), se le brindará más contenido emocionante lo antes posible.

Love Faner | Enlace original · Ver comentarios · Sina Weibo