«Post sponsorizat: Gigaspaces, Nokia, Oracle, Percona Live, AiCache, ElasticHosts, Logic Monitor, Modeling Atribution, New Relic, AppDynamics, CloudSigma, ManageEngine, Site24x | Principala | Stuff Internetul spune despre scalabilitate pentru 23 martie 2012 »

luni

Mar262012

7 ani de lectii de scalabilitate YouTube in 30 de minute

Luni, 26 martie 2012 la 9:15

Daca ati inceput sa construiti un site de intalniri si, in schimb, ati finalizat construirea unui site de partajare video (YouTube) care gestioneaza 4 miliarde de vizualizari pe zi, atunci este posibil sa inveti ceva pe parcurs. Si intr-adevar, Mike Solomon, unul dintre inginerii originali de pe YouTube, a invatat multe si a dat o discutie despre asta la PyCon: Scalability on YouTube.

Nu este vorba despre o discutie bazata pe arhitectura, unde ne este condus printr-o descriere a modului in care multe casete se conecteaza intre ele. Mike ar putea sa spuna asta. El a lucrat la construirea infrastructurii de servlet YouTube, functia de indexare video, sistemul de transcodare video, cautarea textului complet, un CDN si multe altele. Dar, in schimb, a facut un pas inapoi, a aruncat o privire lunga in jurul orei in care s-a desfasurat si a impartasit cateva lectii profunde, evident castigate din experienta.

Preluarea cheie a discutiei pentru mine se descurca foarte mult cu instrumente foarte simple. In timp ce multe echipe se indreapta catre ecosisteme mai complexe, YouTube chiar il pastreaza simplu. Programeaza in principal in Python, folosesc MySQL ca baza de date, s-au blocat cu Apache si chiar functii noi pentru un site atat de masiv incepe ca un program Python foarte simplu.

Asta nu inseamna ca YouTube nu face chestii misto, ci ele, dar ceea ce face ca totul sa functioneze impreuna este mai mult o filozofie sau un mod de a face lucrurile decat hocus pocus tehnologic. Ce a facut YouTube pe unul dintre cele mai mari site-uri web din lume? Cititi mai departe si vedeti …

Statistici

  • 4 miliarde de vizualizari pe zi
  • 60 de ore de videoclip sunt incarcate in fiecare minut
  • 350 de milioane de dispozitive sunt activate pe YouTube
  • Veniturile se dubleaza in 2010
  • Numarul videoclipurilor a crescut cu 9 ordine de marime, iar numarul dezvoltatorilor a urcat doar doua ordine de marime.
  • 1 milion de linii de cod Python

Gramada

  • Python – majoritatea liniilor de cod pentru YouTube sunt inca in Python. De fiecare data cand urmariti un videoclip YouTube, executati o gramada de cod Python.
  • Apache – atunci cand crezi ca trebuie sa scapi de asta, nu o faci. Apache este o adevarata tehnologie rockstar la YouTube, deoarece o pastreaza simpla. Fiecare cerere trece prin Apache.
  • Linux – beneficiul Linux este intotdeauna o modalitate de a intra si de a vedea cum se comporta sistemul tau. Oricat de rau se comporta aplicatia dvs., puteti arunca o privire asupra ei cu instrumente Linux, cum ar fi strace si tcpdump.
  • MySQL – este folosit foarte mult. Cand vizionati un videoclip primiti date de la MySQL. Candva se foloseste o baza de date relationala sau un blob store. Este vorba despre reglarea si luarea de decizii cu privire la modul in care va organizati datele.
  • Vitess – un nou proiect lansat de YouTube, scris in Go, este un frontend pentru MySQL. Face multa optimizare din mers, rescrie interogari si actioneaza ca un proxy. In prezent, serveste la fiecare solicitare de baza de date YouTube Este bazat pe RPC.
  • Zookeeper – un server de blocare distribuit. Este folosit pentru configurare. O piesa tehnologica foarte interesanta. Greu de utilizat corect, asa ca cititi manualul
  • Wiseguy – un container servlet CGI.
  • Spitfire – un sistem de modelare. Are un arbore de sintaxa abstracta care sa le faca sa transforme pentru ca lucrurile sa mearga mai repede.
  • Formate de serializare – indiferent de care le utilizati, toate sunt scumpe. Masura. Nu folositi muraturile. Nu este o alegere buna. Memorii tampon de protocol s-au gasit lent. Au scris propria lor implementare BSON, care este de 10-15 ori mai rapid decat cea pe care o puteti descarca.

