Car-tech

YouTube scară MySQL cu codul Go

SQL Tutorial - Full Database Course for Beginners

SQL Tutorial - Full Database Course for Beginners
Anonim

Inginerii YouTube dezvoltă un set de software, numit Vitess, care va ajuta bazele de date open source MySQL să funcționeze mai eficient în medii de producție foarte mari. Pentru a scrie codul, folosesc limbajul de programare Google Go.

YouTube utilizează deja o componentă Vitess, numită Vtocc, pentru a ajuta la difuzarea videoclipurilor pentru toți utilizatorii serviciului de 800 de milioane de utilizatori lunar. Google a achiziționat YouTube în 2006.

Victc a fost "foarte stabil și are toate instrumentele necesare pentru a vă folosi într-un mediu de producție", a declarat arhitectul YouTube Sugu Sougoumarane, care împreună cu inginerul YouTube Mike Solomon au discutat despre Vitess la Convenția Usenix LISA (Administrarea Sistemului de Instalare Mare), care a avut loc săptămâna aceasta în San Diego.

Această Vitess este scrisă în Go, care ar putea ajuta la validarea ideii că acest limbaj de programare relativ nou poate fi utilizat în medii de producție de mari dimensiuni. Google a introdus versiunea 1 a lui Go în luna martie.

YouTube servește mai mult de 4 miliarde de ore de videoclipuri în fiecare lună. Aproximativ 72 de ore de video sunt încărcate în serviciu în fiecare minut. În timp ce YouTube stochează toate videoclipurile sale direct pe un sistem de fișiere, utilizează MySQL pentru a stoca toate metadatele necesare pentru difuzarea fiecărui videoclip, cum ar fi preferințele utilizatorilor, informațiile despre publicitate, personalizarea țărilor și alte informații necesare.

YouTube îi place MySQL pentru fiabilitatea sa, a spus Solomon, unul dintre inginerii care au construit inițial serviciul. Are ciudățenii, dar acele quirks sunt bine-cunoscute și pot fi atenuate destul de ușor, a spus el. Cu toate acestea, MySQL are de asemenea probleme cu scalarea - cel puțin scalarea pentru a găzdui un serviciu la fel de mare ca și YouTube.

"Problema majoră cu MySQL este că odată ce ajungi la un anumit punct de utilizare, gestionarea timpului hardware și câte cazuri aveți ", a spus Solomon. "Vrem să automatizăm acea bucată. Vrem să luăm toate acțiunile care sunt complicate și predispuse la erori și să le facă să se vindece."

MySQL nu este, de asemenea, foarte eficient atunci când este utilizat într-o implementare mare. De obicei, fiecare conexiune la MySQL necesită un fir propriu pe server. Cu toate acestea, această abordare nu este fezabilă la scara operațiilor YouTube. "Desfășurarea a zeci de mii de conexiuni nu este cu adevărat viabilă", a spus Solomon.

Inginerii companiei au fost reticenți în încercarea de a schimba însăși codul de bază MySQL, observând că modificarea complexă și oarecum dificilă - înțelegerea codului poate duce deseori la efecte neașteptate. "Nu este clar ca atunci cand crezi ca stii ce faci, atunci incepe sa intri in probleme", a spus Solomon.

Deci Vitess a fost creat pentru a rula in colaborare cu MySQL pentru a oferi capabilitati suplimentare de management. Componenta Vocc, de exemplu, consolidează mii de interogări SQL primite într-un număr mai mic de loturi, astfel încât MySQL poate să ia mai puține resurse care să răspundă acestor solicitări. De asemenea, VTCc analizează interogările astfel încât acestea să poată fi executate mai eficient și reduc activitatea cauzată de interogările duplicate prin reutilizarea rezultatelor dintr-o interogare pentru a satisface celelalte cereri identice.

Utilizarea Go a permis dezvoltatorilor YouTube să fie mai productivi decât ar au folosit o limbă mai tradițională, a spus Sougoumarane.

Go code se compilează repede, a spus el. Cele 30.000 de linii de cod din Vitess pot fi compilate în binare în aproximativ 30 de secunde. Și, datorită unui set bogat de biblioteci, multe sarcini nu necesită multă programare. De exemplu, Sougoumarane a scris o rutină de 105 de linii care periodic împachetează fișiere log, funcționalitate care nu ar fi putut fi scrisă în câteva rânduri folosind C sau C ++. "Așa este Expresiv Go", a spus Sougoumarane. "Caracteristicile lingvistice sunt bine gândite și vă ajută să compuneți lucrurile într-un mod mult mai elegant decât limbile tradiționale". Sougoumarane a lăudat, de asemenea, suportul pentru concursuri Go, vital pentru utilizarea în procesoarele multicore. "Nu trebuie să vă faceți griji cu privire la gestionarea thread-urilor. Du-te gestionează-le pentru tine", a spus elLimbajul are și unele dezavantaje, a recunoscut Sougoumarane. Eroare de manipulare ar putea fi îmbunătățit, de exemplu. Programare și de colectare a gunoiului ar putea folosi ceva de lucru la fel de bine.

Solomon a spus că, în timp, Vitess va prelua sarcini suplimentare, cum ar fi replicarea bazei de date și sharding automată, astfel încât o bază de date se poate dezvolta pe mai multe servere cu nici o intervenție de la administratori.

Joab Jackson se referă la software-ul pentru întreprinderi și la știrile generale despre tehnologia generală

Serviciul de știri IDG

. Urmăriți-l pe Joab pe Twitter la @ Joab_Jackson. Adresa de e-mail a lui Joab este [email protected]