THOMAS Carriero: Jeg er Thomas Carriero. Jeg er en programvareingeniør hos Dropbox. ALEX ALLAIN: Jeg er Alex Allain. Jeg er en ingeniør her på Dropbox. THOMAS Carriero: Ja, jeg var faktisk den første lederen TF for CS50 da David Malin tok over klassen. Jeg hadde allerede vært undervisning CS50 for to semestre med Mike Smith, som var tidligere professor der. ALEX ALLAIN: Så jeg faktisk gjorde ikke ta CS50, men jeg gjorde TF den to ganger. En gang som en vanlig TF, og deretter mitt siste år Jeg var faktisk hodet TF av CS50, som var mye moro. THOMAS Carriero: Så når David nådde ut til meg om å sette opp Dropbox i CS50 apparatet, Jeg var veldig spent, fordi vi har faktisk en Linux-klient, slik at de fleste av våre brukere bruker enten Windows eller Macintosh-klienter, men Linux, Macintosh og Windows klienter er alt faktisk veldig like. Så det vi gjorde er vi forhåndsinstallert Dropbox Linux-klienten i CS50 apparatet, og det går akkurat som alle våre andre Linux-brukere. ALEX ALLAIN: Så måte Dropbox fungerer er det Kjører som en klient på mange forskjellige operativsystemer og enheter. Dropbox desktop klient er en av de mest kjente, og en av de mest interessante. THOMAS Carriero: Så Dropbox utgangspunktet tar alle filene som du putter i den mappen og det biter disse filene inn i fire megabyte biter. Så får vi ta en 100-megabyte PDF-fil, og vi vil blings det inn 25 fire-megabyte biter. De biter blir så kryptert og Da vi sende dem til våre blokk servere. ALEX ALLAIN: Blokken servere er lagring for blokkene selv, og slik at hver blokk er lagret i blokken server med dataene og en Shaw 356 hash av den blokken. Det er en helt grunnleggende kryptering primitive som oppsummerer, i en viss forstand, dataene i en meget unik måte som er unikt for disse dataene. Du kan laste opp hele filen på en gang, men det viser seg hvis du gjør det, egentlig store filer tar en virkelig lang tid å laste opp, og hvis du har en fiasko, er du ute av lykken og du må starte den. Det vi da gjør er vi fortelle en annen server i systemet vårt, og hva vi kaller metadata server, hei dette er at en fil, og det er sammensatt av følgende liste over blokker. Og vi passerer opp hashes å identifisere disse blokkene snarere enn re-opplasting hele blokken. Den metaserver deretter kontrollerer blokk servere, gjør at blokkene er der. Hvis de er, perfekt. Alt er bra. THOMAS Carriero: Når vi vil i utgangspunktet laste ned filen fra internett, la oss si, vi vil si til den siste metaserver første, hei kan du fortelle meg om hvor denne filen ligger? Og metaserver vil si, oh denne filen faktisk 25 fire-megabyte biter, og her er de. Og så skal vi gå en blokk server og faktisk laste ned hver av de biter. Og så får vi rekonstruere filen derfra, og så får vi starte nedlastingen. Ja, så Dropbox avtaler med skala i utgangspunktet av svært, svært aggressiv sharding. ALEX ALLAIN: Sharding er når du ta alle brukerne i din starter opp eller din bedrift og kanskje de benyttes til å være i en database, og som fungerer bra til du treffer et visst antall brukere. Og egentlig hva du vil å gjøre er å finne en måte å splitte de over to databaser, eller kanskje mer enn to. Ideelt sett, nok til at du kan har hver bruker i verden. Og så når du glasskår, hva du gjør er du finne en måte å avgjøre hvilken database for å gå I tillegg krever treffer en sentral katalog. Eller kanskje det er en veldig rask, billig look-up sentral katalog. THOMAS Carriero: Vi har aldri alt som er lagret i en database, fordi det er nesten aldri kommer til å skalere. Så i stedet, hva vi vil gjøre er å ta alle denne informasjonen, alle filene som er lagret på metadataene, glasskår på tvers av hundrevis eller tusenvis av logiske databaser. Og det betyr at når vi har en be om en brukers informasjon, Vi vil først si, hei hvilken database er denne brukerens informasjon som er lagret i? Da skal vi i utgangspunktet bruke at beslutningen om å gå finne den databasen og det er der vi vil laste alle filene eller alt metadata om filene. Så vi bruker mye sharding. Men sharding er ikke alltid nok. Du er faktisk trenger å cache mange av de vanlige forespørsler, fordi selv de database spørringer kan bli dyrt så vi også gjøre aggressive fange strategier for å sørge for at de mest vanlige forespørsler er ganske lett å beregne. Og i utgangspunktet som gjør mye raskere, og det gjør det fungerer ex skala. Så det er på et svært høyt nivå hvordan Dropbox fungerer. ALEX ALLAIN: Jeg er Alex Allain. THOMAS Carriero: Og Jeg er Thomas Carriero. ALEX ALLAIN: Og dette er CS50.