1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Ik ben Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Ik ben een software engineer bij Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Ik ben Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Ik ben een ingenieur hier bij Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Ja, ik was eigenlijk de eerste kop TF voor CS50 7 00:00:11,320 --> 00:00:13,660 toen David Malin nam de klas. 8 00:00:13,660 --> 00:00:17,010 Ik had al les CS50 voor twee semesters 9 00:00:17,010 --> 00:00:20,700 met Mike Smith, die was voorafgaande professor daar. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Dus ik heb eigenlijk niet nemen CS50, maar ik deed TF het twee keer. 11 00:00:25,310 --> 00:00:29,050 Eenmaal als een gewone TF, en dan mijn laatste jaar 12 00:00:29,050 --> 00:00:32,520 Ik was eigenlijk hoofd TF van CS50, die veel plezier was. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Dus toen David stak 14 00:00:34,270 --> 00:00:38,647 om me over het opzetten Dropbox in de CS50 apparaat, 15 00:00:38,647 --> 00:00:41,230 Ik was echt enthousiast, omdat we eigenlijk een Linux-client, 16 00:00:41,230 --> 00:00:46,270 dus de meeste van onze gebruikers gebruiken ofwel Windows of Macintosh-clients, 17 00:00:46,270 --> 00:00:50,940 maar de Linux, Macintosh en Windows klanten zijn eigenlijk zeer vergelijkbaar. 18 00:00:50,940 --> 00:00:55,590 >> Dus wat we gedaan hebben is dat we vooraf geïnstalleerd de Dropbox Linux-client in de CS50 19 00:00:55,590 --> 00:00:59,990 apparaat, en het loopt net als al onze andere Linux-gebruikers. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Dus de manier Dropbox werkt is het 21 00:01:02,210 --> 00:01:08,590 draait als een client op vele verschillende besturingssystemen en apparaten. 22 00:01:08,590 --> 00:01:11,387 De Dropbox desktop client is een van de meest bekende, 23 00:01:11,387 --> 00:01:12,720 en een van de meest interessante. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Dus Dropbox neemt in principe alle bestanden 25 00:01:15,460 --> 00:01:19,500 die je in de map en brokken die bestanden in vier megabyte brokken. 26 00:01:19,500 --> 00:01:23,270 Dus zullen we een 100-megabyte nemen PDF-bestand en we zullen 27 00:01:23,270 --> 00:01:26,070 chunk het in 25 vier megabyte brokken. 28 00:01:26,070 --> 00:01:30,670 Die stukken worden vervolgens gecodeerd en kun je sturen we onze blok servers. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Het blok servers zijn de opslag van de blokken zelf, 30 00:01:35,980 --> 00:01:39,570 en dus elk blok wordt opgeslagen in het blok server met de gegevens 31 00:01:39,570 --> 00:01:43,990 en een Shaw 356 hash van dat blok. 32 00:01:43,990 --> 00:01:48,280 Dat is een zeer eenvoudige encryptie primitieve dat vat, in zekere zin, 33 00:01:48,280 --> 00:01:53,140 de gegevens in een zeer unieke manier dat uniek is voor die gegevens. 34 00:01:53,140 --> 00:01:55,540 >> Je zou kunnen uploaden hele bestand in een keer, 35 00:01:55,540 --> 00:02:00,120 maar het blijkt dat als je dat doet dat, echt grote bestanden nemen 36 00:02:00,120 --> 00:02:03,616 een hele lange tijd om te uploaden, en als je hebt een mislukking, je je pech 37 00:02:03,616 --> 00:02:04,740 en je hebt om het opnieuw op te starten. 38 00:02:04,740 --> 00:02:07,620 >> Wat we dan doen is vertellen we een andere server in ons systeem, 39 00:02:07,620 --> 00:02:11,550 en wat we de metadata noemen server, dat hey dit is een bestand, 40 00:02:11,550 --> 00:02:14,200 en het is samengesteld uit de volgende lijst met blokken. 41 00:02:14,200 --> 00:02:17,030 En we voorbij de hashes die blokken identificeren 42 00:02:17,030 --> 00:02:18,770 in plaats van nieuwe uploads het hele blok. 43 00:02:18,770 --> 00:02:20,820 De metaserver dan controleert het blok servers, 44 00:02:20,820 --> 00:02:22,153 zorgt ervoor dat de blokken zijn er. 45 00:02:22,153 --> 00:02:23,140 Als ze zijn, perfect. 46 00:02:23,140 --> 00:02:24,040 Alles is goed. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Als we willen in principe downloaden 48 00:02:26,400 --> 00:02:30,050 de bestanden van het internet, laten we laten we zeggen, we zeggen tegen de laatste metaserver 49 00:02:30,050 --> 00:02:33,090 eerste, hey kunt u mij vertellen over waar dit bestand zich? 50 00:02:33,090 --> 00:02:37,230 En metaserver zal zeggen, oh dit bestand eigenlijk 25 vier-megabyte brokken, 51 00:02:37,230 --> 00:02:38,210 en hier zijn ze. 52 00:02:38,210 --> 00:02:41,712 En dan zullen we een blok server gaan en eigenlijk elk van deze brokken downloaden. 53 00:02:41,712 --> 00:02:43,670 En dan gaan we reconstrueren het bestand van daar, 54 00:02:43,670 --> 00:02:45,086 en dan zullen we het downloaden te starten. 55 00:02:45,086 --> 00:02:47,580 Ja, dat Dropbox van deals met schaal in principe 56 00:02:47,580 --> 00:02:50,460 door zeer, zeer agressief sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding is wanneer u nemen alle gebruikers in je start-up 58 00:02:56,400 --> 00:03:00,010 of uw bedrijf en misschien zijn ze vroeger in een databank, 59 00:03:00,010 --> 00:03:02,620 en dat werkt geweldig tot u raakte een bepaald aantal gebruikers. 60 00:03:02,620 --> 00:03:04,578 En echt wat je wilt te doen is een manier vinden 61 00:03:04,578 --> 00:03:07,410 die verdeeld over twee databases, of misschien wel meer dan twee. 62 00:03:07,410 --> 00:03:10,830 Idealiter genoeg dat je kunt heeft elke gebruiker in de wereld. 63 00:03:10,830 --> 00:03:13,080 >> En dus als je scherf, wat je doet is je 64 00:03:13,080 --> 00:03:16,830 een manier vinden om te beslissen welke database te gaan 65 00:03:16,830 --> 00:03:20,240 die niet vereist het slaan van een centrale directory. 66 00:03:20,240 --> 00:03:23,670 Of misschien is het een zeer snelle, goedkope look-up centrale directory. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Wij hebben nooit alles opgeslagen in een databank, 68 00:03:27,189 --> 00:03:28,980 want dat is bijna nooit op schaal. 69 00:03:28,980 --> 00:03:33,970 Dus in plaats daarvan, wat we zullen doen is alle die informatie, alle bestanden die 70 00:03:33,970 --> 00:03:36,610 worden opgeslagen op de metadata, shard over honderden 71 00:03:36,610 --> 00:03:38,710 of duizenden logische databases. 72 00:03:38,710 --> 00:03:42,900 En dat betekent dat als we een verzoek om informatie van een gebruiker, 73 00:03:42,900 --> 00:03:46,890 zullen we eerst zeggen, hey welke database wordt informatie van deze gebruiker opgeslagen in? 74 00:03:46,890 --> 00:03:49,852 Dan zullen we in principe gebruiken die beslissing om te gaan 75 00:03:49,852 --> 00:03:51,560 vinden die database en dat is waar we zullen 76 00:03:51,560 --> 00:03:55,080 laadt alle bestanden of alle de metadata over de bestanden. 77 00:03:55,080 --> 00:03:56,464 >> Dus gebruiken we veel sharding. 78 00:03:56,464 --> 00:03:57,880 Maar sharding is niet altijd genoeg. 79 00:03:57,880 --> 00:04:00,380 Je bent eigenlijk moet cachen veel gemeenschappelijke verzoeken 80 00:04:00,380 --> 00:04:04,010 omdat zelfs die databank queries kan duur zijn 81 00:04:04,010 --> 00:04:07,570 dus we doen ook agressief capturing strategieën om ervoor te zorgen dat de 82 00:04:07,570 --> 00:04:10,310 gemeenschappelijke verzoeken zijn vrij eenvoudig te berekenen. 83 00:04:10,310 --> 00:04:14,630 En in feite dat maakt veel sneller en het maakt het werken ex schaal. 84 00:04:14,630 --> 00:04:17,320 Dus dat is op een zeer hoog niveau hoe Dropbox werkt. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Ik ben Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: En Ik ben Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: En dit is CS50. 88 00:04:22,579 --> 00:04:23,936