THOMAS CARRIERO: Sunt Thomas Carriero. Sunt un inginer de software la Dropbox. ALEX ALLAIN: Sunt Alex Allain. Sunt un inginer aici, la Dropbox. THOMAS CARRIERO: Da, am fost de fapt primul TF cap pentru CS50 când David Malin a preluat clasa. Am fost deja de predare CS50 pentru două semestre cu Mike Smith, care a fost profesorul anterior acolo. ALEX ALLAIN: Deci, eu de fapt nu ia CS50, dar am făcut-o de două ori TF. Odată ca TF regulat, și apoi ultimul an Am fost de fapt TF șef de CS50, care a fost o mulțime de distracție. THOMAS CARRIERO: Deci, atunci când David a ajuns la pentru a-mi despre configurarea Dropbox în aparatul CS50, Am fost foarte emoționat, pentru că avem de fapt un client Linux, astfel încât cele mai multe dintre utilizatorii nostri folosesc fie Ferestre sau clienti Macintosh, dar Linux, Macintosh, și Windows clienții sunt de fapt foarte asemănătoare. Deci, ceea ce am făcut este că pre-instalat clientul Dropbox Linux în CS50 aparat, și se execută la fel ca toate ale altor utilizatori noastre Linux. ALEX ALLAIN: Deci, Dropbox fel de lucrări este ruleaza ca un client pe multe diferite sisteme de operare și dispozitive. Clientul desktop Dropbox este una dintre cele mai cunoscute, și una dintre cele mai interesante. THOMAS CARRIERO: Deci Dropbox practic ia toate fișierele pe care le pune în dosarul și-l bucăți aceste fișiere în bucăți de patru megabyte. Deci, vom lua un 100-megabyte Fișier PDF și ne vom bucată l în 25 de bucăți de patru megabyte. Aceste bucăți sunt apoi criptate și apoi le trimite la serverele noastre de bloc. ALEX ALLAIN: Serverele bloc sunt depozitarea pentru blocurile respective, și astfel fiecare bloc este stocat în serverul bloc cu datele și un hash Shaw 356 de blocul. Asta-i o criptare foarte primitiv de bază care rezumă, într-un sens, datele într-un mod foarte unic care este unic pentru că datele. Ai putea încărca întreg fișier dintr-o dată, dar se pare că, dacă faci că, fișiere foarte mari să ia o foarte mult timp pentru a încărca, și în cazul în care aveți un eșec, nu mai ai noroc și trebuie să-l reporniți. Ce atunci facem este să spunem un alt server în sistemul nostru, și ceea ce noi numim metadatele de server, care hei aceasta este un fișier, și este compus din Urmatoarea lista de blocuri. Și vom trece în sus de hash pentru a identifica acele blocuri mai degrabă decât re-încărcarea întregul bloc. MetaServer apoi verifică serverele bloc, face-vă că blocurile sunt acolo. În cazul în care acestea sunt, perfecte. Totul este bine. THOMAS CARRIERO: Când ne-am doriți să descărcați practic fișierul de pe internet, să să zicem, vom spune la ultima MetaServer în primul rând, hei poti sa-mi spui despre unde situat acest fișier? Și MetaServer va spune, oh acest fișier de fapt, 25 de bucăți de patru megabyte, și aici sunt. Și apoi vom merge un server de bloc și de fapt descărca fiecare dintre aceste bucăți. Și apoi vom reconstrui fișierul de acolo, și apoi vom începe descărcarea. Da, așa Dropbox de oferte cu scala de fapt de foarte, sharding foarte agresiv. ALEX ALLAIN: Sharding este atunci când ia tuturor utilizatorilor în dvs. de start up sau compania dumneavoastră și poate că folosit pentru a fi într-o singură bază de date, și care funcționează mare, până când a lovit un anumit număr de utilizatori. Și într-adevăr ceea ce vrei să faceți este să găsească o cale să împartă cei peste doi baze de date, sau poate mai mult de două. În mod ideal, suficient pe care le puteți au fiecare utilizator din lume. Și astfel, atunci când ciobul, ceea ce faci este că găsi o cale de a decide care baza de date pentru a merge la care nu necesită lovind un director central. Sau poate e un foarte rapid, director central de look-up ieftin. THOMAS CARRIERO: nu avem totul stocate într-o bază de date, pentru că este aproape nu merge la scară. Deci, în loc, ceea ce vom face este să ia toate aceste informații, toate fișierele care sunt stocate pe metadatele, ciobul peste sute sau mii de baze de date logice. Și asta înseamnă că, atunci când avem o solicita informații de utilizator, vom spune în primul rând, hei care baza de date este informațiile acestui utilizator stocate în? Apoi vom practic folosesc această decizie pentru a merge găsi baza de date și că este în cazul în care vom încărca toate fișierele sau totalitatea metadatele despre fișierele. Deci, vom folosi o mulțime de sharding. Dar sharding nu este întotdeauna suficient. Vă sunt de fapt nevoie pentru a cache o mulțime de comune cererilor, deoarece chiar și cele de baze de date interogări pot fi costisitoare așa vom face, de asemenea, capturarea agresiv strategii pentru a vă asigura că cele mai cereri comune sunt destul de ușor pentru a calcula. Și practic care face o mulțime mai repede și-l face să funcționeze ex scară. Așa că e la o foarte la nivel înalt cum funcționează Dropbox. ALEX ALLAIN: Sunt Alex Allain. THOMAS CARRIERO: Și Sunt Thomas Carriero. ALEX ALLAIN: Și acest lucru este CS50.