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.