Car-tech

YouTube skaliert MySQL mit Go-Code

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka
Anonim

Die Ingenieure von YouTube entwickeln eine Software namens Vitess, mit der Open-Source-MySQL-Datenbanken in sehr großen Produktionsumgebungen effizienter arbeiten können. Um den Code zu schreiben, verwenden sie Googles Programmiersprache Go.

YouTube verwendet bereits eine Vitess-Komponente namens Vtocc, um Videos für alle 800 Millionen monatlichen Nutzer des Services bereitzustellen. Google hat YouTube 2006 akquiriert.

Vtocc ist "sehr stabil und verfügt über alle notwendigen Tools für den Einsatz in einer Produktionsumgebung", sagte der YouTube-Architekt Sugu Sougoumarane, der zusammen mit dem YouTube-Ingenieur Mike Solomon über Vitess sprach auf der Konferenz Usenix LISA (Große Installation System Administration), die diese Woche in San Diego stattfindet.

Dass Vitess in Go geschrieben ist, könnte helfen, die Idee zu bestätigen, dass diese relativ neue Programmiersprache in großen Produktionsumgebungen verwendet werden könnte. Google hat im März die Version 1 von Go eingeführt.

YouTube bietet monatlich mehr als 4 Milliarden Stunden Video an. Ungefähr 72 Stunden Video werden jede Minute in den Dienst hochgeladen. Während YouTube alle seine Videos direkt in einem Dateisystem speichert, speichert MySQL alle Metadaten, die für die einzelnen Videos benötigt werden, wie Nutzereinstellungen, Werbeinformationen, Länderanpassungen und andere benötigte Informationen.

YouTube nutzt gerne MySQL für seine Zuverlässigkeit, sagte Solomon, einer der Ingenieure, die ursprünglich den Service gebaut haben. Es hat Macken, aber diese Macken sind bekannt und können relativ leicht gemildert werden, sagte er. Allerdings gibt es bei MySQL auch Probleme mit der Skalierung - zumindest eine Skalierung, um einen so großen Dienst wie YouTube zu ermöglichen.

"Das Hauptproblem von MySQL besteht darin, dass Sie nach dem Erreichen eines bestimmten Punktes viel ausgeben Zeit, Hardware zu verwalten und wie viele Instanzen Sie haben ", sagte Solomon. "Wir wollen diesen Chunk automatisieren. Wir wollen jede komplizierte und fehleranfällige Aktion durchführen und sich selbst heilen lassen."

Auch MySQL ist in einer großen Implementierung nicht sehr effizient. In der Regel erfordert jede Verbindung zu MySQL einen eigenen Thread auf dem Server. Dieser Ansatz ist jedoch in der Größenordnung von YouTube nicht möglich. "Das Ausführen von Zehntausenden von Verbindungen ist nicht wirklich praktikabel", sagte Solomon.

Die Ingenieure des Unternehmens haben jedoch widerwillig versucht, den Kern-MySQL-Code selbst zu ändern, indem sie Änderungen an dem Komplex und etwas schwierig vornahmen -Verständigen Code kann oft zu unerwarteten Auswirkungen führen. "Es ist nicht einfach. Gerade wenn du denkst, dass du weißt, was du tust, dann beginnst du in Schwierigkeiten zu geraten", sagte Solomon.

Vitess wurde geschaffen, um in Verbindung mit MySQL zusätzliche Managementfunktionen anzubieten. Die Vtocc-Komponente konsolidiert z. B. Tausende von eingehenden SQL-Abfragen in eine kleinere Anzahl von Batches, sodass MySQL weniger Ressourcen benötigt, um diese Anforderungen zu erfüllen. Vtocc analysiert auch Abfragen, damit sie effizienter ausgeführt werden können, und reduziert die durch doppelte Abfragen verursachte Arbeit, indem die Ergebnisse einer Abfrage wiederverwendet werden, um die anderen identischen Anfragen zu erfüllen.

Durch die Verwendung von Go können YouTube-Entwickler produktiver arbeiten "Sougoumarane hat eine traditionellere Sprache benutzt", sagte Sougoumarane.

Go Code kompiliert sich schnell, sagte er. Die 30.000 Zeilen Code in Vitess können in etwa 30 Sekunden in Binärdateien kompiliert werden. Und dank einer großen Anzahl von Bibliotheken benötigen viele Aufgaben nicht so viel Programmierung. Zum Beispiel schrieb Sougoumarane eine 105-Zeilen-Routine, die regelmäßig Log-Dateien schneidet, Funktionalität, die mit C oder C ++ nicht in so wenigen Zeilen geschrieben werden konnte.

So expressiv Go ist, sagte Sougoumarane. "Die Sprachfunktionen sind gut durchdacht. Sie helfen Ihnen, die Dinge viel eleganter zu gestalten als traditionelle Sprachen." Sougoumarane lobte auch Go's Parallelitätsunterstützung, die für den Einsatz in Multicore-Prozessoren unerlässlich ist. "Sie müssen sich nicht darum kümmern, Threads zu verwalten. Go verwaltet sie für Sie", sagte er.

Die Sprache hat auch einige Nachteile, gab Sougoumarane zu. Die Fehlerbehandlung könnte beispielsweise verbessert werden. Zeitplanung und Garbage-Collection könnten ebenfalls einiges an Arbeit erfordern.

Solomon sagte, dass Vitess im Laufe der Zeit zusätzliche Aufgaben wie Datenbankreplikation und automatisches Sharding übernehmen wird, sodass eine Datenbank ohne Intervention von Administratoren auf mehreren Servern wachsen kann.

Joab Jackson berichtet über Unternehmenssoftware und allgemeine Technologie für den IDG News Service. Folge Joab auf Twitter unter @Joab_Jackson. Joabs E-Mail-Adresse ist [email protected]