THOMAS Carriero: Ik ben Thomas Carriero. Ik ben een software engineer bij Dropbox. ALEX ALLAIN: Ik ben Alex Allain. Ik ben een ingenieur hier bij Dropbox. THOMAS Carriero: Ja, ik was eigenlijk de eerste kop TF voor CS50 toen David Malin nam de klas. Ik had al les CS50 voor twee semesters met Mike Smith, die was voorafgaande professor daar. ALEX ALLAIN: Dus ik heb eigenlijk niet nemen CS50, maar ik deed TF het twee keer. Eenmaal als een gewone TF, en dan mijn laatste jaar Ik was eigenlijk hoofd TF van CS50, die veel plezier was. THOMAS Carriero: Dus toen David stak om me over het opzetten Dropbox in de CS50 apparaat, Ik was echt enthousiast, omdat we eigenlijk een Linux-client, dus de meeste van onze gebruikers gebruiken ofwel Windows of Macintosh-clients, maar de Linux, Macintosh en Windows klanten zijn eigenlijk zeer vergelijkbaar. Dus wat we gedaan hebben is dat we vooraf geïnstalleerd de Dropbox Linux-client in de CS50 apparaat, en het loopt net als al onze andere Linux-gebruikers. ALEX ALLAIN: Dus de manier Dropbox werkt is het draait als een client op vele verschillende besturingssystemen en apparaten. De Dropbox desktop client is een van de meest bekende, en een van de meest interessante. THOMAS Carriero: Dus Dropbox neemt in principe alle bestanden die je in de map en brokken die bestanden in vier megabyte brokken. Dus zullen we een 100-megabyte nemen PDF-bestand en we zullen chunk het in 25 vier megabyte brokken. Die stukken worden vervolgens gecodeerd en kun je sturen we onze blok servers. ALEX ALLAIN: Het blok servers zijn de opslag van de blokken zelf, en dus elk blok wordt opgeslagen in het blok server met de gegevens en een Shaw 356 hash van dat blok. Dat is een zeer eenvoudige encryptie primitieve dat vat, in zekere zin, de gegevens in een zeer unieke manier dat uniek is voor die gegevens. Je zou kunnen uploaden hele bestand in een keer, maar het blijkt dat als je dat doet dat, echt grote bestanden nemen een hele lange tijd om te uploaden, en als je hebt een mislukking, je je pech en je hebt om het opnieuw op te starten. Wat we dan doen is vertellen we een andere server in ons systeem, en wat we de metadata noemen server, dat hey dit is een bestand, en het is samengesteld uit de volgende lijst met blokken. En we voorbij de hashes die blokken identificeren in plaats van nieuwe uploads het hele blok. De metaserver dan controleert het blok servers, zorgt ervoor dat de blokken zijn er. Als ze zijn, perfect. Alles is goed. THOMAS Carriero: Als we willen in principe downloaden de bestanden van het internet, laten we laten we zeggen, we zeggen tegen de laatste metaserver eerste, hey kunt u mij vertellen over waar dit bestand zich? En metaserver zal zeggen, oh dit bestand eigenlijk 25 vier-megabyte brokken, en hier zijn ze. En dan zullen we een blok server gaan en eigenlijk elk van deze brokken downloaden. En dan gaan we reconstrueren het bestand van daar, en dan zullen we het downloaden te starten. Ja, dat Dropbox van deals met schaal in principe door zeer, zeer agressief sharding. ALEX ALLAIN: Sharding is wanneer u nemen alle gebruikers in je start-up of uw bedrijf en misschien zijn ze vroeger in een databank, en dat werkt geweldig tot u raakte een bepaald aantal gebruikers. En echt wat je wilt te doen is een manier vinden die verdeeld over twee databases, of misschien wel meer dan twee. Idealiter genoeg dat je kunt heeft elke gebruiker in de wereld. En dus als je scherf, wat je doet is je een manier vinden om te beslissen welke database te gaan die niet vereist het slaan van een centrale directory. Of misschien is het een zeer snelle, goedkope look-up centrale directory. THOMAS Carriero: Wij hebben nooit alles opgeslagen in een databank, want dat is bijna nooit op schaal. Dus in plaats daarvan, wat we zullen doen is alle die informatie, alle bestanden die worden opgeslagen op de metadata, shard over honderden of duizenden logische databases. En dat betekent dat als we een verzoek om informatie van een gebruiker, zullen we eerst zeggen, hey welke database wordt informatie van deze gebruiker opgeslagen in? Dan zullen we in principe gebruiken die beslissing om te gaan vinden die database en dat is waar we zullen laadt alle bestanden of alle de metadata over de bestanden. Dus gebruiken we veel sharding. Maar sharding is niet altijd genoeg. Je bent eigenlijk moet cachen veel gemeenschappelijke verzoeken omdat zelfs die databank queries kan duur zijn dus we doen ook agressief capturing strategieën om ervoor te zorgen dat de gemeenschappelijke verzoeken zijn vrij eenvoudig te berekenen. En in feite dat maakt veel sneller en het maakt het werken ex schaal. Dus dat is op een zeer hoog niveau hoe Dropbox werkt. ALEX ALLAIN: Ik ben Alex Allain. THOMAS Carriero: En Ik ben Thomas Carriero. ALEX ALLAIN: En dit is CS50.