Un grand changement inconnu derrière WeChat : comment « déplacent-ils l’éléphant dans le réfrigérateur » ?
À la mi-janvier 2020, moins d'une semaine avant la Fête du Printemps, Stephen Liu, le responsable de l'architecture technologique de WeChat, était très anxieux.Le réveillon du Nouvel An est la période la plus occupée de l'année pour les activités de WeChat, et des centaines de millions de les utilisateurs le seront en ce moment En envoyant les vœux du Nouvel An et les enveloppes rouges WeChat, les serveurs WeChat connaissent également un impact plus important d'année en année.
Afin de s'assurer que tout le monde peut recevoir les bénédictions du Nouvel An comme prévu et saisir les enveloppes rouges de WeChat, l'équipe technique de WeChat entre en mode "Spring Festival Guarantee" à la fin de chaque année pour effectuer des tests de résistance du serveur afin de s'assurer que WeChat ne tombe pas. la chaine.
Le moment le plus critique, problème très difficile
Mais dans la phase de test de ce Festival du Printemps, quelque chose s'est mal passé.
L'enveloppe rouge WeChat, qui est née en 2014, a connu un temps d'arrêt majeur pendant la Fête du Printemps cette année-là, et certains utilisateurs n'ont pas pu recevoir l'enveloppe rouge à un moment donné, ni voir le montant de l'enveloppe rouge. L'année suivante, WeChat a obtenu le droit d'interagir avec les publicités du gala de la fête du printemps. Le soir du Nouvel An cette année-là, le nombre total de paquets rouges WeChat envoyés et reçus en Chine a atteint 1,01 milliard de fois, et le nombre total de shakes WeChat pendant le gala de la fête du printemps a atteint 11 milliards de fois. Cette année, WeChat était bien préparé et généralement stable, avec des temps d'arrêt occasionnels à petite échelle.
Par conséquent, ce n'est pas un bon phénomène d'avoir des problèmes de test avant la Fête du Printemps.
Stephen Liu dit :
À cette époque, la valeur (cible) que nous voulions tester était probablement de milliards de messages envoyés par minute, mais le niveau de stress que nous avons mesuré n'était que la moitié de la cible, et ce n'était que deux semaines avant la Fête du Printemps.
Le soi-disant test de résistance consiste à étendre la capacité du serveur de WeChat en ligne. Une fois l'expansion terminée, effectuez une simulation agressive pour simuler les données de pointe à 0h00 le soir du Nouvel An pour voir combien cette année peut augmenter par rapport à l'année dernière, puis simulez complètement ce montant et appliquez-le au système.
Une compréhension simple est similaire à un site Web menant une attaque DDoS sur lui-même, testant combien de personnes peuvent accéder au site Web en même temps sans temps d'arrêt. Une compréhension plus populaire est que le restaurant récupère les clients. Les sièges et les chefs d'un restaurant ne peuvent recevoir que 100 invités en même temps hors saison. Cependant, en haute saison, il peut y avoir 300 invités qui ont besoin de manger. en même temps. A ce moment, il est nécessaire d'agrandir le restaurant à l'avance pour recruter des chefs. Similaire à "l'expansion", ou si cela ne fonctionne vraiment pas, laisser les clients faire la queue à l'extérieur.
Cependant, WeChat ne peut pas envoyer et recevoir de messages en file d'attente.
Le problème rencontré par l'équipe technique de WeChat et Stephen Liu semble cette fois avoir clairement agrandi le restaurant et embauché plus de chefs, mais en même temps seuls 150 invités peuvent être reçus, ce qui n'a pas atteint l'objectif de 300, et à ce moment , les chefs sont encore assez occupés et les sièges sont vides. C'était aussi très vide, et il y avait encore des gens qui faisaient la queue dehors.
L'équipe technique de WeChat a vérifié pendant environ une semaine ou deux avant, et a finalement localisé le problème : il y a un problème avec les performances de la carte réseau. Pour prendre un autre exemple, c'est comme si la réceptionniste à l'entrée du restaurant était paresseuse et ne faisait pas entrer les invités dans la salle, ce qui entraînait de l'insatisfaction dans le restaurant et de longues files d'attente de clients à l'extérieur.
Derrière le problème se cache un énorme changement inconnu de WeChat
La raison pour laquelle il n'y avait pas de problème avec le stress test les années précédentes, mais il y avait un problème avec le stress test cette année, implique un grand changement derrière WeChat : le cloud auto-développé.
Ce grand changement a commencé avec la révolution 930 de Tencent en 2018. Le 30 septembre 2018, Tencent a de nouveau procédé à un ajustement majeur de la structure de l'entreprise : les sept groupes commerciaux d'origine ont été réorganisés et intégrés, et le nouveau groupe commercial Cloud and Smart Industry ), plateforme avec le Content Business Group (PCG). Parmi eux, CSIG entreprend la grande vision de Tencent ToB, tandis que WeChat Business Group (WXG) connecte la plupart des utilisateurs finaux C.
Le cloud est déjà une activité pivot stratégique pour Tencent À partir de ce moment, l'auto-recherche et la migration de sa propre entreprise vers le cloud est devenue un enjeu important pour l'ajustement de l'entreprise, tandis que l'auto-recherche et la migration de l'activité WeChat vers le cloud priorité.
Avant la réforme de Tencent 930, Tencent ne fournissait pas d'infrastructure cloud unifiée pour son activité interne développée en interne, mais adoptait le modèle des serveurs de machines physiques. D'un point de vue macro, compte tenu du grand nombre d'utilisateurs et du volume d'activité de WeChat, la migration vers le cloud auto-développée peut apporter d'énormes avantages en termes de coût et d'efficacité, qui sont bénéfiques à la fois pour les entreprises WeChat et Tencent Cloud.
Mais au niveau microscopique, une entreprise impliquant plus d'un milliard d'utilisateurs doit subir un changement aussi radical et rendre les utilisateurs indifférents, comme si les roues d'une voiture à grande vitesse devaient être changées, la voiture ne peut pas s'arrêter, et même les roues ne peut pas être supplanté.
Le problème avec le test de pression précédent s'est produit lors du processus de remplacement de la roue.
En fait, il est en effet temps de remplacer les roues, a déclaré Stephen Liu :
En 2014, WeChat n'était qu'un département. A cette époque, lorsque l'entreprise a proposé une telle idée d'optimisation des coûts, nous étions assez nerveux, car il n'y avait pas beaucoup de monde dans le département à ce moment-là, il n'y avait qu'un seul département à ce moment-là, et il n'y avait que trois ou quatre cents personnes à cette époque. Avant 2014, toute la main-d'œuvre de WeChat était consacrée à l'itération fonctionnelle et au perfectionnement constant de nouvelles fonctions, de sorte qu'il y avait moins d'attention à la façon dont le serveur principal était utilisé, y compris à la qualité de l'architecture.
L'entreprise avait de nouveau cette exigence.Plus tard, l'entreprise s'est arrangée pour que les gens voient comment fonctionnait chaque département commercial et a finalement sélectionné des personnes très expérimentées. Par exemple, celui qui dirigeait l'équipe à l'époque était également le vice-président de l'entreprise, quoi qu'il en soit, j'ai été très impressionné car j'ai été approuvé par lui à plusieurs reprises. On dit que le coût de WeChat est très élevé et que votre serveur n'est pas bien utilisé.
▲ Rapport précédent de WeChat PPT
Cette exigence de réduction des coûts et d'augmentation de l'efficacité a incité l'équipe WeChat à optimiser pour la première fois l'architecture du serveur et a adopté à cette époque une architecture système appelée YARD.
Cependant, cette fois, la plate-forme cloud auto-développée doit être cohérente avec Tencent et l'architecture système open source K8S est adoptée.Par rapport à YARD, l'architecture K8S est plus ouverte et présente des avantages inhérents à l'adaptation à l'intelligence artificielle et au big data cadres. Aujourd'hui, de nombreuses fonctions de WeChat sont liées à l'intelligence artificielle et au big data, telles que la voix en texte et la traduction de texte.
En d'autres termes, en 2014, WeChat a adopté l'architecture YARD dans un but très simple, qui était d'aider à planifier de manière flexible les ressources du serveur et à réduire les coûts. Il n'envisageait pas plus de complexité et à plus long terme, et K8S n'était pas open source à l'époque.
Au fur et à mesure que le développement commercial progresse, les avantages de l'architecture K8S l'emportent progressivement sur la douleur de la migration de l'architecture, qui coïncide avec la transformation commerciale de Tencent, et ce changement est impératif.
Edsel Wang, un ingénieur en infrastructure de WeChat, a expliqué à Aifaner les macro-étapes de l'auto-développement de WeChat et de la migration vers le cloud :
Pour l'équipe WeChat, la migration vers le cloud peut être divisée en deux niveaux : étroit et large. Au sens étroit, passer au cloud est la réforme 930 en 2018. Après la réforme 930 de l'entreprise, l'entreprise a promu l'auto-recherche et la migration vers le cloud, puis WeChat a commencé à utiliser l'infrastructure cloud unifiée fournie par l'entreprise. Au sens large, passer au cloud signifie que WeChat a progressivement rendu l'ensemble du modèle de R&D natif du cloud. Cela n'inclut pas simplement le déplacement de certains services back-end de la machine physique d'origine vers le cloud. Bien sûr, cela inclut également le intégration de l'ensemble du processus de R&D avec le cloud.
Après la réforme 930 en 2018, la promotion par l'entreprise de l'auto-recherche et de la migration vers le cloud est passée par deux étapes jusqu'à présent. La première étape est de 2018 à 2020. L'entreprise a principalement changé la façon de fournir des serveurs, c'est-à-dire de la fourniture initiale de machines physiques à CVM (Cloud Virtual Machine, machine virtuelle cloud). La deuxième étape commence à partir de 2020. L'entreprise demande en outre à chaque service commercial de changer certains systèmes de planification interne en K8S.Pour nous, il s'agit de migrer de YARD vers K8S. Dans la première étape, de la machine physique d'origine à l'utilisation de CVM, depuis que nous avons conçu YARD comme sa couche de planification, notre travail principal est de faire en sorte que YARD s'adapte au cloud, car YARD supportait à l'origine les machines physiques, Maintenant que YARD supporte CVM virtuel machines, la couche métier n'a pas besoin de beaucoup changer.
Dans un second temps, pour l'équipe WeChat, il s'agit d'utiliser K8S, c'est-à-dire de remplacer la plateforme YARD auto-développée par les capacités d'ordonnancement du cluster K8S fournies par Tencent Cloud. Pour rendre cette migration plus fluide, nous avons prévu trois étapes dans le processus de remplacement de YARD par K8S. La première étape consiste à résoudre le problème de savoir si WeChat peut fonctionner sur K8S et si le programme peut fonctionner dessus. La deuxième étape consiste à transplanter une partie de l'expérience accumulée par YARD sur K8S, afin que K8S puisse être aligné sur les capacités d'origine de YARD, puis toutes les capacités fournies par le YARD d'origine puissent être utilisées. Dans la troisième étape, nous devons faire jouer pleinement les capacités de K8S, car nous avons fourni les deux premières étapes fournies par YARD. Dans la troisième étape, nous devons tirer pleinement parti des capacités de K8S, ce qui se reflète principalement dans coût et efficacité.
Nous avons terminé les deux premières étapes avant 2020. A partir du second semestre 2020, nous avons commencé à utiliser K8S à grande échelle, et en 2021, nous sommes entrés dans la troisième étape. Du point de vue actuel, notre coût et notre efficacité de recherche ont été encore améliorés par rapport au YARD d'origine. Du point de vue du cloud au sens large, l'équipe WeChat a également un événement marquant dans la promotion de la machine virtuelle CVM auparavant, c'est-à-dire que l'équipe de stockage a également fait une percée dans le cloud, car WeChat a toujours utilisé le In the self -Système de stockage développé, nous avons expérimenté de nombreux DB différents (base de données, base de données) et KV (clé-valeur, une sorte de système de base de données) au cours des dix dernières années, et avons finalement réalisé la capacité de stockage en nuage dans la version d'infinityKV. Au cours du second semestre 2020, infinityKV sera lancé et environ 80% des données en arrière-plan WeChat sont stockées dans le nouveau système d'infinityKV.
C'est le nuage WeChat (processus) que j'ai mentionné, c'est-à-dire qu'il y a plusieurs étapes (processus) pour déplacer l'éléphant dans le réfrigérateur.
Edsel Wang a en outre présenté les limitations progressivement émergentes de YARD.En 2014, la définition de la plate-forme cloud n'était pas très claire.D'autre part, l'environnement matériel de Tencent était assez différent de l'environnement matériel cloud actuel. YARD a été développé et conçu dans cet environnement matériel à l'époque, ce qui lui a fait manquer certaines fonctionnalités de base telles que la virtualisation des disques et des cartes réseau.
Au début, le problème de test de résistance survenu lors de l'auto-développement et de la migration de WeChat vers le cloud était localisé dans la carte réseau.La raison était que Tencent Cloud utilisait un nouveau modèle à l'époque, et que le système d'exploitation et le matériel CVM n'étaient pas bien adapté.
Enfin, l'équipe d'architecture technique de WeChat a temporairement résolu le problème de la faible charge du processeur, mais les performances de la carte réseau étaient entravées par la méthode consistant à sauver le pays via une courbe. Pour le dire simplement, si le processeur du serveur d'origine a 180 cœurs et que 90 cœurs sont équipés d'une carte réseau après le découpage, le résultat est que la carte réseau est complètement chargée et que la charge du processeur n'est que d'environ 20 %. L'équipe d'architecture technique de WeChat a re-segmenté le cœur du processeur et l'a changé en 48 cœurs de processeur correspondant à une carte réseau, de sorte que la charge du processeur soit supérieure à la moitié et que la charge de la carte réseau ne soit pas un goulot d'étranglement tout en utilisant pleinement les performances.
C'est une solution aux symptômes, c'est une solution aux symptômes, et la solution à la cause première est CVM pour optimiser le planificateur de carte réseau. L'optimisation du planificateur de carte réseau CVM et la migration vers K8S permettent à l'arrière-plan WeChat de contrôler plus efficacement le trafic réseau, améliorant encore la flexibilité et la stabilité du déploiement de l'arrière-plan WeChat.
Le changement n'est pas effrayant, effrayant ne change pas
En 2013, WeChat a connu sa plus longue panne. Parce qu'une excavatrice a cassé le câble optique de communication, les demandes commerciales du Centre de traitement des données de l'Est de la Chine ont été tournées vers la Chine du Sud et la Chine du Nord, ce qui a entraîné la paralysie des services WeChat pendant plus de cinq heures.
Depuis lors, lorsque l'architecture YARD a été déployée l'année suivante, WeChat a rempli une fonction importante : le support des trois campus. C'est-à-dire construire trois salles informatiques (parcs) dans chaque ville.Le réseau et l'alimentation des salles informatiques sont indépendants.Même si une des fibres optiques est coupée, il y en a deux autres en support.
C'est le concept courant de "redondance" dans les déploiements de serveurs aujourd'hui.
Maintenant, après l'auto-développement et le passage au cloud, non seulement les ressources du serveur sont virtualisées, mais la nouvelle architecture K8S peut aller plus loin.Les ressources du serveur appartiennent à l'ensemble de la société Tencent. C'est comme un prêt. Auparavant, WeChat empruntait aux succursales municipales, mais maintenant il emprunte au siège provincial.
Au cours des 11 années d'histoire de WeChat jusqu'à présent, la définition de WeChat est également en constante évolution. Moments, enveloppes rouges WeChat, petits programmes, comptes vidéo et autres fonctions basées sur des nœuds élargissent encore et encore la définition de WeChat : c'est un réseau social, un outil de paiement et une plateforme de contenu.
Le support du serveur derrière WeChat est également confronté à un tel processus en constante évolution.
Auparavant, les premières neiges à Pékin poussaient désespérément les utilisateurs locaux à envoyer des amis, ce qui entraînait également une augmentation instantanée de la demande du serveur.À cette époque, il était nécessaire de réagir rapidement pour augmenter la capacité.
Cependant, le temps change et les comportements des utilisateurs à un certain endroit sont imprévisibles. Il est inévitable d'envoyer collectivement des enveloppes rouges à zéro heure le jour de la Fête du Printemps et du Nouvel An, et il existe de nombreux inévitables similaires. Par exemple, le concert de Jay Chou Le numéro de vidéo est diffusé en direct, et des dizaines de millions de téléspectateurs ont raison. C'est un énorme test du serveur WeChat, mais il peut être testé et déployé à l'avance.
Se souvenant d'une diffusion en direct en septembre de l'année dernière, Bok Zhou, l'ingénieur de développement back-end du compte vidéo, était toujours ravi.
Il a déclaré que grâce aux avantages après être passé au cloud, l'équipe WeChat peut également lancer plus de ressources serveur plus rapidement face à cette augmentation inattendue du trafic, empêchant certains utilisateurs de ne pas pouvoir regarder la diffusion en direct.
L'auto-recherche et la migration vers le cloud est également un processus à long terme et en constante évolution, et les avantages seront progressivement découverts.Ce n'est pas la fin de ce processus, mais certains avantages et visions sont déjà prévisibles.
Stephen Liu, responsable de l'architecture technique de WeChat, a déclaré :
J'ai partagé un point de vue avec l'équipe il y a plus d'un an, et j'ai pris les 5 niveaux de conduite autonome comme analogie. Le niveau 0 correspond à la conduite humaine sans aucune automatisation. Le niveau 1 a une certaine assistance à la conduite, le niveau 2 est une assistance à la conduite plus forte, le niveau 3 a déjà un certain degré de capacité de conduite automatique, puis il y a les niveaux 4 et 5.
L'un de mes espoirs est de pouvoir réaliser la même conduite automatique à l'avenir. À l'avenir, lorsque la fête du printemps garantira, elle pourra être entièrement pilotée par des machines. Nous étions probablement au niveau 0 il y a quelques années. Plus tard, après YARD, c'était le niveau 1. Après avoir exploré les différentes capacités de K8S tout au long de 2021, je pense que nous devrions être dans un état de niveau 2 maintenant. J'espère pouvoir atteindre le niveau 3 prochainement, avec des fonctions de conduite automatisée relativement complètes.
#Bienvenue pour prêter attention au compte WeChat officiel d'Aifaner : Aifaner (WeChat : ifanr), un contenu plus excitant vous sera apporté dès que possible.
Love Faner | Lien d'origine · Voir les commentaires · Sina Weibo