Car-tech

YouTube schaalt MySQL met Go-code

Go MySQL Beginners Tutorial

Go MySQL Beginners Tutorial
Anonim

YouTube-technici ontwikkelen een set software, genaamd Vitess, die helpt om open-source MySQL-databases efficiënter te laten werken in zeer grootschalige productieomgevingen. Om de code te schrijven, gebruiken ze Google's programmeertaal Go.

YouTube gebruikt al een Vitess-component, Vtocc, om video's te helpen leveren aan alle 800 miljoen maandelijkse gebruikers van de service. Google heeft YouTube in 2006 overgenomen.

Vtocc is "zeer stabiel geweest en beschikt over alle benodigde hulpmiddelen voor gebruik in een productieomgeving", zei YouTube-architect Sugu Sougoumarane, die samen met YouTube-ingenieur Mike Solomon Vitess besprak op de Usenix LISA-conferentie (Large Installation System Administration) die deze week in San Diego wordt gehouden.

Dat Vitess in Go is geschreven zou kunnen helpen bij het valideren van het idee dat deze relatief nieuwe programmeertaal zou kunnen worden gebruikt in grootschalige productieomgevingen. Google introduceerde versie 1 van Go in maart.

YouTube serveert elke maand meer dan 4 miljard uur aan video's. Ongeveer 72 uur aan video worden elke minuut geüpload naar de service. Terwijl YouTube al zijn video's direct op een bestandssysteem opslaat, gebruikt het MySQL om alle metadata op te slaan die nodig zijn voor elke video, zoals gebruikersvoorkeuren, advertentie-informatie, landaanpassingen en andere benodigde stukjes informatie.

YouTube vindt het leuk om MySQL te gebruiken voor zijn betrouwbaarheid, zei Solomon, een van de ingenieurs die de dienst oorspronkelijk had gebouwd. Het heeft eigenaardigheden, maar die eigenaardigheden zijn bekend en kunnen vrij gemakkelijk worden gemitigeerd, zei hij. MySQL heeft echter ook problemen met schalen - in ieder geval schalen om een ​​service zo groot als YouTube te kunnen gebruiken.

"Het grootste probleem met MySQL is dat wanneer je eenmaal een bepaald punt [van gebruik] bereikt, je veel tijd om hardware te beheren en hoeveel instanties u heeft, "zei Solomon. "We willen die brok automatiseren, we willen elke actie ondernemen die gecompliceerd en foutgevoelig is en hem zelf genezen."

MySQL is ook niet erg efficiënt wanneer het in een grote implementatie wordt gebruikt. Normaal gesproken vereist elke verbinding met MySQL zijn eigen thread op de server. Deze aanpak is echter niet haalbaar op de schaal van de YouTube-activiteiten. "Het runnen van tienduizenden verbindingen is niet echt haalbaar", zei Solomon.

De ingenieurs van het bedrijf waren echter terughoudend om te proberen de kern-MySQL-code zelf te veranderen, wijzend op het aanbrengen van wijzigingen in het complexe en enigszins moeilijk te -code begrijpen kan vaak resulteren in onverwachte effecten. "Het is niet eenvoudig, alleen als je denkt dat je weet wat je doet, kom je in de problemen", zei Solomon.

Dus Vitess is gemaakt om in combinatie met MySQL te worden gebruikt om extra beheermogelijkheden te bieden. De Vtocc-component consolideert bijvoorbeeld duizenden binnenkomende SQL-query's in een kleiner aantal batches, zodat MySQL minder resources kan gebruiken om aan deze verzoeken te voldoen. Vtocc parseert ook query's zodat ze efficiënter kunnen worden uitgevoerd en vermindert het werk dat wordt veroorzaakt door dubbele query's door de resultaten van één query opnieuw te gebruiken om aan de andere identieke verzoeken te voldoen.

Door Go te gebruiken kunnen YouTube-ontwikkelaars productiever zijn dan ze zouden doen gebruikten een meer traditionele taal, zei Sougoumarane. Ga-code compileert snel, zei hij. De 30.000 regels code in Vitess kunnen in ongeveer 30 seconden in binaries worden gecompileerd. En dankzij een rijke verzameling bibliotheken hebben veel taken niet zoveel programmering nodig. Sougoumarane bijvoorbeeld schreef een routine met 105 regels die periodiek logbestanden bijhoudt, functionaliteit die niet in zo weinig regels geschreven kon zijn door C of C ++ te gebruiken.

"Zo expressief is Go," zei Sougoumarane. "De taaleigenschappen zijn goed doordacht, ze helpen je dingen op een veel elegantere manier samen te stellen dan traditionele talen." Sougoumarane prees Go's gelijktijdigheidsondersteuning, van vitaal belang voor gebruik in multicore-processors. "U hoeft zich geen zorgen te maken over het beheer van discussielijnen. Go beheert ze voor u", zei hij.

De taal heeft ook een aantal nadelen, gaf Sougoumarane toe. Foutafhandeling kan bijvoorbeeld worden verbeterd. Planning en garbage collection zouden ook wat werk kunnen gebruiken.

Joab Jackson behandelt bedrijfssoftware en algemeen technologisch nieuws voor

The IDG News Service

. Volg Joab op Twitter op @Joab_Jackson. Het e-mailadres van Joab is [email protected]