THOMAS Carriero: Jag är Thomas Carriero. Jag är en programvara ingenjör på Dropbox. ALEX ALLAIN: Jag är Alex Allain. Jag är ingenjör här på Dropbox. THOMAS Carriero: Ja, jag var faktiskt den första huvud TF för CS50 när David Malin tog över klassen. Jag hade redan undervisat CS50 för två terminer med Mike Smith, som var teknikens professor där. ALEX ALLAIN: Så jag gjorde faktiskt inte ta CS50, men jag gjorde TF den två gånger. En gång som en vanlig TF, och sedan mitt sista år Jag var faktiskt chef TF för CS50, vilket var mycket roligt. THOMAS Carriero: Så När David nått ut till mig om att ställa in Dropbox i CS50 apparaten, Jag var verkligen spännande, eftersom vi faktiskt har en Linux-klient, så de flesta av våra användare använder antingen Windows eller Macintosh-klienter, men Linux, Mac och Windows klienter är alla faktiskt mycket lika. Så vad vi gjorde är att vi förinstallerat Dropbox Linux-klienten i CS50 apparat, och det går precis som alla våra andra Linux-användare. ALEX ALLAIN: Så hur Dropbox fungerar är det körs som en klient på många olika operativsystem och enheter. Den Dropbox-klienten är en av de mest välkända, och en av de mest intressanta. THOMAS Carriero: Så Dropbox princip tar alla filer att du lägger i mappen och det bitar dessa filer till fyra megabyte bitar. Så vi tar en 100-megabyte PDF-fil och vi kommer bit in den i 25 fyra megabyte bitar. Dessa bitar är sedan krypteras och sedan skickar vi dem till våra blockera servrar. ALEX ALLAIN: Block servrar lagring för blocken själva, och så att varje block lagras i blocket servern med data och en Shaw 356 hash av det blocket. Det är en mycket grundläggande kryptering primitiv som sammanfattar, i någon mening, data i ett mycket unikt sätt som är unik för dessa uppgifter. Du kan ladda upp hela filen på en gång, men det visar sig om du gör att, riktigt stora filer tar en riktigt lång tid att ladda upp, och om du har fel, du är ute på tur och du måste starta om den. Vad vi då gör är att vi berättar en annan server i vårt system, och det vi kallar metadata server, hej detta är att en fil, och det består av Följande förteckning över block. Och vi missa de hashar att identifiera de block snarare än re-uppladdning hela blocket. Den meta sedan kontrollerar blocket servrar ser till att blocken är där. Om de är, perfekt. Allt är bra. THOMAS Carriero: När vi vill i princip ladda ner filen från Internet, låt oss säg, vi ska säga till den sista meta första, hej kan du berätta för mig om var den här filen ligger? Och meta kommer att säga, åh denna fil faktiskt 25 fyra megabyte stor bit, och här är de. Och sedan går vi ett block server och faktiskt ladda ner var och en av dessa bitar. Och så kommer vi rekonstruera filen därifrån, och då kommer vi att påbörja nedladdningen. Ja, så Dropbox av erbjudanden med skala i princip med mycket, mycket aggressiv sharding. ALEX ALLAIN: Sharding är när du ta alla användare i din starta eller ditt företag och kanske de brukade vara i en databas, och som fungerar bra tills du slå ett visst antal användare. Och egentligen vad du vill göra är att hitta något sätt att dela upp dem över två databaser, eller kanske mer än två. Helst nog att du kan har varje användare i världen. Och så när du shard, vad du gör är att du hitta ett sätt att avgöra vilken databas för att gå att det inte kräver slå en central katalog. Eller kanske är det en mycket snabb, billig look-up central katalog. THOMAS Carriero: Vi har aldrig allt lagras i en databas, eftersom det är nästan aldrig att skala. Så istället, vad vi kommer att göra är att ta alla denna information, alla filer som lagras på metadata, shard över hundratals eller tusentals logiska databaser. Och det betyder att när vi har en begära en användares information, vi ska först säga hej vilken databas är denna användares information som lagras i? Sedan ska vi i grund och botten Använd beslutet att gå finna att databasen och det är där vi ska läsa in alla filer eller alla metadata om filerna. Så vi använder en hel del sharding. Men sharding är inte alltid tillräckligt. Du behöver faktiskt att cacha en hel del av de gemensamma ansökningar, eftersom även de databas frågor kan bli dyrt så vi gör också aggressiv fånga strategier för att se till att de mest gemensamma ansökningar är ganska lätt att beräkna. Och i grund och botten som gör en hel del snabbare och det gör det att fungera ex skala. Så det är på en mycket hög nivå hur Dropbox fungerar. ALEX ALLAIN: Jag är Alex Allain. THOMAS Carriero: Och Jag är Thomas Carriero. ALEX ALLAIN: Och detta är CS50.