Heim >Backend-Entwicklung >PHP-Tutorial >Analyse zu Problemen mit hoher Parallelität bei der Entwicklung von King of Glory
Dieser Artikel teilt Ihnen ein sehr interessantes Thema über Probleme mit hoher Parallelität bei der Entwicklung von Honor of Kings. Ich hoffe, er kann Ihnen Ideen zur Lösung solcher Probleme bringen Ehre der Könige.
„Honor of Kings“ ist ein Handyspiel auf nationaler Ebene mit einer riesigen Benutzerbasis und einer hohen Aktualisierungsfrequenz. In diesem Geschäftsszenario kommt es sehr häufig zu Ausbrüchen. Geschäftserfahrung ist jedoch von entscheidender Bedeutung und der Einsatz von CDN ist unerlässlich. Ebenso kommt es häufig zu Bandbreitenausbrüchen, etwa bei aktuellen Nachrichtenvideos, großen Live-Übertragungen, der Veröffentlichung beliebter Filme und Fernsehserien sowie der Veröffentlichung beliebter Spiele und anderer Anwendungen. Gleichzeitig wird aufgrund der raschen Modernisierung der Heimbandbreite und der Mobilfunknetze die Größe der Burst-Bandbreite immer größer und erreicht häufig das Tb-Niveau oder sogar 10 Tb. Der schnelle und kostengünstige Schutz vor geschäftlichen Notfällen ist für CDN zu einer großen Herausforderung geworden.
„Honor of Kings“ ist das beliebteste Handyspiel in China. Es hat Hunderte Millionen Benutzer und zig Millionen täglich aktive Benutzer. Wie kann man geschäftliche Notfälle schnell und kostengünstig sicherstellen? Dieser Artikel geht von diesem Problem aus, diskutiert die entsprechende Lösung des Problems und fasst seine Auswirkungen zusammen.
Hintergrund
Im Jahr 2007 wurde Tencents selbst entwickeltes CDN gestartet und mit dem ersten Unternehmen Tencent.com verbunden. Bisher ist die CDN-Bandbreite von frühestens mehreren Dutzend GB auf jetzt mehrere zehn TB angewachsen. Auch die Bandbreite einzelner Dienste wird immer größer, wobei die konstante Bandbreite der meisten Dienste mehrere hundert GB und einiger Burst-Dienste beträgt 10 TB erreichen. Die schnelle Modernisierung des Netzwerks, das explosionsartige Wachstum mobiler Benutzer und die Zunahme von Videodiensten, einschließlich On-Demand- und Live-Übertragungen, haben dazu geführt, dass Business-Bursts immer häufiger werden, die Burst-Bandbreite immer höher wird und die Anforderungen an CDN immer höher werden sind immer höher geworden.
Das selbst aufgebaute CDN profitierte von der boomenden Geschäftsentwicklung von Tencent und unterstützte sukzessive die internen Geschäfte von Tencent wie Spiele-Downloads, Streaming-Videobeschleunigung und rote Umschläge für das Frühlingsfest Funktionen und wurde zu einem Tencent Cloud CDN-Produkt. Neben der Abwicklung interner Geschäfte hat es auch begonnen, Verbindungen zu Drittkunden wie Kuaishou On-Demand, Douyu Live usw. herzustellen. Für alle oben genannten Dienste gelten Notfallszenarien und hohe Kostenanforderungen. Tencent CDN verfügt über umfassende Erfahrung darin, geschäftliche Notfälle zu geringen Kosten sicherzustellen. Als nächstes analysieren wir die Herausforderungen und Probleme, Lösungen und Auswirkungen.
1. Herausforderungen und Probleme
Im Folgenden wird mit den Geschäftsmerkmalen begonnen und die aktuellen Herausforderungen und Probleme analysiert.
1. Geschäftsmerkmale und Herausforderungen
Die vielfältigen Szenarien von CDN sind voller Herausforderungen für unerwartete Dienste. Burst-Dienste zeichnen sich durch großes Volumen, vielfältige Szenarien und Unregelmäßigkeiten aus.
a) Großes Volumen: Der Großteil der Burst-Dienstbandbreite übersteigt Tb, und einige erreichen sogar 10T; b) Abwechslungsreiche Szenarien: heiße Dramen und Nachrichten-Hotspots auf Abruf; wie LOL/KPL/DOTA2, Live-Sportarten wie NBA/World Cup, Live-Übertragung von Varieté-Shows wie Konzerten; Live-Übertragung von Spielen wie „Honor of Kings“ in App-Downloads, E-Commerce-Werbeaktionen usw. bei statischer Webseitenbeschleunigung;
c) Unregelmäßig: Einige unerwartete Ereignisse sind unvorhersehbar und Sie werden es erst wissen, wenn das Ereignis beginnt oder bereits begonnen hat, wie z. B. aktuelle Nachrichten.
Es ist groß und muss mehr Ressourcen bereitstellen; die Szenarien sind vielfältig und es müssen unterschiedliche Ressourcenanforderungen erfüllt werden, und die Unregelmäßigkeit stellt hohe Anforderungen an unsere Expansionseffizienz.
2. Aktuelle Probleme
Eine große Menge an Ressourcen zu reservieren, nur um plötzliche Geschäftsanforderungen zu erfüllen, ist zu teuer und führt zu einer enormen Ressourcenverschwendung. Daher werden Ressourcen im Allgemeinen wiederverwendet, um geschäftliche Notfälle zu bewältigen. Allerdings gibt es zwei Probleme bei der direkten Wiederverwendung von Ressourcen:
a) Nur einige Ressourcen können wiederverwendet werden: CDN-Geschäfte unterscheiden im Allgemeinen Plattformen und Ressourcennutzung nach Geschäftstyp. Der Hauptgrund dafür ist, dass verschiedene Geschäftstypen unterschiedliche Ressourcenanforderungen haben Beispielsweise erfordert die Kategorie „On-Demand“ mehr Speicherplatz; Diese Einschränkung verhindert, dass Ressourcen vollständig genutzt werden, und erschwert die Ressourcenvorbereitung. Beispielsweise verwenden Video-Bursts hauptsächlich Videopuffer, Download- und Webseitenpuffer können jedoch nicht direkt verwendet werden, was die Größe des Puffers begrenzt. Selbst wenn die gleiche Art von Ressourcen wiederverwendet wird, beträgt die Vorbereitungszeit im Allgemeinen mehr als zwei Tage, da dies die Koordination mehrerer Geschäftsressourcen erfordert, was vorübergehende Notfälle nicht bewältigen kann.
b) Kosten können nicht gesenkt werden: In Darüber hinaus kommt es bei einigen plötzlichen Diensten, wie z. B. beim Herunterladen von Spieleanwendungen, morgens und mittags zu Spitzenwerten. Wenn nur die Ressourcen dieser Plattform genutzt werden, erhöht sich die Abrechnungsbandbreite erheblich, wodurch die Kosten steigen. Die Besonderheiten der Randzeiten anderer Dienste können nicht zur Reduzierung der Abrechnungsbandbreite genutzt werden.
2. Lösung
Tencent Cloud CDN nutzt vorhandene Ressourcen durch Virtualisierung wieder, um einen gemeinsamen Burst-Pool für alle Dienste aufzubauen, und alle Plattformen teilen sich den Puffer. Die Geräte im Burst-Pool sind virtuelle Docker-Maschinen. Die virtuellen Maschinen haben unterschiedliche Spezifikationen und können bei Bedarf verwendet werden, solange das Unternehmen sie benötigt. Die Bandbreitenreserve im Burst-Pool erreicht 10 TB, was im Grunde alle geschäftlichen Burst-Anforderungen erfüllen kann. Wenn ein Unternehmen plötzlich Nachfrage hat, kann der 10-TB-Burst-Pool mit der automatisierten Listing-Schnittstelle in 10 Minuten erweitert werden.
Burst-Pool-Systemarchitektur
a) Burst-Pool: Auf der oberen Ebene der physischen Maschine jeder Plattform ein Ressourcenpool bestehend aus virtuellen Docker-Maschinen, der CPU/Speicher steuert /disk usw. Die Verwendung ist eingeschränkt, um Auswirkungen auf physische Maschinen zu verhindern. Das ursprüngliche Geschäft wird weiterhin auf der physischen Maschine bereitgestellt und muss nicht angepasst werden.
b) Automatisiertes Bereitstellungs- und Überwachungssystem: Kann die Nachfrage automatisch vorhersagen und die Kapazität basierend auf den tatsächlichen Geschäftsanforderungen erweitern. Alle plötzlichen Bedürfnisse können innerhalb von 10 Minuten erweitert werden. Bei On-Demand-/Download-Diensten werden Hot-Dateien automatisch verteilt, um die Return-to-Source-Bandbreite zu reduzieren.
c) Planungssystem: Die plötzliche Natur und das große Volumen plötzlicher Dienste machen Durchgangszüge vorteilhafter als Domainnamen-Versandsysteme. Durch die Zugplanung ist die Planung flexibler und greift schnell und erreicht die Minutenebene.
Virtuelle Maschinen und physische Maschinen werden mit Berichtsagenten bereitgestellt, und Geschäftsinformationen und Serverlast werden jede Minute an das Überwachungssystem gemeldet. Das Überwachungssystem prognostiziert einen Wert basierend auf der historischen Bandbreite und vergleicht ihn mit der aktuellen Bandbreite. Wenn die aktuelle Bandbreite 50 % des vorhergesagten Werts überschreitet, wird davon ausgegangen, dass ein Burst vorliegt. Entsprechend dem Anteil der Bandbreitenerhöhung erweitert das System die Geräte automatisch mit entsprechenden Daten aus dem Burst-Pool. Für unerwartete Aktivitäten, die im Voraus vorbereitet werden, können Betrieb und Wartung den Bandbreitenbedarf festlegen, woraufhin das System automatisch den Gerätebedarf berechnet und die Kapazität erweitert.
Die in Minutenauflösung gemeldeten Informationen zur Serverauslastung bilden eine Grundlage für das Überwachungssystem, um Planungsentscheidungen zu treffen. Das System bestimmt anhand umfassender Informationen wie der verbleibenden Bandbreite des Computerraums, der Serverbandbreite, der CPU und der E/A, ob die virtuelle Maschine im Durchgangszug aktiviert oder deaktiviert werden muss. Beim Zugriff fordert der Benutzer zunächst das Expresszug-Dispositionssystem an. Der Expresszug gibt gemäß der Planungsrichtlinie eine 302-Adresse zurück. Der Benutzer springt zur 302-Adresse und erhält den eigentlichen Inhalt.
2. Technische Optimierung
Die wichtige Voraussetzung für den Einsatz von Virtualisierungstechnologie zur Wiederverwendung von Ressourcen ist, dass sie keine Auswirkungen auf bestehende Unternehmen hat. Dies erfordert eine ausreichende Isolierung von Ressourcen wie CPU/Festplatte und Bandbreitennutzung. Im Folgenden sind mehrere Probleme und Lösungen während des Implementierungsprozesses aufgeführt:
● Genaue Steuerung der Auslastung einer einzelnen Maschine: Eine übermäßige Auslastung beeinträchtigt die Qualität des Dienstes und eine genaue Steuerung der Auslastung einer einzelnen Maschine ist erforderlich .
Lösung:
a) Quotensystem: Im Expresszug gibt es ein Quotensystem, das die Ressourcen begrenzt, die jede virtuelle Maschine nutzen kann, einschließlich CPU/IO und Bandbreite. Die im Überwachungssystem gemeldeten Informationen können in Kombination mit dem Quotensystem sicherstellen, dass die Serverlast mit einer Granularität von Minuten auf den angegebenen Bereich begrenzt wird.
b) Einige Anfragen geben 302 zurück: Nach der Begrenzung von CPU/Bandbreite/IO usw. kann die Anwendung anhand der aktuellen Auslastung des Host-Computers bestimmen, ob eine Anfrage in Echtzeit verarbeitet werden soll. Wenn die Ladung innerhalb des Grenzwerts liegt, wird sie direkt verarbeitet. Wenn die Ladung den Grenzwert überschreitet, wird 302 zurückgegeben, sodass der Benutzer zur Versandadresse des Durchgangszugs springen kann. Dadurch kann die Ladung genau gesteuert werden, ohne den Dienst zu beeinträchtigen Qualität so weit wie möglich. Die Echtzeitsteuerung der Auslastung auf Programmebene ist eine wirksame Ergänzung zum Quotensystem.
c) Netzwerkkarten-Flusskontrolle: In extremen Fällen, wenn die Unternehmensbandbreite den festgelegten Schwellenwert überschreitet, verwirft die virtuelle Netzwerkkarte aktiv Pakete, um eine Beeinträchtigung des Host-Computers zu vermeiden.
● Festplattengröße begrenzen: Docker kann die Festplattengröße auf Datei-/Verzeichnisebene im ext3/ext4-Dateisystem nicht begrenzen.
Lösung:
Da das Tencent Cloud CDN-Geschäft grundsätzlich das ext3/ext4-Dateisystem verwendet, kann Docker in diesem Fall Festplatten nur basierend auf Benutzern oder Benutzergruppen einschränken, jetzt werden jedoch alle Netzwerkdienste verwendet direkt in der Root-Umgebung. Hier verwenden wir ein Loop-Gerät, um das Problem der Festplattengrößenbeschränkung zu lösen. Burst-Dienste in der virtuellen Maschine verwenden das auf dem Loop-Gerät bereitgestellte Verzeichnis, wodurch die Festplattengröße indirekt begrenzt und verhindert werden kann, dass die Verwendung zu vieler Festplatten andere Dienste beeinträchtigt.
● CPU-Bindung: Standardmäßig werden alle CPUs gebunden. Eine hohe Auslastung einiger einzelner CPUs beeinträchtigt das Geschäft der Muttermaschine.
Lösung:
Verwenden Sie ein Skript, um jede Minute alle einzelnen CPU-Lasten des Systems zu erfassen. Um häufige Anpassungen und Beeinträchtigungen durch Glitch-Daten zu vermeiden, wird der Durchschnittswert von 15 Minuten verwendet . Schließlich werden einige Kerne mit geringerer Last ausgewählt und über die Konfigurationsdatei cpuset.cpus dynamisch gebunden, um die Auswirkungen der virtuellen Maschine auf das Geschäft der Hostmaschine zu minimieren und die Ressourcen voll auszunutzen.
Nachdem der Burst-Pool online ging, unterstützte er effizient viele große Burst-Events wie King of Glory-Downloads, NBA-Live-Übertragungen, KPL/LPL-Spiel-Live-Übertragungen usw. und sparte 20 Millionen Yuan an Kosten. Durch die gemeinsame Nutzung von Puffern kann der Aufbau eines Burst-Pools die Burst-Fähigkeiten erheblich verbessern und die Kosten senken.
Zusammenfassung
Tencent Cloud CDN nutzt die Docker-Technologie, um Ressourcen wiederzuverwenden und einen Burst-Pool auf Tb-Ebene aufzubauen. Es kann verschiedene Geschäfts-Bursts wie Live-Übertragung, On-Demand und Static unterstützen kann das Geschäft automatisch erkennen. Die Ressourcenerweiterung kann als Reaktion auf plötzliche Nachfrage innerhalb von 10 Minuten abgeschlossen werden, mit den Merkmalen einer schnellen Freigabe und niedrigen Kosten. Die Wiederverwendung von Ressourcen kann die Ressourcennutzung verbessern und einen riesigen Burst-Pool für Dienste bereitstellen. Es ist jedoch wichtig zu beachten, dass sich Multiplex-Dienste nicht gegenseitig beeinflussen können, was eine Echtzeitüberwachung des Servers und eine rechtzeitige Planung erfordert. Es gibt auch einige Bereiche mit Verbesserungsbedarf, z. B. Kernelparameter, die auf der Containerisolierung basieren, um die Optimierung verschiedener Dienste zu erleichtern. Einige Geschäftskunden unterstützen keine 302-Sprünge, und das Planungssystem muss die Planung von Domänennamen unterstützen.
Verwandte Empfehlungen:
Lösen von Problemen mit hoher Parallelität in der Webentwicklung
Zusammenfassung von Lösungen mit hoher Parallelität für PHP-Lese- und Schreibdateikonflikte
Das obige ist der detaillierte Inhalt vonAnalyse zu Problemen mit hoher Parallelität bei der Entwicklung von King of Glory. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!