THOMAS Carriero: Eu sou Thomas Carriero. Eu sou um engenheiro de software do Dropbox. ALEX ALLAIN: Eu sou Alex Allain. Eu sou um engenheiro aqui no Dropbox. THOMAS Carriero: Sim, eu estava realmente o primeiro TF cabeça para CS50 quando David Malin assumiu a classe. Eu já tinha sido o ensino CS50 por dois semestres com Mike Smith, que era o professor antes lá. ALEX ALLAIN: Então eu realmente não fiz tomar CS50, mas eu fiz TF-lo duas vezes. Assim como um TF regular, e, em seguida, meu último ano Eu estava realmente cabeça TF de CS50, o que foi muito divertido. THOMAS Carriero: Então quando David estendeu a mão para mim sobre a criação de Dropbox no aparelho CS50, Eu estava realmente animado, porque nós realmente temos um cliente Linux, por isso a maioria de nossos usuários usar Windows ou Macintosh, os clientes mas o Linux, Macintosh e Windows clientes são todos realmente muito similar. Então, o que fizemos foi pré-instalado o cliente Dropbox Linux no CS50 aparelho, e funciona apenas como todos os nossos outros usuários do Linux. ALEX ALLAIN: Então, a maneira Dropbox funciona é é executado como um cliente em muitos diferentes sistemas operacionais e dispositivos. O cliente de desktop Dropbox é um dos mais bem conhecidos, e um dos mais interessantes. THOMAS Carriero: Então Dropbox basicamente leva todos os arquivos que você colocou na pasta e segmenta esses arquivos em pedaços de quatro megabytes. Então vamos dar uma 100 megabytes Arquivo PDF e vamos pedaço de TI em 25 pedaços de quatro megabytes. Esses pedaços são então criptografada e em seguida, enviá-los para os nossos servidores de bloco. ALEX ALLAIN: Os servidores de bloco são o armazenamento dos próprios blocos, e de modo que cada bloco é armazenado em o servidor de bloco com os dados e Shaw 356 de hash do bloco. Isso é uma criptografia muito básico primitivo que resume, em certo sentido, os dados de uma forma muito original que é exclusivo a esses dados. Você poderia fazer o upload do arquivo inteiro de uma só vez, mas acontece que se você fizer que, arquivos muito grandes tomar um tempo muito longo para carregar, e se você tem uma falha, você está sem sorte e você tem que reiniciá-lo. O que nós então fazemos é dizer outro servidor em nosso sistema, eo que chamamos de os metadados servidor, que olha este é um arquivo, e é composto pelo lista de blocos seguinte. E passamos os hashes para identificar os blocos em vez de re-upload todo o bloco. O metaservidor então verifica os servidores do bloco, certifica-se os blocos estão lá. Se eles são, perfeito. Tudo é bom. THOMAS Carriero: Quando nós deseja fazer o download, basicamente, o arquivo da internet, vamos por exemplo, vamos dizer que o último metaservidor primeiro, hey você pode me dizer sobre onde se localiza este arquivo? E metaservidor vai dizer, oh esse arquivo de na verdade, 25 pedaços de quatro megabytes, e aqui estão elas. E depois vamos um servidor bloco e realmente baixar cada um desses pedaços. E então nós vamos reconstruir o arquivo de lá, e então vamos iniciar o download. Sim, então Dropbox de ofertas com escala basicamente por muito, sharding muito agressivo. ALEX ALLAIN: Sharding é quando você tomar todos os usuários em seu arranque ou sua empresa e talvez eles costumava ser em um banco de dados, e que funciona muito bem até que você atingiu um certo número de usuários. E realmente o que você quer a fazer é encontrar uma maneira para dividir os dois através de bases de dados, ou talvez mais do que dois. Idealmente, o suficiente para que você pode ter todos os usuários no mundo. E assim, quando você estilhaço, o que você faz que você é encontrar alguma maneira de decidir qual banco de dados para ir para que não requerem bater um diretório central. Ou talvez seja muito rápido, diretório central look-up barato. THOMAS Carriero: Nós nunca temos tudo armazenado numa base de dados, porque isso é quase nunca vai escalar. Então, em vez disso, o que vamos fazer é dar tudo essa informação, todos os arquivos que são armazenadas nos metadados, estilhaço em centenas ou milhares de bancos de dados lógicos. E isso significa que, quando temos um pedido de informações de um usuário, vamos primeiro dizer, hey qual banco de dados é informação do usuário armazenadas em? Então vamos basicamente usar essa decisão de ir encontrar esse banco de dados e é aí que nós vamos carregar todos os arquivos ou todos os metadados sobre os arquivos. Então, nós usamos um monte de sharding. Mas sharding nem sempre é suficiente. Você realmente precisa para armazenar em cache um monte de pedidos comuns, porque mesmo aqueles dados consultas pode ser caro assim também fazemos captação agressiva estratégias para se certificar de que o mais pedidos são comuns muito fácil de calcular. E, basicamente, que faz muito mais rápido e faz funcionar ex escala. Então, isso é em um muito de alto nível como o Dropbox funciona. ALEX ALLAIN: Eu sou Alex Allain. THOMAS Carriero: E Eu sou Thomas Carriero. ALEX ALLAIN: E este é CS50.