1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Soy Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Soy un ingeniero de software de Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Soy Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Soy ingeniero aquí en Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Sí, yo era en realidad el primer TF cabeza para CS50 7 00:00:11,320 --> 00:00:13,660 cuando David Malin se hizo cargo de la clase. 8 00:00:13,660 --> 00:00:17,010 Yo ya había estado enseñando CS50 durante dos semestres 9 00:00:17,010 --> 00:00:20,700 con Mike Smith, quien fue el profesor antes de allí. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Así que en realidad no lo hizo tomar CS50, pero lo hice TF dos veces. 11 00:00:25,310 --> 00:00:29,050 Una vez que un TF regular, y después de mi último año 12 00:00:29,050 --> 00:00:32,520 Yo estaba en realidad TF jefe de CS50, que era un montón de diversión. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Así cuando David se acercó 14 00:00:34,270 --> 00:00:38,647 me sobre la configuración de Dropbox en el aparato CS50, 15 00:00:38,647 --> 00:00:41,230 Yo estaba muy emocionado, porque de hecho tenemos un cliente Linux, 16 00:00:41,230 --> 00:00:46,270 así que la mayoría de nuestros usuarios utilizan ya sea De Windows o los clientes de Macintosh, 17 00:00:46,270 --> 00:00:50,940 pero el Linux, Macintosh y Windows los clientes son en realidad muy similares. 18 00:00:50,940 --> 00:00:55,590 >> Así que lo que hicimos es que pre-instalado el cliente de Dropbox Linux en el CS50 19 00:00:55,590 --> 00:00:59,990 aparato, y funciona como todos nuestros otros usuarios de Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Así que el manera Dropbox funciona es que 21 00:01:02,210 --> 00:01:08,590 se ejecuta como cliente en muchos diversos sistemas operativos y dispositivos. 22 00:01:08,590 --> 00:01:11,387 El cliente de escritorio de Dropbox es uno de los más conocidos, 23 00:01:11,387 --> 00:01:12,720 y uno de los más interesantes. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Así Dropbox básicamente toma todos los archivos 25 00:01:15,460 --> 00:01:19,500 que se pone en la carpeta y trozos esos archivos en trozos de cuatro megabytes. 26 00:01:19,500 --> 00:01:23,270 Así que vamos a echar un 100 megabytes Archivo PDF y vamos a 27 00:01:23,270 --> 00:01:26,070 trozo en 25 trozos de cuatro megabytes. 28 00:01:26,070 --> 00:01:30,670 Estos trozos son entonces encriptados y luego los enviamos a nuestros servidores de bloque. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Los servidores de bloque son el almacenamiento de los propios bloques, 30 00:01:35,980 --> 00:01:39,570 y por lo que cada bloque se almacena en el servidor de bloque con los datos 31 00:01:39,570 --> 00:01:43,990 y un hash Shaw 356 de ese bloque. 32 00:01:43,990 --> 00:01:48,280 Esa es una encriptación muy básico primitivo que resume, en cierto sentido, 33 00:01:48,280 --> 00:01:53,140 los datos de una manera muy singular eso es único a esos datos. 34 00:01:53,140 --> 00:01:55,540 >> Usted podría subir el conjunto de archivos de una sola vez, 35 00:01:55,540 --> 00:02:00,120 pero resulta que si lo hace que los archivos muy grandes, tienen 36 00:02:00,120 --> 00:02:03,616 un tiempo muy largo para cargar, y si se produce un fallo, estás fuera de suerte 37 00:02:03,616 --> 00:02:04,740 y tienes que reiniciarlo. 38 00:02:04,740 --> 00:02:07,620 >> Lo que a continuación hacemos es que decimos otro servidor en nuestro sistema, 39 00:02:07,620 --> 00:02:11,550 y lo que llamamos los metadatos servidor, que bueno esto es un archivo, 40 00:02:11,550 --> 00:02:14,200 y está compuesto por el siguiente lista de bloques. 41 00:02:14,200 --> 00:02:17,030 Y pasamos los hashes para identificar esos bloques 42 00:02:17,030 --> 00:02:18,770 en lugar de volver a la carga todo el bloque. 43 00:02:18,770 --> 00:02:20,820 El metaserver entonces comprueba los servidores de bloque, 44 00:02:20,820 --> 00:02:22,153 hace que los bloques están ahí. 45 00:02:22,153 --> 00:02:23,140 Si es así, perfecto. 46 00:02:23,140 --> 00:02:24,040 Todo es bueno. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Cuando desee descargar básicamente 48 00:02:26,400 --> 00:02:30,050 el archivo de Internet, vamos a por ejemplo, vamos a decir a la última metaserver 49 00:02:30,050 --> 00:02:33,090 primero, oye me puede decir acerca de dónde se encuentra este archivo? 50 00:02:33,090 --> 00:02:37,230 Y metaserver dirá, oh este archivo de en realidad 25 trozos de cuatro megabytes, 51 00:02:37,230 --> 00:02:38,210 y aquí están. 52 00:02:38,210 --> 00:02:41,712 Y luego iremos a un servidor de bloque y descargando en cada uno de esos trozos. 53 00:02:41,712 --> 00:02:43,670 Y luego vamos a reconstruir el archivo desde allí, 54 00:02:43,670 --> 00:02:45,086 y luego vamos a empezar la descarga. 55 00:02:45,086 --> 00:02:47,580 Sí, por lo que Dropbox de ofertas con la escala, básicamente, 56 00:02:47,580 --> 00:02:50,460 por muy, sharding muy agresivo. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding es cuando se tomar todos los usuarios de su puesta en marcha 58 00:02:56,400 --> 00:03:00,010 o su empresa y tal vez solía ser en una base de datos, 59 00:03:00,010 --> 00:03:02,620 y que funciona muy bien hasta que golpear un cierto número de usuarios. 60 00:03:02,620 --> 00:03:04,578 Y realmente lo que quieres que hacer es encontrar alguna manera 61 00:03:04,578 --> 00:03:07,410 para dividir los a través de dos bases de datos, o tal vez más de dos. 62 00:03:07,410 --> 00:03:10,830 Idealmente, lo suficiente para que puedas tener todos los usuarios en el mundo. 63 00:03:10,830 --> 00:03:13,080 >> Y así, cuando usted fragmento, lo que hace que es 64 00:03:13,080 --> 00:03:16,830 encontrar la manera de decidir que la base de datos para ir 65 00:03:16,830 --> 00:03:20,240 a que no requiere golpear a un directorio central. 66 00:03:20,240 --> 00:03:23,670 O tal vez es muy rápido, directorio central de consulta barato. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Nosotros nunca tenemos todo lo almacenado en una base de datos, 68 00:03:27,189 --> 00:03:28,980 porque eso es casi nunca va a escalar. 69 00:03:28,980 --> 00:03:33,970 Así que en vez, lo que vamos a hacer es tomar todas esa información, todos los archivos que 70 00:03:33,970 --> 00:03:36,610 se almacenan en los metadatos, fragmentar a través de cientos 71 00:03:36,610 --> 00:03:38,710 o miles de bases de datos lógicas. 72 00:03:38,710 --> 00:03:42,900 Y eso significa que cuando tenemos un solicitud de información de un usuario, 73 00:03:42,900 --> 00:03:46,890 vamos primero decimos, oye que la base de datos es la información del usuario almacenada en? 74 00:03:46,890 --> 00:03:49,852 Entonces tendremos básicamente utilizar esa decisión de ir 75 00:03:49,852 --> 00:03:51,560 encontrar que la base de datos y ahí es donde vamos a 76 00:03:51,560 --> 00:03:55,080 cargar todos los archivos o todas los metadatos de los archivos. 77 00:03:55,080 --> 00:03:56,464 >> Así que usamos un montón de sharding. 78 00:03:56,464 --> 00:03:57,880 Pero sharding no siempre es suficiente. 79 00:03:57,880 --> 00:04:00,380 En realidad se necesita para almacenar en caché muchas de las peticiones comunes, 80 00:04:00,380 --> 00:04:04,010 porque incluso los que la base de datos consultas pueden ser costosos 81 00:04:04,010 --> 00:04:07,570 así también nosotros hacemos captura agresivos estrategias para asegurarse de que la mayor parte 82 00:04:07,570 --> 00:04:10,310 peticiones son comunes bastante fácil de calcular. 83 00:04:10,310 --> 00:04:14,630 Y básicamente eso tiene mucho más rápido y hace que funcione ex escala. 84 00:04:14,630 --> 00:04:17,320 Así que eso es en un muy de alto nivel de cómo funciona Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Soy Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: Y Soy Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Y esto es CS50. 88 00:04:22,579 --> 00:04:23,936