THOMAS CARRIERO: Sono Thomas Carriero. Sono un ingegnere software presso Dropbox. ALEX ALLAIN: Sono Alex Allain. Sono un ingegnere qui a Dropbox. THOMAS CARRIERO: Sì, ero in realtà il primo TF testa per CS50 quando David Malin ha assunto la classe. Avevo già insegnato CS50 per due semestri con Mike Smith, che era il professore prima lì. ALEX ALLAIN: Quindi io in realtà non ha prendere CS50, ma l'ho fatto TF due volte. Una volta, da TF regolare, e poi il mio ultimo anno Mi è stato effettivamente capo TF di CS50, che è stato molto divertente. THOMAS CARRIERO: So quando David allungò a me sulla configurazione Dropbox nell'apparecchio CS50, Ero molto emozionato, perché in realtà abbiamo un client Linux, quindi la maggior parte dei nostri utenti utilizzare uno Di Windows o il client Macintosh, ma Linux, Macintosh e Windows i clienti sono tutti in realtà molto simili. Quindi quello che abbiamo fatto è che pre-installato il client Dropbox Linux in CS50 apparecchio, e funziona proprio come tutti i nostri altri utenti Linux. ALEX ALLAIN: Così l' modo Dropbox funziona è che corre come un client su molti diversi sistemi operativi e dispositivi. Il client desktop di Dropbox è uno dei più noti, e uno dei più interessanti. THOMAS CARRIERO: Così Dropbox fondamentalmente prende tutti i file che si inserisce nella cartella e Chunks i file in blocchi di quattro megabyte. Così daremo uno da 100 megabyte File PDF e faremo chunk in 25 blocchi di quattro megabyte. Tali blocchi sono poi codificati e poi li mandiamo ai nostri server di blocco. ALEX ALLAIN: I server di blocco sono l'archiviazione per i blocchi stessi, e così ogni blocco viene memorizzato in il server blocco con i dati e Shaw 356 hash di quel blocco. Questa è una crittografia di base primitivo che riassume, in un certo senso, i dati in un modo molto singolare che è unico per i dati. Si può caricare il intero file tutto in una volta, ma si scopre se si fa che i file, veramente grandi hanno un tempo molto lungo per caricare, e se si verifica un errore, sei fuori di fortuna e bisogna riavviarlo. Quello che noi facciamo è allora diciamo un altro server nel nostro sistema, e ciò che noi chiamiamo i metadati Server, che hey questo è un file, ed è composto dal seguente elenco di blocchi. E passiamo le hash identificare quei blocchi piuttosto che ri-caricato l'intero blocco. Il metaserver poi controlla i server di blocco, fa che i blocchi sono lì. Se lo sono, perfetto. Tutto è buono. THOMAS CARRIERO: Quando abbiamo desidera scaricare in fondo il file da internet, cerchiamo di per esempio, diremo all'ultimo metaserver in primo luogo, hey mi puoi dire su dove si trova di questo file? E metaserver dirà, oh, questo file di in realtà 25 blocchi di quattro megabyte, ed eccoli qui. E poi andremo un server di blocco e effettivamente scaricare ciascuno di questi pezzi. E poi ci ricostruiamo il file da lì, e poi inizieremo il download. Sì, così Dropbox di offerte con scala in fondo da molto, sharding molto aggressivo. ALEX ALLAIN: Sharding è quando si prendere tutti gli utenti nel vostro start up o la vostra azienda e forse utilizzato per essere in un database, e che funziona alla grande fino a quando non colpire un certo numero di utenti. E davvero quello che vuoi da fare è trovare un modo per dividere quelli attraverso due database, o forse più di due. Idealmente, tanto che si può avere ogni utente nel mondo. E così quando si Shard, quello che fate voi è trovare il modo di decidere quale database andare a che non richiede colpendo una directory centrale. O forse è un molto veloce, directory centrale look-up a basso costo. THOMAS CARRIERO: Non abbiamo mai tutto memorizzato in un database, perché è quasi mai andare a scalare. Così, invece, quello che faremo è prendere tutto che le informazioni, tutti i file che memorizzate sulla metadati, coccio in centinaia o migliaia di database logici. E questo significa che quando abbiamo un richiesta di informazioni di un utente, faremo in primo luogo dire, hey quale database sono le informazioni di questo utente memorizzato in? Poi faremo fondamentalmente utilizzare tale decisione di andare trovare quel database ed è lì che faremo caricare tutti i file o tutti i metadati sui file. Quindi usiamo un sacco di sharding. Ma sharding non è sempre sufficiente. Hai veramente bisogno di memorizzare nella cache un sacco di richieste comuni, perché anche quelli del database query possono essere costosi così anche noi facciamo la cattura aggressivo strategie per assicurarsi che il più richieste comuni sono abbastanza facile da calcolare. E in fondo che fa un sacco veloce e fa funzionare ex scala. Così che è a un prezzo molto alto livello come funziona Dropbox. ALEX ALLAIN: Sono Alex Allain. THOMAS CARRIERO: E Sono Thomas Carriero. ALEX ALLAIN: E questo è CS50.