Lectii generale

  • Tao de YouTube: alege cea mai simpla solutie posibila cu cele mai slabe garantii practice. Motivul pentru care doriti toate aceste lucruri este ca aveti nevoie de flexibilitate pentru a rezolva problemele. In minutul in care specificati ceva ce va pictati intr-un colt. Nu veti face acele garantii. Problema dvs. devine automat mai complexa atunci cand incercati sa faceti toate aceste garantii. Nu va lasati nicio cale de iesire.
  • Tot procesul este despre scalabilitate. Un sistem scalabil este unul care nu iti sta in cale. De care nu stiti. Nu este vorba de zvonuri. Este o solutie generala de solutionare a problemelor.
  • Caracteristic al proiectarii mari a sistemului: fiecare sistem este adaptat la cerintele sale specifice. Totul depinde de specificul a ceea ce construiesti.
  • YouTube nu este asincron, totul se blocheaza.
  • Crede mai mult in filozofie decat in ​​doctrina. Simplifica. Ce inseamna asta? O sa stii cand o vei vedea. Daca faceti recenzii de cod care schimba mii de linii de cod si multe fisiere, atunci a existat probabil un mod mai simplu. Prima dvs. demonstratie ar trebui sa fie simpla, apoi sa repete.
  • Pentru a rezolva o problema: Un singur cuvant – simplu. Cautati cel mai simplu lucru care va aborda spatiul cu probleme. Exista o multime de probleme complexe, dar prima solutie nu trebuie sa fie complicata. Complexitatea va veni in mod natural in timp.
  • Multe sisteme YouTube incep ca un singur fisier Python si devin ecosisteme mari dupa multi ani. Toate prototipurile lor au fost scrise in Python si au supravietuit o perioada surprinzatoare de timp.
  • Intr-o recenzie de proiectare:
    • Care este prima solutie?
    • Cum te vei itera?
    • Ce stim despre cum vor fi utilizate aceste date?
  • Lucrurile se schimba in timp. Modul in care YouTube a inceput nu are nicio influenta asupra a ceea ce se intampla mai tarziu. YouTube a inceput ca un site de intalniri. Daca ar fi conceput pentru asta, vor avea o conversatie diferita. Ramai flexibil.
  • CDN YouTube. Initial a contractat-o. A fost foarte scump, asa ca au facut-o singure. Puteti construi un CDN video destul de bun daca aveti un tip hardware bun. Construiti un rack foarte mare, lipiti masini, apoi luati lighttpd si apoi treceti pe handler 404 pentru a gasi videoclipul pe care nu l-ati gasit. Asta a durat doua saptamani si a fost prima zi care a servit 60 de gigabits. Puteti face multe cu instrumente foarte simple.
  • Trebuie sa masori. Vitess a schimbat unul dintre protocoalele sale pentru o implementare HTTP. Chiar daca era in C, era lent. Asa ca au eliminat HTTP si au facut un apel direct la socket folosind python si asta a fost cu 8% mai ieftin pe CPU global. Invelisul pentru HTTP este intr-adevar scump.

Tehnici de scalabilitate

Articole similare

  • Super-dimensionare YouTube cu Python
  • Scalarea bazelor de date MySQL pentru Web
  • Arhitectura YouTube
  • Pe HackerNews