Car-tech

YouTube scales MySQL Go koodilla

Scaling with Go: YouTube's Vitess

Scaling with Go: YouTube's Vitess
Anonim

YouTube-insinöörit kehittävät Vitessin ohjelmiston, joka auttaa avoimen lähdekoodin MySQL-tietokantoja toimimaan tehokkaammin erittäin laajoissa tuotantoympäristöissä. Koodin kirjoittaminen käyttää Googlen ohjelmointikieltä Go.

YouTubessa käytetään jo yhtä Vitess-komponenttia, nimeltään Vtocc, joka auttaa palvelemaan videoita kaikkiin 800 miljoonan kuukausittaisen palvelun palveluun. Google osti YouTuben vuonna 2006.

Vtocc on "ollut erittäin vakaa ja sillä on kaikki tarvittavat työkalut, joita voit käyttää tuotantoympäristössä", kertoi YouTube-arkkitehti Sugu Sougoumarane, joka yhdessä YouTube-insinöörin Mike Solomonin kanssa keskusteli Vitessin kanssa Usadian LISA (Large Installation System Administration) -konferenssissa, joka pidettiin tällä viikolla San Diegossa.

Vitessin Goessa kirjoitettu voi auttaa vahvistamaan ajatuksen siitä, että tätä suhteellisen uutta ohjelmointikieltä voitaisiin käyttää laajamittaisissa tuotantoympäristöissä. Google esitteli maaliskuun version Googlen version.

YouTubessa on kuukausittain yli 4 miljardia tuntia videota. Noin 72 tuntia videota lähetetään palveluun joka minuutti. Vaikka YouTube tallentaa kaikki videot suoraan tiedostojärjestelmään, se käyttää MySQL: n tallentamaan kaikki videotiedostoon tarvittavat metatiedot, kuten käyttäjäasetukset, mainostustiedot, maakohtaiset mukautukset ja muut tarvittavat tiedot.

YouTube tykkää MySQL: n avulla luotettavuudestaan, sanoi Salomon, yksi insinööreistä, joka alun perin rakensi palvelun. Se on tarina, mutta ne ovat tunnettuja ja niitä voidaan lieventää melko helposti, hän sanoi. MySQL: ssä on kuitenkin myös skaalausongelmia - ainakin skaalautuvuutta, jotta palvelua voidaan palvella niin paljon kuin YouTuben.

"MySQL: n suurin ongelma on, että kun pääset tiettyyn käyttötarkoitukseen, käytät paljon aika hallinta-laitteisto ja kuinka monta tapausta sinulla on ", Solomon sanoi. "Haluamme automatisoida tämän kappaleen. Haluamme toteuttaa kaiken monimutkaisen ja virheen aiheuttavan toiminnan ja parantaa itsensä."

MySQL ei myöskään ole kovin tehokas, kun sitä käytetään suuressa käytössä. Tyypillisesti jokainen yhteys MySQL: hen vaatii oman viestin palvelimelta. Tämä lähestymistapa ei kuitenkaan ole toteutettavissa YouTuben toimintojen laajuudessa. "Käynnissä kymmeniä tuhansia yhteyksiä ei todellakaan ole elinkelpoinen", Solomon sanoi.

Yhtiön insinöörit ovat kuitenkin haluttaneet yrittämään itseään muuttamaan itse MySQL-koodia huomauttaen, että muutosten tekeminen monimutkaiseksi ja melko vaikeaksi - ymmärrä koodi voi usein johtaa odottamattomiin vaikutuksiin. "Se ei ole suoraviivaista, juuri kun luulet tietävän, mitä teet, silloin kun alkaa ongelmia", Solomon sanoi.

Vitess on luotu toimimaan yhdessä MySQL: n kanssa tarjotakseen lisää hallintaominaisuuksia. Esimerkiksi Vtocc-komponentti yhdistää tuhansia tulevia SQL-kyselyjä pienemmiksi eriksi, joten MySQL voi ottaa vähemmän resursseja, jotka täyttävät nämä pyynnöt. Vtocc myös jäsentää kyselyjä, jotta ne voidaan suorittaa tehokkaammin ja vähentää päällekkäisten kyselyjen aiheuttamaa työtä käyttämällä uudelleen kyselyn tuloksia täyttämään muut samanlaiset pyynnöt.

Go: n avulla YouTube-kehittäjät ovat voittaneet tuottavampia kuin he ovat käyttäneet perinteisempää kieltä, Sougoumarane sanoi.

Go-koodi kootaan nopeasti, hän sanoi. Vitessin 30 000 riviä voidaan koota binääriin noin 30 sekunnissa. Ja monien kirjastojen joukon ansiosta monet tehtävät eivät edellytä paljon ohjelmointia. Esimerkiksi Sougoumarane kirjoitti 105-rivinen rutiini, joka säännöllisesti leikkaa lokitiedostoja, funktionaalisuutta, jota ei olisi voitu kirjoittaa vain muutamalla rivillä C: n tai C ++: n avulla.

"Näin ekspressiivinen Go on", Sougoumarane sanoi. "Kielen ominaisuudet ovat hyvin harkittuja, ja ne auttavat sinua kirjoittamaan asioita paljon tyylikkäästi kuin perinteiset kielet." Sougoumarane ylisti myös Go: n samanaikaisen tuen, joka on elintärkeää käytettäväksi monilähetysprosessoreissa. "Sinun ei tarvitse huolehtia viestien hallinnasta, Go hoitaa heidät puolestasi", hän sanoiKielellä on myös joitain haittapuolia, Sougoumarane myönsi. Esimerkiksi virheenkäsittelyä voitaisiin parantaa. Aikataulutus ja jätehuolto voivat myös käyttää jotain työtä.

Solomon totesi, että Vitess ottaa ajan myötä lisätehtäviä, kuten tietokannan replikoinnin ja automaattisen varjostuksen, joten tietokanta voi kasvaa useille palvelimille ilman järjestelmänvalvojan toimia.

Joab Jackson kattaa yrityssovellukset ja yleiset teknologiauutiset uutisia

IDG News Service. Seuraa Joab Twitterissä osoitteessa @Joab_Jackson. Joabin sähköpostiosoite on [email protected]