Car-tech

YouTube-skalaer MySQL med Go-kode

Scaling with Go: YouTube's Vitess

Scaling with Go: YouTube's Vitess
Anonim

YouTube-ingeniører utvikler et sett med programvare, kalt Vitess, som vil hjelpe open-source MySQL-databaser til å fungere mer effektivt i svært store produksjonsmiljøer. For å skrive koden bruker de Googles programmeringsspråk Go.

YouTube bruker allerede en Vitess-komponent, kalt Vtocc, for å hjelpe med å vise videoer til alle 800 millioner månedlige brukere av tjenesten. Google kjøpte YouTube i 2006.

Vtocc har "vært veldig stabil, og den har alle nødvendige verktøy for deg å bruke i et produksjonsmiljø," sa YouTube arkitekt Sugu Sougoumarane, som sammen med YouTube-ingeniør Mike Solomon diskuterte Vitess på konferansen Usenix LISA (Large Installation System Administration), holdt denne uken i San Diego.

At Vitess er skrevet i Go kan bidra til å validere ideen om at dette relativt nye programmeringsspråket kan brukes i store produksjonsmiljøer. Google introduserte versjon 1 av Go i mars.

YouTube serverer mer enn 4 milliarder timer med video hver måned. Omtrent 72 timers video lastes opp til tjenesten hvert minutt. Mens YouTube lagrer alle sine videoer direkte på et filsystem, bruker det MySQL til å lagre alle metadataene som trengs for å vise hver video, for eksempel brukerinnstillinger, annonseringsinformasjon, landtilpasninger og andre nødvendige biter av informasjon.

YouTube liker å bruke MySQL for sin pålitelighet, sa Salomon, en av de ingeniører som opprinnelig bygget tjenesten. Det har kjennskap, men de kjendingene er velkjente og kan mildnes ganske enkelt, sa han. MySQL har imidlertid også problemer med skalering - minst skalering for å imøtekomme en tjeneste som er så stor som YouTube.

"Det store problemet med MySQL er at når du kommer til et bestemt punkt [av bruk], bruker du mye av tidsstyring av maskinvare og hvor mange forekomster du har, "sa salomon. "Vi ønsker å automatisere den chunken. Vi ønsker å ta alle handlinger som er kompliserte og feilproblemer og få det til å helbrede seg selv."

MySQL er heller ikke veldig effektiv når den brukes i en stor distribusjon. Vanligvis krever hver forbindelse til MySQL sin egen tråd på serveren. Denne tilnærmingen er imidlertid ikke mulig i omfang av YouTubes operasjoner. "Kjører titusenvis av tilkoblinger er ikke veldig levedyktig," sa Salomon.

Selskapets ingeniører har imidlertid vært motvillige til å prøve å endre kjerne MySQL-koden selv, og noterer seg at det gjør endringer i det komplekse og noe vanskelig å Forstå kode kan ofte resultere i uventede effekter. "Det er ikke greit. Bare når du tror du vet hva du gjør, da begynner du å komme i trøbbel," sa Salomon.

Så Vitess ble opprettet for å kjøre sammen med MySQL for å tilby ytterligere ledelsesfunksjoner. Vtocc-komponenten, for eksempel, konsoliderer tusenvis av innkommende SQL-spørringer i et mindre antall batcher, slik at MySQL kan ta færre ressurser som oppfyller disse forespørslene. Vtocc analyserer også spørringer, slik at de kan utføres mer effektivt, og reduserer arbeidet som skyldes dupliserte spørringer ved å gjenbruke resultatene fra ett søk for å tilfredsstille de andre identiske forespørslene.

Bruke Go har tillatt YouTube-utviklere å være mer produktive enn de ville har brukt et mer tradisjonelt språk, sa Sougoumarane.

Go-koden kompilerer raskt, sa han. De 30 000 kodelinjene i Vitess kan kompileres til binærfiler på omtrent 30 sekunder. Og takket være et rikt sett med biblioteker krever mange oppgaver ikke så mye programmering. For eksempel skrev Sougoumarane en 105-linjers rutine som periodisk trimmer loggfiler, funksjonalitet som ikke kunne ha blitt skrevet i så få linjer ved å bruke C eller C ++.

"Det er så uttrykksfulle Go," sa Sougoumarane. "Språkfunksjonene er godt gjennomtenkte. De hjelper deg å komponere ting på en langt mer elegant måte enn tradisjonelle språk." Sougoumarane roste også Go's samtidige støtte, avgjørende for bruk i multicore-prosessorer. "Du trenger ikke å bekymre deg for å administrere tråder. Go administrerer dem for deg," sa han.

Språket har også noen ulemper, også Sougoumarane innrømmet. Feilhåndtering kan for eksempel forbedres. Planlegging og søppelsamling kan også gjøre noe arbeid.

Salomon sa at Vitess vil overta tid på å påta seg flere oppgaver, for eksempel databasereplikasjon og automatisk skjæring, slik at en database kan vokse på flere servere uten inngrep fra administratorer.

Joab Jackson dekker enterprise software og generell teknologi bryte nyheter for IDG News Service. Følg Joab på Twitter på @Joab_Jackson. Joabs e-postadresse er [email protected]