Car-tech

YouTube skalerer MySQL med Go-kode

How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino

How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino
Anonim

YouTube-ingeniører udvikler et sæt software kaldet Vitess, der hjælper open source MySQL-databaser fungerer mere effektivt i meget store produktionsmiljøer. For at skrive koden bruger de Googles programmeringssprog Go.

YouTube bruger allerede en Vitess-komponent, kaldet Vtocc, til at hjælpe med at vise videoer til alle de 800 millioner månedlige brugere af tjenesten. Google købte YouTube i 2006.

Vtocc har "været meget stabil, og det har alle de nødvendige værktøjer til at bruge i et produktionsmiljø", sagde YouTube-arkitekten Sugu Sougoumarane, som sammen med YouTube-ingeniør Mike Solomon diskuterede Vitess på Usenix LISA (Large Installation System Administration) konference, afholdt i denne uge i San Diego.

At Vitess er skrevet i Go kunne hjælpe med at validere ideen om, at dette relativt nye programmeringssprog kunne bruges i store produktionsmiljøer. Google introducerede version 1 af Go i marts.

YouTube serverer mere end 4 milliarder timer video hver måned. Ca. 72 timers video uploades til tjenesten hvert minut. Mens YouTube gemmer alle sine videoer direkte på et filsystem, bruger det MySQL til at gemme alle de metadata, der er nødvendige for at vise hver video, f.eks. Brugerpræferencer, annonceringsoplysninger, landtilpasninger og andre nødvendige oplysninger.

YouTube kan lide at bruge MySQL for sin pålidelighed, sagde Salomon, en af ​​de ingeniører, der oprindeligt bygget tjenesten. Det har karakteristika, men disse quirks er velkendte og kan mildnes ret let, sagde han. Men MySQL har også problemer med skalering - i det mindste skalering for at rumme en tjeneste så stor som YouTubes.

"Det store problem med MySQL er, at når du kommer til et bestemt punkt [af brugen] bruger du en masse tid til styring af hardware og hvor mange tilfælde du har, "sagde salomon. "Vi ønsker at automatisere den klump. Vi vil tage alle handlinger, der er komplicerede og fejlagtige og gør det helbrede sig selv."

MySQL er heller ikke meget effektiv, når den bruges i en stor implementering. Typisk kræver hver forbindelse til MySQL sin egen tråd på serveren. Denne fremgangsmåde er imidlertid ikke mulig i omfanget af YouTubes operationer. "Running titusinder af forbindelser er ikke rigtig levedygtig," sagde Salomon.

Selskabets ingeniører har imidlertid været tilbageholdende med at forsøge at ændre kernen MySQL-koden selv og bemærke, at der foretages ændringer i det komplekse og noget vanskeligt at -undervisningskode kan ofte resultere i uventede effekter. "Det er ikke ligetil. Bare når du tror, ​​du ved hvad du laver, det er, når du begynder at komme i problemer," sagde Salomon.

Så Vitess blev oprettet til at køre sammen med MySQL for at tilbyde yderligere ledelsesfunktioner. Vtocc-komponenten konsoliderer f.eks. Tusindvis af indgående SQL-forespørgsler i et mindre antal batcher, så MySQL kan tage færre ressourcer, der opfylder disse anmodninger. Vtocc analyserer også forespørgsler, så de kan udføres mere effektivt og reducerer arbejdet forårsaget af to forespørgsler ved at genbruge resultaterne fra en forespørgsel for at tilfredsstille de andre identiske anmodninger.

Brug af Go har gjort det muligt for YouTube-udviklere at være mere produktive end de ville har brugt et mere traditionelt sprog, sagde Sougoumarane.

Go-kode kompilerer hurtigt, sagde han. De 30.000 linjer af kode i Vitess kan kompileres i binære filer om cirka 30 sekunder. Og takket være et rigt sæt biblioteker kræver mange opgaver ikke så meget programmering. For eksempel skrev Sougoumarane en 105-linjers rutine, der periodisk trimmer logfiler, funktionalitet, der ikke kunne være skrevet i så få linjer ved at bruge C eller C ++.

"Sådan er udtryksfuld Go," sagde Sougoumarane. "Sprogfunktionerne er gennemtænkte. De hjælper dig med at komponere ting på en meget mere elegant måde end traditionelle sprog." Sougoumarane roste også Go's samtidige support, der er afgørende for brug i multicore-processorer. "Du behøver ikke bekymre dig om at styre tråde. Gå styrer dem for dig," sagde han.

Sproget har også nogle ulemper, også Sougoumarane indrømmede. Fejlhåndtering kan f.eks. Forbedres. Planlægning og affaldssamling kunne også bruge noget arbejde.

Salomon sagde, at Vitess over tid vil påtage sig yderligere opgaver, f.eks. Databasereplikation og automatisk sharding, så en database kan vokse på tværs af flere servere uden intervention fra administratorer.

Joab Jackson dækker firmware og generel teknologi, der bryder nyheder til IDG News Service. Følg Joab på Twitter på @Joab_Jackson. Joabs e-mail-adresse er [email protected]