1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Es esmu Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Es esmu programmatūras inženieris Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Es esmu Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Es esmu inženieris šeit Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Jā, es biju faktiski pirmā vadītāja TF par CS50 7 00:00:11,320 --> 00:00:13,660 kad David Malin pārņēma klasi. 8 00:00:13,660 --> 00:00:17,010 Man jau bija mācību CS50 divus semestrus 9 00:00:17,010 --> 00:00:20,700 ar Mike Smith, kurš bija pirms profesors tur. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Tāpēc es tiešām nebija veikt CS50, bet es tomēr TF to divreiz. 11 00:00:25,310 --> 00:00:29,050 Vienreiz kā regulāru TF, un tad mans vecākais gads 12 00:00:29,050 --> 00:00:32,520 Es biju tiešām vadītājs TF no CS50, kas bija daudz jautrības. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: So kad David vērsās 14 00:00:34,270 --> 00:00:38,647 man par izveidot Dropbox ir CS50 ierīces, 15 00:00:38,647 --> 00:00:41,230 Es biju patiesi satraukti, jo mums tiešām ir Linux klients, 16 00:00:41,230 --> 00:00:46,270 tāpēc lielākā daļa no mūsu lietotājiem izmantot vai nu Windows vai Macintosh klientiem, 17 00:00:46,270 --> 00:00:50,940 bet Linux, Macintosh un Windows klienti ir visi patiesībā ir ļoti līdzīgi. 18 00:00:50,940 --> 00:00:55,590 >> Tātad, ko mēs izdarījām ir mums iepriekš instalēta Dropbox Linux klients ir CS50 19 00:00:55,590 --> 00:00:59,990 ierīces, un tas darbojas tāpat kā visiem citiem mūsu Linux lietotājiem. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: So kā Dropbox darbojas tas 21 00:01:02,210 --> 00:01:08,590 darbojas kā klients no daudziem dažādiem operētājsistēmas un ierīces. 22 00:01:08,590 --> 00:01:11,387 Dropbox desktop klients ir viens no labi zināms, 23 00:01:11,387 --> 00:01:12,720 un viens no visvairāk interesanti. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: So Dropbox galvenokārt veic visus failus 25 00:01:15,460 --> 00:01:19,500 ka jūs likts uz mapi un tas gabalu šos failus četru megabaitu gabalos. 26 00:01:19,500 --> 00:01:23,270 Tātad mēs ņemšu 100 megabaitu PDF fails, un mēs 27 00:01:23,270 --> 00:01:26,070 rieciens to 25 četru megabaitu gabalos. 28 00:01:26,070 --> 00:01:30,670 Šie gabali ir tad šifrēta, un tad mēs tos sūtīt uz mūsu bloka serveriem. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Bloku serveri pašiem blokiem uzglabāšana, 30 00:01:35,980 --> 00:01:39,570 un tā katrs bloks tiek glabāta bloks serveris ar datiem 31 00:01:39,570 --> 00:01:43,990 un Shaw 356 hash no šī bloka. 32 00:01:43,990 --> 00:01:48,280 Tas ir ļoti pamata šifrēšanas primitīvs kas apkopoti, savā ziņā, 33 00:01:48,280 --> 00:01:53,140 dati ļoti unikālā veidā , kas ir unikāla šiem datiem. 34 00:01:53,140 --> 00:01:55,540 >> Jūs varētu augšupielādēt Visa failu visu uzreiz, 35 00:01:55,540 --> 00:02:00,120 bet izrādās, ja jūs ka, patiešām lieli faili aizņem 36 00:02:00,120 --> 00:02:03,616 ļoti ilgs laiks, lai augšupielādēt, un, ja Jums ir mazspēja, jūs no luck 37 00:02:03,616 --> 00:02:04,740 un jums ir restartēt. 38 00:02:04,740 --> 00:02:07,620 >> Ko mēs tad darīt, ir mums pateikt otru serveri mūsu sistēmā, 39 00:02:07,620 --> 00:02:11,550 un tas, ko mēs saucam metadatus Serveris, ka hey tas ir fails, 40 00:02:11,550 --> 00:02:14,200 un tas sastāv no pēc saraksta blokiem. 41 00:02:14,200 --> 00:02:17,030 Un mēs iet uz augšu hashes identificēt šos blokus 42 00:02:17,030 --> 00:02:18,770 nevis atkārtoti augšupielādējot viss bloks. 43 00:02:18,770 --> 00:02:20,820 Metaserver tad pārbauda bloku serveriem, 44 00:02:20,820 --> 00:02:22,153 pārliecinās, ka bloki ir tur. 45 00:02:22,153 --> 00:02:23,140 Ja tie ir, perfekta. 46 00:02:23,140 --> 00:02:24,040 Viss ir labi. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Kad mēs vēlas, lai būtībā lejupielādētu 48 00:02:26,400 --> 00:02:30,050 failu no interneta, pieņemsim teiksim, mēs sakām pēdējā metaserver 49 00:02:30,050 --> 00:02:33,090 pirmkārt, hey, jūs varat man pateikt par to, kur šī faila atrodas? 50 00:02:33,090 --> 00:02:37,230 Un metaserver teiks, ak šis fails ir faktiski 25 četru megabaitu gabalos, 51 00:02:37,230 --> 00:02:38,210 un šeit tie ir. 52 00:02:38,210 --> 00:02:41,712 Un tad mēs iesim bloka serveri un faktiski lejupielādēt katru no šiem gabalos. 53 00:02:41,712 --> 00:02:43,670 Un tad mēs rekonstruēt failu no turienes, 54 00:02:43,670 --> 00:02:45,086 un tad mēs sāktu lejupielādi. 55 00:02:45,086 --> 00:02:47,580 Jā, tāpēc Dropbox darījumu ar skalu pamatā 56 00:02:47,580 --> 00:02:50,460 ko ļoti, ļoti agresīvi sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding ir tad, kad tu veikt visus lietotājus savā uzsākšanas 58 00:02:56,400 --> 00:03:00,010 vai jūsu uzņēmums, un varbūt viņi izmanto, lai vienā datu bāzē, 59 00:03:00,010 --> 00:03:02,620 un tas darbojas lieliski, kamēr jūs hit noteiktu lietotāju skaitu. 60 00:03:02,620 --> 00:03:04,578 Un tiešām, ko jūs vēlaties jādara, ir atrast kādu veidu, 61 00:03:04,578 --> 00:03:07,410 sadalīt tos divās datu bāzēm, vai, iespējams, ir vairāk nekā divi. 62 00:03:07,410 --> 00:03:10,830 Ideāli, pietiekami, ka jūs varat ir katram lietotājam pasaulē. 63 00:03:10,830 --> 00:03:13,080 >> Un tad, kad tu Shard, ko jūs darāt, ir jums 64 00:03:13,080 --> 00:03:16,830 atrast kādu veidu, lemjot kuru datubāzi iet 65 00:03:16,830 --> 00:03:20,240 to, kas neprasa hitting centrālo direktoriju. 66 00:03:20,240 --> 00:03:23,670 Vai varbūt tas ir ļoti ātrs, lēti meklēt-up centrālo direktoriju. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Mums nekad nav viss glabājas vienā datu bāzē, 68 00:03:27,189 --> 00:03:28,980 jo tas ir gandrīz nekad mērogā. 69 00:03:28,980 --> 00:03:33,970 Tā vietā, ko mēs darīsim, ir jāveic visi šī informācija, visi faili, kas 70 00:03:33,970 --> 00:03:36,610 tiek saglabāti uz metadatiem, Shard pāri simtiem 71 00:03:36,610 --> 00:03:38,710 vai tūkstošiem loģisko datu bāzēm. 72 00:03:38,710 --> 00:03:42,900 Un tas nozīmē, ka tad, kad mēs esam pieprasītu lietotāja informāciju, 73 00:03:42,900 --> 00:03:46,890 mēs vispirms teikt, hey, kas datu bāzes Vai šī lietotāja informācija glabājas? 74 00:03:46,890 --> 00:03:49,852 Tad mēs būtībā izmantot šo lēmumu, lai dotos 75 00:03:49,852 --> 00:03:51,560 konstatēt, ka datu bāze un tas ir, ja mēs 76 00:03:51,560 --> 00:03:55,080 ielādēt visus failus vai visus metadati par failus. 77 00:03:55,080 --> 00:03:56,464 >> Tāpēc mēs izmantojam daudz sharding. 78 00:03:56,464 --> 00:03:57,880 Bet sharding ne vienmēr ir pietiekami. 79 00:03:57,880 --> 00:04:00,380 Jums tiešām ir nepieciešams, lai cache daudz kopīgo pieprasījumu, 80 00:04:00,380 --> 00:04:04,010 jo pat tie, datu bāzes vaicājumi var būt dārgi 81 00:04:04,010 --> 00:04:07,570 tāpēc mēs arī to agresīvi notveršanā stratēģijas, lai pārliecinātos, ka visvairāk 82 00:04:07,570 --> 00:04:10,310 kopējie pieprasījumi ir diezgan viegli aprēķināt. 83 00:04:10,310 --> 00:04:14,630 Un būtībā, kas padara daudz ātrāk, un tas padara darbu ex skalu. 84 00:04:14,630 --> 00:04:17,320 Tātad tas ir pie ļoti augsta līmeņa, kā Dropbox darbojas. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Es esmu Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Un Es esmu Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Un tas ir CS50. 88 00:04:22,579 --> 00:04:23,936