Car-tech

YouTube-skalor MySQL med Go-kod

MySQL NDB Cluster: Set up a shared nothing high availability cluster in 15 minutes by Saroj Tripathy

MySQL NDB Cluster: Set up a shared nothing high availability cluster in 15 minutes by Saroj Tripathy
Anonim

YouTube-ingenjörer utvecklar en uppsättning programvaror, kallad Vitess, som hjälper till att öppna MySQL-databaser med öppen källkod effektivare i mycket stora produktionsmiljöer. För att skriva koden använder de Googles programspråk Go.

YouTube använder redan en Vitess-komponent, kallad Vtocc, för att hjälpa till att tjäna videor till alla tjänsten 800 miljoner månadsanvändare. Google förvärvade YouTube 2006.

Vtocc har varit mycket stabil och har alla nödvändiga verktyg för dig att använda i en produktionsmiljö, säger YouTube-arkitekten Sugu Sougoumarane, som tillsammans med YouTube-ingenjören Mike Solomon diskuterade Vitess vid Usenix LISA (Large Installation System Administration) konferensen, höll denna vecka i San Diego.

Att Vitess är skrivet i Go kan hjälpa till att validera idén om att detta relativt nya programmeringsspråk skulle kunna användas i storskaliga produktionsmiljöer. Google introducerade version 1 av Go i mars.

YouTube serverar mer än 4 miljarder timmar med video varje månad. Omkring 72 timmars video laddas upp till tjänsten varje minut. Medan YouTube lagrar alla sina videoklipp direkt på ett filsystem använder den MySQL för att lagra alla metadata som behövs för att tjäna varje video, till exempel användarpreferenser, annonseringsinformation, land anpassningar och andra nödvändiga bitar av information.

YouTube gillar att använda MySQL för sin tillförlitlighet, sade Salomon, en av de ingenjörer som ursprungligen byggde tjänsten. Det har krångligheter, men de här frågorna är välkända och kan mildras ganska lätt, sa han. Men MySQL har också problem med skalering - åtminstone skalning för att rymma en tjänst som är lika stor som YouTube.

"Det stora problemet med MySQL är att när du kommer till en viss punkt [av användningen] spenderar du mycket av tidsstyrning av hårdvara och hur många instanser du har ", sa Salomo. "Vi vill automatisera den chunken. Vi vill vidta alla åtgärder som är komplicerade och felaktiga och gör att det läker sig själv."

MySQL är inte särskilt effektiv när den används i en stor implementering. Vanligtvis kräver varje anslutning till MySQL sin egen tråd på servern. Detta tillvägagångssätt är dock inte genomförbart i storleksordningen av YouTubes verksamhet. "Att driva tiotusentals anslutningar är inte riktigt livskraftigt", säger Salomon.

Företagets ingenjörer har emellertid varit ovilliga att försöka byta kärnan MySQL-koden själv och notera att man ändrar det komplexa och något svårt att -underkodskod kan ofta resultera i oförutsedda effekter. "Det är inte enkelt. Precis när du tror att du vet vad du gör, då börjar du komma i trubbel," sa Solomon.

Så Vitess skapades för att köras i samband med MySQL för att erbjuda ytterligare ledningsfunktioner. Vtocc-komponenten konsoliderar exempelvis tusentals inkommande SQL-frågor i ett mindre antal satser, så MySQL kan ta färre resurser som uppfyller dessa önskemål. Vtocc analyserar även frågor så att de kan utföras mer effektivt och reducerar arbetet som orsakas av dubbla frågor genom att återanvända resultaten från en fråga för att tillgodose de andra identiska förfrågningarna.

Med Go har YouTube-utvecklare tillåtit att vara mer produktiva än de skulle har använt ett mer traditionellt språk, sa Sougoumarane.

Go kod sammanställs snabbt, sa han. De 30 000 raderna av kod i Vitess kan sammanställas i binärer på cirka 30 sekunder. Och, tack vare en rik uppsättning bibliotek, kräver många uppgifter inte så mycket programmering. Sougoumarane skrev till exempel en 105-linjers rutin som periodiskt trimmer loggfiler, funktionalitet som inte kunde ha skrivits i så få rader med C eller C ++.

"Så uttrycksfull Go är", sa Sougoumarane. "Språkfunktionerna är väl genomtänkta. De hjälper dig att komponera saker på en mycket elegantare sätt än traditionella språk." Sougoumarane lovordade också Gos samtidiga stöd, som är avgörande för användning i multicore-processorer. "Du behöver inte oroa dig för att hantera trådar. Gå hantera dem för dig," sa han.

Språket har också vissa nackdelar, även Sougoumarane erkände. Felhantering kan till exempel förbättras. Schemaläggning och skräpsamling kan också använda lite arbete.

Salomon sa att Vitess kommer över tiden att ta på sig ytterligare uppgifter, såsom databasreplikation och automatisk sharding, så en databas kan växa över flera servrar utan ingripande från administratörer.

Joab Jackson täcker företagsprogramvara och allmänna teknikbrytande nyheter för IDG News Service. Följ Joab på Twitter på @Joab_Jackson. Joabs e-postadress är [email protected]