1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Eu sou Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Eu sou um engenheiro de software do Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Eu sou Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Eu sou um engenheiro aqui no Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Sim, eu estava realmente o primeiro TF cabeça para CS50 7 00:00:11,320 --> 00:00:13,660 quando David Malin assumiu a classe. 8 00:00:13,660 --> 00:00:17,010 Eu já tinha sido o ensino CS50 por dois semestres 9 00:00:17,010 --> 00:00:20,700 com Mike Smith, que era o professor antes lá. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Então eu realmente não fiz tomar CS50, mas eu fiz TF-lo duas vezes. 11 00:00:25,310 --> 00:00:29,050 Assim como um TF regular, e, em seguida, meu último ano 12 00:00:29,050 --> 00:00:32,520 Eu estava realmente cabeça TF de CS50, o que foi muito divertido. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Então quando David estendeu a mão 14 00:00:34,270 --> 00:00:38,647 para mim sobre a criação de Dropbox no aparelho CS50, 15 00:00:38,647 --> 00:00:41,230 Eu estava realmente animado, porque nós realmente temos um cliente Linux, 16 00:00:41,230 --> 00:00:46,270 por isso a maioria de nossos usuários usar Windows ou Macintosh, os clientes 17 00:00:46,270 --> 00:00:50,940 mas o Linux, Macintosh e Windows clientes são todos realmente muito similar. 18 00:00:50,940 --> 00:00:55,590 >> Então, o que fizemos foi pré-instalado o cliente Dropbox Linux no CS50 19 00:00:55,590 --> 00:00:59,990 aparelho, e funciona apenas como todos os nossos outros usuários do Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Então, a maneira Dropbox funciona é 21 00:01:02,210 --> 00:01:08,590 é executado como um cliente em muitos diferentes sistemas operacionais e dispositivos. 22 00:01:08,590 --> 00:01:11,387 O cliente de desktop Dropbox é um dos mais bem conhecidos, 23 00:01:11,387 --> 00:01:12,720 e um dos mais interessantes. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Então Dropbox basicamente leva todos os arquivos 25 00:01:15,460 --> 00:01:19,500 que você colocou na pasta e segmenta esses arquivos em pedaços de quatro megabytes. 26 00:01:19,500 --> 00:01:23,270 Então vamos dar uma 100 megabytes Arquivo PDF e vamos 27 00:01:23,270 --> 00:01:26,070 pedaço de TI em 25 pedaços de quatro megabytes. 28 00:01:26,070 --> 00:01:30,670 Esses pedaços são então criptografada e em seguida, enviá-los para os nossos servidores de bloco. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Os servidores de bloco são o armazenamento dos próprios blocos, 30 00:01:35,980 --> 00:01:39,570 e de modo que cada bloco é armazenado em o servidor de bloco com os dados 31 00:01:39,570 --> 00:01:43,990 e Shaw 356 de hash do bloco. 32 00:01:43,990 --> 00:01:48,280 Isso é uma criptografia muito básico primitivo que resume, em certo sentido, 33 00:01:48,280 --> 00:01:53,140 os dados de uma forma muito original que é exclusivo a esses dados. 34 00:01:53,140 --> 00:01:55,540 >> Você poderia fazer o upload do arquivo inteiro de uma só vez, 35 00:01:55,540 --> 00:02:00,120 mas acontece que se você fizer que, arquivos muito grandes tomar 36 00:02:00,120 --> 00:02:03,616 um tempo muito longo para carregar, e se você tem uma falha, você está sem sorte 37 00:02:03,616 --> 00:02:04,740 e você tem que reiniciá-lo. 38 00:02:04,740 --> 00:02:07,620 >> O que nós então fazemos é dizer outro servidor em nosso sistema, 39 00:02:07,620 --> 00:02:11,550 eo que chamamos de os metadados servidor, que olha este é um arquivo, 40 00:02:11,550 --> 00:02:14,200 e é composto pelo lista de blocos seguinte. 41 00:02:14,200 --> 00:02:17,030 E passamos os hashes para identificar os blocos 42 00:02:17,030 --> 00:02:18,770 em vez de re-upload todo o bloco. 43 00:02:18,770 --> 00:02:20,820 O metaservidor então verifica os servidores do bloco, 44 00:02:20,820 --> 00:02:22,153 certifica-se os blocos estão lá. 45 00:02:22,153 --> 00:02:23,140 Se eles são, perfeito. 46 00:02:23,140 --> 00:02:24,040 Tudo é bom. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Quando nós deseja fazer o download, basicamente, 48 00:02:26,400 --> 00:02:30,050 o arquivo da internet, vamos por exemplo, vamos dizer que o último metaservidor 49 00:02:30,050 --> 00:02:33,090 primeiro, hey você pode me dizer sobre onde se localiza este arquivo? 50 00:02:33,090 --> 00:02:37,230 E metaservidor vai dizer, oh esse arquivo de na verdade, 25 pedaços de quatro megabytes, 51 00:02:37,230 --> 00:02:38,210 e aqui estão elas. 52 00:02:38,210 --> 00:02:41,712 E depois vamos um servidor bloco e realmente baixar cada um desses pedaços. 53 00:02:41,712 --> 00:02:43,670 E então nós vamos reconstruir o arquivo de lá, 54 00:02:43,670 --> 00:02:45,086 e então vamos iniciar o download. 55 00:02:45,086 --> 00:02:47,580 Sim, então Dropbox de ofertas com escala basicamente 56 00:02:47,580 --> 00:02:50,460 por muito, sharding muito agressivo. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding é quando você tomar todos os usuários em seu arranque 58 00:02:56,400 --> 00:03:00,010 ou sua empresa e talvez eles costumava ser em um banco de dados, 59 00:03:00,010 --> 00:03:02,620 e que funciona muito bem até que você atingiu um certo número de usuários. 60 00:03:02,620 --> 00:03:04,578 E realmente o que você quer a fazer é encontrar uma maneira 61 00:03:04,578 --> 00:03:07,410 para dividir os dois através de bases de dados, ou talvez mais do que dois. 62 00:03:07,410 --> 00:03:10,830 Idealmente, o suficiente para que você pode ter todos os usuários no mundo. 63 00:03:10,830 --> 00:03:13,080 >> E assim, quando você estilhaço, o que você faz que você é 64 00:03:13,080 --> 00:03:16,830 encontrar alguma maneira de decidir qual banco de dados para ir 65 00:03:16,830 --> 00:03:20,240 para que não requerem bater um diretório central. 66 00:03:20,240 --> 00:03:23,670 Ou talvez seja muito rápido, diretório central look-up barato. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Nós nunca temos tudo armazenado numa base de dados, 68 00:03:27,189 --> 00:03:28,980 porque isso é quase nunca vai escalar. 69 00:03:28,980 --> 00:03:33,970 Então, em vez disso, o que vamos fazer é dar tudo essa informação, todos os arquivos que 70 00:03:33,970 --> 00:03:36,610 são armazenadas nos metadados, estilhaço em centenas 71 00:03:36,610 --> 00:03:38,710 ou milhares de bancos de dados lógicos. 72 00:03:38,710 --> 00:03:42,900 E isso significa que, quando temos um pedido de informações de um usuário, 73 00:03:42,900 --> 00:03:46,890 vamos primeiro dizer, hey qual banco de dados é informação do usuário armazenadas em? 74 00:03:46,890 --> 00:03:49,852 Então vamos basicamente usar essa decisão de ir 75 00:03:49,852 --> 00:03:51,560 encontrar esse banco de dados e é aí que nós vamos 76 00:03:51,560 --> 00:03:55,080 carregar todos os arquivos ou todos os metadados sobre os arquivos. 77 00:03:55,080 --> 00:03:56,464 >> Então, nós usamos um monte de sharding. 78 00:03:56,464 --> 00:03:57,880 Mas sharding nem sempre é suficiente. 79 00:03:57,880 --> 00:04:00,380 Você realmente precisa para armazenar em cache um monte de pedidos comuns, 80 00:04:00,380 --> 00:04:04,010 porque mesmo aqueles dados consultas pode ser caro 81 00:04:04,010 --> 00:04:07,570 assim também fazemos captação agressiva estratégias para se certificar de que o mais 82 00:04:07,570 --> 00:04:10,310 pedidos são comuns muito fácil de calcular. 83 00:04:10,310 --> 00:04:14,630 E, basicamente, que faz muito mais rápido e faz funcionar ex escala. 84 00:04:14,630 --> 00:04:17,320 Então, isso é em um muito de alto nível como o Dropbox funciona. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Eu sou Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: E Eu sou Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: E este é CS50. 88 00:04:22,579 --> 00:04:23,936