THOMAS Carriero: Jeg er Thomas Carriero. Jeg er en software ingeniør på Dropbox. ALEX ALLAIN: Jeg er Alex Allain. Jeg er en ingeniør her på Dropbox. THOMAS Carriero: Ja, jeg var faktisk den første hoved TF til CS50 da David Malin overtog klassen. Jeg var allerede blevet undervist CS50 to semestre med Mike Smith, som var forudgående professor der. ALEX ALLAIN: Så faktisk gjorde jeg ikke tage CS50, men jeg gjorde TF det to gange. Når som en almindelig TF, og så min senior år Jeg var faktisk leder TF af CS50, som var en masse sjov. THOMAS Carriero: So da David nåede ud til mig om opsætning Dropbox i CS50 apparatet Jeg var virkelig begejstret, fordi vi faktisk har en Linux-klient, så de fleste af vores brugere anvender enten Windows eller Macintosh-klienter, men Linux, Macintosh og Windows kunder er alle meget ens. Så hvad vi gjorde er vi pre-installeret Dropbox Linux klient i CS50 apparat, og det kører ligesom alle vores andre Linux-brugere. ALEX ALLAIN: Så måde Dropbox virker er det kører som en klient på mange forskellige operativsystemer og enheder. Dropbox desktop-klient er en af ​​de mest velkendte, og en af ​​de mest interessante. THOMAS Carriero: So Dropbox dybest set tager alle filer at du lægger i den mappe og det klumper disse filer i fire megabyte bidder. Så vi tager en 100-megabyte PDF-fil, og vi får luns IT i 25 fire-megabyte bidder. Disse klumper krypteres og så sender vi dem til vores blok servere. ALEX ALLAIN: Spærringen servere er opbevaring for blokkene selv, og så hver blok er lagret i blokken server med data og en Shaw 356 hash af denne blok. Det er en meget grundlæggende kryptering primitive der opsummerer, i en vis forstand, data i en meget unik måde der er unik for den pågældende data. Du kan uploade hele filen på én gang, men det viser sig, hvis du gør , at virkelig store filer tager en virkelig lang tid at uploade, og hvis har du en fiasko, er du ude af lykke og du er nødt til at genstarte den. Hvad vi så gør, er vi fortæller en anden server i vores system, og det, vi kalder metadata server, at hey dette er en fil, og det er sammensat af Følgende liste af blokke. Og vi passerer op hashes at identificere de blokke snarere end re-upload hele blokken. Den Metaserver derefter kontrollerer blok servere, gør sikker på blokkene er der. Hvis de er, perfekt. Alt er godt. THOMAS Carriero: Når vi ønsker at dybest set downloade filen fra internettet, så lad os sige, at vi vil sige til den sidste Metaserver første, hej kan du fortælle mig om, hvor denne fil er placeret? Og Metaserver vil sige, åh denne fil faktisk 25 fire megabyte stykker, og her er de. Og så vil vi gå en blok server og faktisk hente hver af disse stykker. Og så vil vi rekonstruere filen derfra, og så vil vi starte overførslen. Ja, så Dropbox af tilbud med skala dybest set ved meget, meget aggressiv sharding. ALEX ALLAIN: sharding er, når du tage alle brugere i din opstart eller din virksomhed og måske de bruges til at være i en database, og det virker fint, indtil du ramme et bestemt antal brugere. Og virkelig, hvad du ønsker at gøre, er at finde en måde at splitte dem på tværs af to databaser, eller måske mere end to. Ideelt set, nok, at du kan har hver bruger i verden. Og så når du shard, hvad du skal gøre er du finde en måde at afgøre hvilken database til at gå at der ikke kræver rammer en central bibliotek. Eller måske er det en meget hurtig, billige look-up central bibliotek. THOMAS Carriero: Vi har aldrig har alt er gemt i en database, fordi det er næsten aldrig kommer til at skalere. Så i stedet for, hvad vi vil gøre, er at tage alle at oplysninger, alle de filer, er gemt på metadata, shard på tværs af hundredvis eller tusindvis af logiske databaser. Og det betyder, at når vi har en anmode om en brugers oplysninger, Vi vil først sige, hey hvilken database denne brugers information gemt i? Så vil vi dybest set bruge beslutningen om at gå finder, at databasen og det er, hvor vi vil indlæse alle de filer eller alle metadata om filerne. Så vi bruger en masse sharding. Men sharding er ikke altid nok. Du er faktisk nødt til at cache en masse af de fælles anmodninger fordi selv dem database forespørgsler kan være dyrt så gør vi også aggressive fanger strategier for at gøre sikker på, at den mest fælles anmodninger ganske let at beregne. Og dybest set, der gør en masse hurtigere og det gør det arbejde ex skala. Så det er på et meget højt niveau hvordan Dropbox virker. ALEX ALLAIN: Jeg er Alex Allain. THOMAS Carriero Og Jeg hedder Thomas Carriero. ALEX ALLAIN: Og det er CS50.