Cet article partage avec vous un sujet très intéressant sur les problèmes de haute concurrence dans le développement de Honor of Kings. J'espère qu'il pourra vous apporter des idées pour résoudre de tels problèmes. Apprenons ensemble l'analyse des problèmes de haute concurrence dans le développement de. Honneur des rois.
"Honor of Kings" est un jeu mobile de niveau national avec une énorme base d'utilisateurs et a maintenu une fréquence de mise à jour élevée. Dans ce scénario commercial, les rafales sont devenues très fréquentes. Cependant, l’expérience métier est cruciale et l’utilisation du CDN est essentielle. De même, il existe souvent des scénarios où la bande passante explose, comme les dernières vidéos d'actualité, les événements diffusés en direct à grande échelle, la sortie de films et de séries télévisées populaires, ainsi que la sortie de jeux et d'autres applications populaires. Dans le même temps, en raison de la mise à niveau rapide de la bande passante domestique et des réseaux mobiles, l'ampleur de la bande passante en rafale devient de plus en plus grande, atteignant souvent le niveau de la To, voire 10 To. Comment protéger les urgences commerciales rapidement et à faible coût est devenu un défi majeur pour CDN.
"Honor of Kings" est le jeu mobile le plus populaire en Chine. Il compte des centaines de millions d'utilisateurs et des dizaines de millions d'utilisateurs actifs quotidiens. Comment assurer les urgences commerciales rapidement et à faible coût ? Cet article part de ce problème, discute de la solution correspondante au problème et résume ses effets.
Contexte
En 2007, le CDN auto-construit de Tencent a été lancé et connecté à sa première entreprise, Tencent.com. Jusqu'à présent, la bande passante du CDN est passée de quelques dizaines de Go au plus tôt à des dizaines de To maintenant ; la bande passante des services individuels devient également de plus en plus grande, la bande passante constante de la plupart des services étant de plusieurs centaines de Go, et certains services en rafale. atteignant 10 To. La mise à niveau rapide du réseau, la croissance explosive des utilisateurs mobiles et l'essor des services vidéo, y compris les diffusions à la demande et en direct, ont rendu les rafales commerciales de plus en plus fréquentes, la bande passante des rafales est devenue de plus en plus élevée et les exigences en matière de CDN sont devenus de plus en plus élevés.
Bénéficiant du développement fulgurant de l'activité de Tencent, le CDN auto-construit a successivement soutenu les activités internes de Tencent telles que le téléchargement de jeux, l'accélération du streaming vidéo et les enveloppes rouges de la Fête du Printemps en 2014, Tencent a ouvert l'intégralité du CDN ; capacités et est devenu un produit Tencent Cloud CDN , en plus de réaliser des activités internes, il a également commencé à se connecter à des clients tiers, tels que Kuaishou à la demande, Douyu Live, etc. Tous les services ci-dessus comportent des scénarios d'urgence et des exigences de coûts élevées. Tencent CDN a accumulé une riche expérience dans la manière de garantir les urgences commerciales à faible coût. Ensuite, nous analyserons les défis et les problèmes, les solutions et les effets.
1. Défis et problèmes
Ce qui suit commencera par les caractéristiques de l'entreprise et analysera les défis et problèmes actuels.
1. Caractéristiques et défis de l'entreprise
Les scénarios diversifiés du CDN sont voués à être pleins de défis en cas d'urgence. Les services en rafale se caractérisent par un volume important, des scénarios divers et une irrégularité.
a) Grand volume : la plupart de la bande passante du service en rafale dépasse la To, et certaines atteignent même 10 T
b) Scénarios diversifiés : drames chauds et points chauds d'actualité à la demande ; tels que LOL/KPL/DOTA2, sports en direct tels que NBA/Coupe du Monde, diffusion en direct d'émissions de variétés telles que des concerts ; diffusion en direct de jeux tels que Honor of Kings dans les activités de téléchargement d'applications, promotions de commerce électronique, etc. dans l'accélération de pages Web statiques ;
c) Irrégulier : certains événements inattendus sont imprévisibles et vous ne le saurez que lorsque l'événement est sur le point de commencer ou qu'il a déjà commencé, comme les dernières nouvelles.
Il est de grande taille et doit préparer plus de ressources ; les scénarios sont divers et différents besoins en ressources doivent être satisfaits et l'irrégularité impose des exigences élevées à notre efficacité d'expansion ;
2. Problèmes actuels
Réserver une grande quantité de ressources juste pour répondre à des besoins soudains de l'entreprise est trop coûteux et entraînera un énorme gaspillage de ressources. Les ressources sont donc généralement réutilisées pour faire face aux urgences commerciales. Cependant, la réutilisation directe des ressources pose deux problèmes :
a) Seules certaines ressources peuvent être réutilisées : les entreprises CDN distinguent généralement les plates-formes et l'utilisation des ressources par type d'entreprise. La raison principale est que différents types d'entreprises ont des besoins en ressources différents. . Par exemple, la catégorie à la demande nécessite plus de stockage ; la catégorie de page statique avec plus de requêtes https nécessite plus de ressources CPU. Cette limitation empêche les ressources d’être pleinement utilisées et rend la préparation des ressources plus difficile. Par exemple, les rafales vidéo utilisent principalement des tampons vidéo, mais les tampons de téléchargement et de page Web ne peuvent pas être utilisés directement, ce qui limite la taille du tampon. Même si le même type de ressources est réutilisé, car cela implique la coordination de plusieurs ressources métiers, le temps de préparation dépassera généralement deux jours, ce qui ne permet pas de faire face aux urgences temporaires
b) Impossible de réduire les coûts : En ; De plus, pour certains services soudains, comme pour le téléchargement d'applications de jeux, la bande passante culmine le matin et à midi. Si seules les ressources de cette plateforme sont utilisées, la bande passante de règlement augmentera considérablement, augmentant ainsi les coûts. Les caractéristiques des heures creuses avec d’autres services ne peuvent pas être utilisées pour réduire la bande passante de règlement.
2. Solution
Tencent Cloud CDN réutilise les ressources existantes grâce à la virtualisation, crée un pool de rafales commun à tous les services et toutes les plates-formes partagent des tampons. Les appareils du pool de rafales sont des machines virtuelles Docker. Les machines virtuelles ont des spécifications différentes et peuvent être utilisées à la demande aussi longtemps que l'entreprise en a besoin. La réserve de bande passante dans le pool de rafales atteint 10 To, ce qui peut essentiellement répondre à tous les besoins de rafale de l'entreprise. Si une entreprise a une demande soudaine, grâce à l'interface de liste automatisée, le pool de rafales de 10 To peut être étendu en 10 minutes.
Architecture du système Burst Pool
a) Burst pool : Sur la couche supérieure de la machine physique de chaque plateforme, un pool de ressources composé de machines virtuelles Docker, qui contrôle le CPU/mémoire /disk, etc. L’utilisation est restreinte pour éviter tout impact sur les machines physiques. L'activité d'origine est toujours déployée sur la machine physique et n'a pas besoin d'être ajustée.
b) Système de déploiement et de surveillance automatisé : peut automatiquement prédire la demande et augmenter la capacité en fonction des besoins réels de l'entreprise. Tous les besoins soudains peuvent être étendus en 10 minutes. Pour les services à la demande/téléchargement, les fichiers chauds sont automatiquement distribués pour réduire la bande passante de retour à la source.
c) Système de planification : la nature soudaine et le grand volume de services soudains rendent les trains directs plus avantageux que les systèmes de répartition des noms de domaine. Grâce à cela, la planification des trains est plus flexible et prend effet rapidement, atteignant le niveau infime.
Les machines virtuelles et les machines physiques sont déployées avec des agents de reporting, et les informations commerciales et la charge du serveur sont signalées au système de surveillance toutes les minutes. Le système de surveillance prédit une valeur basée sur la bande passante historique et la compare à la bande passante actuelle. Si la bande passante actuelle dépasse 50 % de la valeur prédite, on considère qu'il y a une rafale. Selon la proportion d'augmentation de la bande passante, le système étendra automatiquement l'équipement avec les données correspondantes du pool de rafales. Pour les activités inattendues préparées à l'avance, l'exploitation et la maintenance peuvent spécifier la demande de bande passante, puis le système calculera automatiquement la demande d'équipement et augmentera la capacité.
Les informations sur la charge du serveur signalées avec une granularité infime fournissent au système de surveillance une base pour prendre des décisions de planification. Le système déterminera si la machine virtuelle doit être activée ou désactivée à partir du train direct en fonction d'informations complètes telles que la bande passante restante de la salle informatique, la bande passante du serveur, le processeur et les E/S. Lors de l'accès, l'utilisateur demande d'abord au système de répartition des trains express. Le train express renverra une adresse 302 conformément à la politique de planification. L'adresse 302 est l'adresse réelle de la ressource CDN. L'utilisateur accède à l'adresse 302 et obtient le contenu réel.
2. Optimisation technique
La condition préalable importante à l'utilisation de la technologie de virtualisation pour réutiliser les ressources est qu'elle n'affecte pas les entreprises existantes. Cela nécessite une isolation suffisante des ressources, telles que l'utilisation du processeur/disque et de la bande passante. Voici plusieurs problèmes et solutions au cours du processus de mise en œuvre :
● Contrôler avec précision la charge d'une seule machine : une charge excessive affectera la qualité du service et un contrôle précis de la charge d'une seule machine est nécessaire. .
Solution :
a) Système de quota : il existe un système de quota dans le train direct, qui limite les ressources que chaque machine virtuelle peut utiliser, y compris le CPU/IO et la bande passante. Les informations rapportées dans le système de surveillance, combinées au système de quotas, peuvent garantir que la charge du serveur est limitée à la plage spécifiée, avec une granularité en minutes.
b) Certaines requêtes renvoient 302 : après avoir limité le CPU/bande passante/IO, etc., l'application peut déterminer si elle doit traiter une requête en temps réel en fonction de la charge actuelle de la machine hôte. Si le chargement est dans la limite, il sera traité directement ; si le chargement dépasse la limite, 302 sera renvoyé, permettant à l'utilisateur de passer à l'adresse d'expédition du train direct. Cela peut contrôler avec précision le chargement sans affecter le service. qualité autant que possible. Le contrôle de la charge en temps réel au niveau du programme constitue un complément efficace au système de quotas.
c) Contrôle du flux de la carte réseau : dans les cas extrêmes, si la bande passante de l'entreprise dépasse le seuil défini, la carte réseau virtuelle supprimera activement les paquets pour éviter d'affecter la machine hôte.
● Limiter la taille du disque : Docker ne peut pas limiter la taille du disque au niveau du fichier/répertoire dans le système de fichiers ext3/ext4.
Solution :
Étant donné que l'activité Tencent Cloud CDN utilise essentiellement le système de fichiers ext3/ext4, dans ce cas, Docker ne peut restreindre les disques qu'en fonction des utilisateurs ou des groupes d'utilisateurs, mais maintenant tous les services réseau sont utilisés directement dans l'environnement racine. Ici, nous utilisons un périphérique de boucle pour résoudre le problème de limitation de la taille du disque. Les services Burst de la machine virtuelle utilisent le répertoire monté sur le périphérique en boucle, ce qui peut indirectement limiter la taille du disque et empêcher l'utilisation d'un trop grand nombre de disques d'affecter d'autres services.
● Liaison du processeur : la valeur par défaut est de lier tous les processeurs. Une charge élevée sur certains processeurs uniques affectera l'activité de la machine mère.
Solution :
Utilisez un script pour collecter toutes les charges de processeur uniques du système chaque minute afin d'éviter des ajustements fréquents et d'être affecté par des données de problèmes, la valeur moyenne de 15 minutes est prise. . Enfin, certains cœurs moins chargés sont sélectionnés et liés dynamiquement via le fichier de configuration cpuset.cpus pour minimiser l'impact de la machine virtuelle sur l'activité de la machine hôte et utiliser pleinement les ressources.
Après la mise en ligne du pool de rafales, il a pris en charge efficacement de nombreux événements en rafale à grande échelle tels que les téléchargements de King of Glory, les diffusions en direct de la NBA, les diffusions en direct des matchs KPL/LPL, etc., économisant 20 millions de yuans de coûts. En partageant les tampons, la création d'un pool de rafales peut améliorer considérablement les capacités de rafale et réduire les coûts.
Résumé
Tencent Cloud CDN utilise la technologie Docker pour réutiliser les ressources et créer un pool de rafales au niveau de la To. Il peut prendre en charge diverses rafales commerciales telles que la diffusion en direct, à la demande et statique. peut détecter automatiquement l'entreprise. L'expansion des ressources peut être réalisée en 10 minutes en cas de demande soudaine, avec les caractéristiques d'une libération rapide et d'un faible coût. La réutilisation des ressources peut améliorer l'utilisation des ressources et fournir un énorme pool de services. Cependant, il est important de noter que les services multiplexés ne peuvent pas s'influencer mutuellement. Cela nécessite une surveillance en temps réel du serveur et une planification en temps opportun. Il existe également certains domaines à améliorer, tels que les paramètres du noyau basés sur l'isolation des conteneurs pour faciliter le réglage de différents services ; certains clients professionnels ne prennent pas en charge les sauts 302 et le système de planification doit prendre en charge la planification des noms de domaine.
Recommandations associées :
Résoudre les problèmes de concurrence élevée dans le développement Web
Résumé des solutions à haute concurrence pour les conflits de fichiers en lecture et écriture PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!