1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Sunt Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Sunt un inginer de software la Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Sunt Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Sunt un inginer aici, la Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Da, am fost de fapt primul TF cap pentru CS50 7 00:00:11,320 --> 00:00:13,660 când David Malin a preluat clasa. 8 00:00:13,660 --> 00:00:17,010 Am fost deja de predare CS50 pentru două semestre 9 00:00:17,010 --> 00:00:20,700 cu Mike Smith, care a fost profesorul anterior acolo. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Deci, eu de fapt nu ia CS50, dar am făcut-o de două ori TF. 11 00:00:25,310 --> 00:00:29,050 Odată ca TF regulat, și apoi ultimul an 12 00:00:29,050 --> 00:00:32,520 Am fost de fapt TF șef de CS50, care a fost o mulțime de distracție. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Deci, atunci când David a ajuns la 14 00:00:34,270 --> 00:00:38,647 pentru a-mi despre configurarea Dropbox în aparatul CS50, 15 00:00:38,647 --> 00:00:41,230 Am fost foarte emoționat, pentru că avem de fapt un client Linux, 16 00:00:41,230 --> 00:00:46,270 astfel încât cele mai multe dintre utilizatorii nostri folosesc fie Ferestre sau clienti Macintosh, 17 00:00:46,270 --> 00:00:50,940 dar Linux, Macintosh, și Windows clienții sunt de fapt foarte asemănătoare. 18 00:00:50,940 --> 00:00:55,590 >> Deci, ceea ce am făcut este că pre-instalat clientul Dropbox Linux în CS50 19 00:00:55,590 --> 00:00:59,990 aparat, și se execută la fel ca toate ale altor utilizatori noastre Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Deci, Dropbox fel de lucrări este 21 00:01:02,210 --> 00:01:08,590 ruleaza ca un client pe multe diferite sisteme de operare și dispozitive. 22 00:01:08,590 --> 00:01:11,387 Clientul desktop Dropbox este una dintre cele mai cunoscute, 23 00:01:11,387 --> 00:01:12,720 și una dintre cele mai interesante. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Deci Dropbox practic ia toate fișierele 25 00:01:15,460 --> 00:01:19,500 pe care le pune în dosarul și-l bucăți aceste fișiere în bucăți de patru megabyte. 26 00:01:19,500 --> 00:01:23,270 Deci, vom lua un 100-megabyte Fișier PDF și ne vom 27 00:01:23,270 --> 00:01:26,070 bucată l în 25 de bucăți de patru megabyte. 28 00:01:26,070 --> 00:01:30,670 Aceste bucăți sunt apoi criptate și apoi le trimite la serverele noastre de bloc. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Serverele bloc sunt depozitarea pentru blocurile respective, 30 00:01:35,980 --> 00:01:39,570 și astfel fiecare bloc este stocat în serverul bloc cu datele 31 00:01:39,570 --> 00:01:43,990 și un hash Shaw 356 de blocul. 32 00:01:43,990 --> 00:01:48,280 Asta-i o criptare foarte primitiv de bază care rezumă, într-un sens, 33 00:01:48,280 --> 00:01:53,140 datele într-un mod foarte unic care este unic pentru că datele. 34 00:01:53,140 --> 00:01:55,540 >> Ai putea încărca întreg fișier dintr-o dată, 35 00:01:55,540 --> 00:02:00,120 dar se pare că, dacă faci că, fișiere foarte mari să ia 36 00:02:00,120 --> 00:02:03,616 o foarte mult timp pentru a încărca, și în cazul în care aveți un eșec, nu mai ai noroc 37 00:02:03,616 --> 00:02:04,740 și trebuie să-l reporniți. 38 00:02:04,740 --> 00:02:07,620 >> Ce atunci facem este să spunem un alt server în sistemul nostru, 39 00:02:07,620 --> 00:02:11,550 și ceea ce noi numim metadatele de server, care hei aceasta este un fișier, 40 00:02:11,550 --> 00:02:14,200 și este compus din Urmatoarea lista de blocuri. 41 00:02:14,200 --> 00:02:17,030 Și vom trece în sus de hash pentru a identifica acele blocuri 42 00:02:17,030 --> 00:02:18,770 mai degrabă decât re-încărcarea întregul bloc. 43 00:02:18,770 --> 00:02:20,820 MetaServer apoi verifică serverele bloc, 44 00:02:20,820 --> 00:02:22,153 face-vă că blocurile sunt acolo. 45 00:02:22,153 --> 00:02:23,140 În cazul în care acestea sunt, perfecte. 46 00:02:23,140 --> 00:02:24,040 Totul este bine. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Când ne-am doriți să descărcați practic 48 00:02:26,400 --> 00:02:30,050 fișierul de pe internet, să să zicem, vom spune la ultima MetaServer 49 00:02:30,050 --> 00:02:33,090 în primul rând, hei poti sa-mi spui despre unde situat acest fișier? 50 00:02:33,090 --> 00:02:37,230 Și MetaServer va spune, oh acest fișier de fapt, 25 de bucăți de patru megabyte, 51 00:02:37,230 --> 00:02:38,210 și aici sunt. 52 00:02:38,210 --> 00:02:41,712 Și apoi vom merge un server de bloc și de fapt descărca fiecare dintre aceste bucăți. 53 00:02:41,712 --> 00:02:43,670 Și apoi vom reconstrui fișierul de acolo, 54 00:02:43,670 --> 00:02:45,086 și apoi vom începe descărcarea. 55 00:02:45,086 --> 00:02:47,580 Da, așa Dropbox de oferte cu scala de fapt 56 00:02:47,580 --> 00:02:50,460 de foarte, sharding foarte agresiv. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding este atunci când ia tuturor utilizatorilor în dvs. de start up 58 00:02:56,400 --> 00:03:00,010 sau compania dumneavoastră și poate că folosit pentru a fi într-o singură bază de date, 59 00:03:00,010 --> 00:03:02,620 și care funcționează mare, până când a lovit un anumit număr de utilizatori. 60 00:03:02,620 --> 00:03:04,578 Și într-adevăr ceea ce vrei să faceți este să găsească o cale 61 00:03:04,578 --> 00:03:07,410 să împartă cei peste doi baze de date, sau poate mai mult de două. 62 00:03:07,410 --> 00:03:10,830 În mod ideal, suficient pe care le puteți au fiecare utilizator din lume. 63 00:03:10,830 --> 00:03:13,080 >> Și astfel, atunci când ciobul, ceea ce faci este că 64 00:03:13,080 --> 00:03:16,830 găsi o cale de a decide care baza de date pentru a merge 65 00:03:16,830 --> 00:03:20,240 la care nu necesită lovind un director central. 66 00:03:20,240 --> 00:03:23,670 Sau poate e un foarte rapid, director central de look-up ieftin. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: nu avem totul stocate într-o bază de date, 68 00:03:27,189 --> 00:03:28,980 pentru că este aproape nu merge la scară. 69 00:03:28,980 --> 00:03:33,970 Deci, în loc, ceea ce vom face este să ia toate aceste informații, toate fișierele care 70 00:03:33,970 --> 00:03:36,610 sunt stocate pe metadatele, ciobul peste sute 71 00:03:36,610 --> 00:03:38,710 sau mii de baze de date logice. 72 00:03:38,710 --> 00:03:42,900 Și asta înseamnă că, atunci când avem o solicita informații de utilizator, 73 00:03:42,900 --> 00:03:46,890 vom spune în primul rând, hei care baza de date este informațiile acestui utilizator stocate în? 74 00:03:46,890 --> 00:03:49,852 Apoi vom practic folosesc această decizie pentru a merge 75 00:03:49,852 --> 00:03:51,560 găsi baza de date și că este în cazul în care vom 76 00:03:51,560 --> 00:03:55,080 încărca toate fișierele sau totalitatea metadatele despre fișierele. 77 00:03:55,080 --> 00:03:56,464 >> Deci, vom folosi o mulțime de sharding. 78 00:03:56,464 --> 00:03:57,880 Dar sharding nu este întotdeauna suficient. 79 00:03:57,880 --> 00:04:00,380 Vă sunt de fapt nevoie pentru a cache o mulțime de comune cererilor, 80 00:04:00,380 --> 00:04:04,010 deoarece chiar și cele de baze de date interogări pot fi costisitoare 81 00:04:04,010 --> 00:04:07,570 așa vom face, de asemenea, capturarea agresiv strategii pentru a vă asigura că cele mai 82 00:04:07,570 --> 00:04:10,310 cereri comune sunt destul de ușor pentru a calcula. 83 00:04:10,310 --> 00:04:14,630 Și practic care face o mulțime mai repede și-l face să funcționeze ex scară. 84 00:04:14,630 --> 00:04:17,320 Așa că e la o foarte la nivel înalt cum funcționează Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Sunt Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Și Sunt Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Și acest lucru este CS50. 88 00:04:22,579 --> 00:04:23,936