1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Eu son Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Eu son un enxeñeiro de software de Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Eu son Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Eu son un enxeñeiro aquí no Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Si, eu estaba realmente o primeiro TF cabeza para CS50 7 00:00:11,320 --> 00:00:13,660 cando David Malin asumiu a clase. 8 00:00:13,660 --> 00:00:17,010 Eu xa fora o ensino CS50 por dous semestres 9 00:00:17,010 --> 00:00:20,700 con Mike Smith, que era o profesor antes alí. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Entón eu realmente non fixen tomar CS50, pero eu fixen TF-lo dúas veces. 11 00:00:25,310 --> 00:00:29,050 Así como un TF regular, e logo, o meu último ano 12 00:00:29,050 --> 00:00:32,520 Eu estaba realmente cabeza TF de CS50, o que foi moi divertido. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Entón cando David estendeu a man 14 00:00:34,270 --> 00:00:38,647 para min sobre a creación Dropbox no aparello CS50, 15 00:00:38,647 --> 00:00:41,230 Eu estaba realmente animado, porque nós realmente temos un cliente Linux, 16 00:00:41,230 --> 00:00:46,270 polo que a maioría dos nosos usuarios utilizar Windows ou Macintosh, os clientes 17 00:00:46,270 --> 00:00:50,940 pero Linux, Macintosh e Windows clientes son todos realmente moi similar. 18 00:00:50,940 --> 00:00:55,590 >> Entón, o que fixemos foi pre-instalado o cliente Dropbox Linux no CS50 19 00:00:55,590 --> 00:00:59,990 aparello, e funciona só como todos os nosos outros usuarios de Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Entón, a xeito Dropbox funciona é 21 00:01:02,210 --> 00:01:08,590 execútase como un cliente en moitos diferentes sistemas operativos e dispositivos. 22 00:01:08,590 --> 00:01:11,387 O cliente de escritorio Dropbox é un dos máis ben coñecidos, 23 00:01:11,387 --> 00:01:12,720 e un dos máis interesantes. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Entón Dropbox basicamente leva todos os ficheiros 25 00:01:15,460 --> 00:01:19,500 que puxo no cartafol e segmenta estes arquivos en anacos de catro megabytes. 26 00:01:19,500 --> 00:01:23,270 Entón imos dar un 100 megabytes Arquivo PDF e imos 27 00:01:23,270 --> 00:01:26,070 peza de TI en 25 anacos de catro megabytes. 28 00:01:26,070 --> 00:01:30,670 Estes anacos son entón cifrada e logo envialos para os nosos servidores de bloque. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Os servidores de bloque son o almacenamento dos propios bloques, 30 00:01:35,980 --> 00:01:39,570 e de xeito que cada bloque é almacenado en o servidor de bloque cos datos 31 00:01:39,570 --> 00:01:43,990 e Shaw 356 de hash do bloque. 32 00:01:43,990 --> 00:01:48,280 Iso é unha criptografía moi básico primitivo que resume, en certo sentido, 33 00:01:48,280 --> 00:01:53,140 os datos dunha forma moi orixinal que é exclusivo a eses datos. 34 00:01:53,140 --> 00:01:55,540 >> Podería facer a carga do ficheiro dunha soa vez, 35 00:01:55,540 --> 00:02:00,120 pero resulta que se fai que, arquivos moi grandes tomar 36 00:02:00,120 --> 00:02:03,616 un tempo moi longo para cargar, e se ten un fallo, está sen sorte 37 00:02:03,616 --> 00:02:04,740 e ten que reinicia-lo. 38 00:02:04,740 --> 00:02:07,620 >> O que entón facemos é dicir outro servidor no noso sistema, 39 00:02:07,620 --> 00:02:11,550 eo que chamamos os metadatos servidor, que mira que é un arquivo, 40 00:02:11,550 --> 00:02:14,200 e está composto polo lista de bloques seguinte. 41 00:02:14,200 --> 00:02:17,030 E pasamos os hashes para identificar os bloques 42 00:02:17,030 --> 00:02:18,770 en vez de re-upload todo o bloque. 43 00:02:18,770 --> 00:02:20,820 O metaservidor entón comproba os servidores do bloque, 44 00:02:20,820 --> 00:02:22,153 certifica-se os bloques están aí. 45 00:02:22,153 --> 00:02:23,140 Se son, perfecto. 46 00:02:23,140 --> 00:02:24,040 Todo é bo. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Cando quere facer a descarga, basicamente, 48 00:02:26,400 --> 00:02:30,050 o arquivo de Internet, imos por exemplo, imos dicir que a última metaservidor 49 00:02:30,050 --> 00:02:33,090 primeiro, hey me pode dicir sobre onde se sitúa este ficheiro? 50 00:02:33,090 --> 00:02:37,230 E metaservidor vai dicir, oh este ficheiro de en realidade, o 25 anacos de catro megabytes, 51 00:02:37,230 --> 00:02:38,210 e aquí están elas. 52 00:02:38,210 --> 00:02:41,712 E despois imos un servidor bloque e realmente baixar cada un destes anacos. 53 00:02:41,712 --> 00:02:43,670 E entón nós imos reconstruír o arquivo de alí, 54 00:02:43,670 --> 00:02:45,086 e entón imos comezar a descarga. 55 00:02:45,086 --> 00:02:47,580 Si, entón Dropbox de ofertas con escala basicamente 56 00:02:47,580 --> 00:02:50,460 por moito, sharding moi agresivo. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding é cando tomar todos os usuarios no seu inicio 58 00:02:56,400 --> 00:03:00,010 ou a súa empresa e quizais eles adoitaba ser nunha base de datos, 59 00:03:00,010 --> 00:03:02,620 e que funciona moi ben ata que alcanzou un certo número de usuarios. 60 00:03:02,620 --> 00:03:04,578 E realmente o que quere que facer é atopar unha forma 61 00:03:04,578 --> 00:03:07,410 para dividir as dúas mediante bases de datos, ou que máis que dous. 62 00:03:07,410 --> 00:03:10,830 Ideal, o suficiente para que pode ter todos os usuarios no mundo. 63 00:03:10,830 --> 00:03:13,080 >> E así, cando estilhaço, o que fai que é 64 00:03:13,080 --> 00:03:16,830 atopar algunha forma de decidir cal base de datos para ir 65 00:03:16,830 --> 00:03:20,240 para que non requiren bater un directorio central. 66 00:03:20,240 --> 00:03:23,670 Ou quizais sexa moi rápido, directorio central look-up barato. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Nunca temos todo almacenado nunha base de datos, 68 00:03:27,189 --> 00:03:28,980 porque iso é case non vai escalar. 69 00:03:28,980 --> 00:03:33,970 Entón, en vez diso, o que imos facer é dar todo esta información, todos os ficheiros que 70 00:03:33,970 --> 00:03:36,610 son almacenadas nos metadatos, estilhaço en centos 71 00:03:36,610 --> 00:03:38,710 ou miles de bases de datos lóxicos. 72 00:03:38,710 --> 00:03:42,900 E isto significa que, cando temos un solicitude de información dun usuario, 73 00:03:42,900 --> 00:03:46,890 imos primeiro dicir, hey cal base de datos é información do usuario almacenados en? 74 00:03:46,890 --> 00:03:49,852 Entón imos basicamente usar esa decisión de ir 75 00:03:49,852 --> 00:03:51,560 atopar ese banco de datos e é aí onde nós imos 76 00:03:51,560 --> 00:03:55,080 cargar todos os ficheiros ou todos os metadatos sobre os ficheiros. 77 00:03:55,080 --> 00:03:56,464 >> Entón, usamos unha morea de sharding. 78 00:03:56,464 --> 00:03:57,880 Pero sharding non sempre é suficiente. 79 00:03:57,880 --> 00:04:00,380 Realmente precisa para almacenar en caché unha morea de peticións comúns, 80 00:04:00,380 --> 00:04:04,010 porque mesmo aqueles datos consultas pode ser caro 81 00:04:04,010 --> 00:04:07,570 así tamén facemos captación agresiva estratexias para asegurarse de que o máis 82 00:04:07,570 --> 00:04:10,310 peticións son comúns moi fácil de calcular. 83 00:04:10,310 --> 00:04:14,630 E, basicamente, que fai moi máis rápido e fai funcionar ex escala. 84 00:04:14,630 --> 00:04:17,320 Entón, iso é nun moi de alto nivel como Dropbox funciona. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Eu son Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: E Eu son 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