1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Sóc Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Sóc un enginyer de programari de Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Sóc Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Sóc enginyer aquí a Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Sí, jo era en realitat el primer TF cap per CS50 7 00:00:11,320 --> 00:00:13,660 quan David Malin es va fer càrrec de la classe. 8 00:00:13,660 --> 00:00:17,010 Jo ja havia estat ensenyant CS50 durant dos semestres 9 00:00:17,010 --> 00:00:20,700 amb Mike Smith, que va ser el professor abans d'allà. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Així que en realitat no ho va fer prendre CS50, però ho vaig fer TF dues vegades. 11 00:00:25,310 --> 00:00:29,050 Una vegada que un TF regular, i després del meu últim any 12 00:00:29,050 --> 00:00:32,520 Jo estava en realitat TF cap de CS50, que era un munt de diversió. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Així quan David es va acostar 14 00:00:34,270 --> 00:00:38,647 em sobre la configuració de Dropbox en l'aparell CS50, 15 00:00:38,647 --> 00:00:41,230 Jo estava molt emocionat, perquè de fet tenim un client Linux, 16 00:00:41,230 --> 00:00:46,270 així que la majoria dels nostres usuaris utilitzen ja sigui Finestres o els clients de Macintosh, 17 00:00:46,270 --> 00:00:50,940 però el Linux, Macintosh i Windows els clients són en realitat molt similars. 18 00:00:50,940 --> 00:00:55,590 >> Així que el que vam fer és que pre-instal lat el client de Dropbox Linux al CS50 19 00:00:55,590 --> 00:00:59,990 aparell, i funciona com tots els nostres altres usuaris de Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Així que el manera Dropbox funciona és que 21 00:01:02,210 --> 00:01:08,590 s'executa com a client en molts diversos sistemes operatius i dispositius. 22 00:01:08,590 --> 00:01:11,387 El client d'escriptori de Dropbox és un dels més coneguts, 23 00:01:11,387 --> 00:01:12,720 i un dels més interessants. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Així Dropbox bàsicament pren tots els arxius 25 00:01:15,460 --> 00:01:19,500 que es posa a la carpeta i trossos aquests arxius en trossos de quatre megabytes. 26 00:01:19,500 --> 00:01:23,270 Així que anem a fer una 100 megabytes Arxiu PDF i anem a 27 00:01:23,270 --> 00:01:26,070 tros en 25 trossos de quatre megabytes. 28 00:01:26,070 --> 00:01:30,670 Aquests trossos són llavors encriptades i després els enviem als nostres servidors de bloc. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Els servidors de bloc són l'emmagatzematge dels mateixos blocs, 30 00:01:35,980 --> 00:01:39,570 i pel que cada bloc s'emmagatzema en el servidor de bloc amb les dades 31 00:01:39,570 --> 00:01:43,990 i un hash Shaw 356 d'aquest bloc. 32 00:01:43,990 --> 00:01:48,280 Aquesta és una encriptació molt bàsic primitiu que resumeix, en cert sentit, 33 00:01:48,280 --> 00:01:53,140 les dades d'una manera molt singular això és únic a aquestes dades. 34 00:01:53,140 --> 00:01:55,540 >> Vostè podria pujar el conjunt d'arxius d'una sola vegada, 35 00:01:55,540 --> 00:02:00,120 però resulta que si ho fa que els arxius molt grans, tenen 36 00:02:00,120 --> 00:02:03,616 un temps molt llarg per carregar, i si es produeix una fallada, estàs fora de sort 37 00:02:03,616 --> 00:02:04,740 i has de reiniciar. 38 00:02:04,740 --> 00:02:07,620 >> El que a continuació fem és que diem un altre servidor en el nostre sistema, 39 00:02:07,620 --> 00:02:11,550 i el que anomenem les metadades servidor, que bo això és un arxiu, 40 00:02:11,550 --> 00:02:14,200 i està compost pel llista de blocs. 41 00:02:14,200 --> 00:02:17,030 I passem els hashes per identificar aquests blocs 42 00:02:17,030 --> 00:02:18,770 en lloc de tornar a la càrrega tot el bloc. 43 00:02:18,770 --> 00:02:20,820 El metaserver llavors comprova els servidors de bloc, 44 00:02:20,820 --> 00:02:22,153 fa que els blocs hi són. 45 00:02:22,153 --> 00:02:23,140 Si és així, perfecte. 46 00:02:23,140 --> 00:02:24,040 Tot és bo. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Quan voleu baixar bàsicament 48 00:02:26,400 --> 00:02:30,050 l'arxiu d'Internet, anem a per exemple, direm a l'última metaserver 49 00:02:30,050 --> 00:02:33,090 primer, sent em pot dir sobre on es troba aquest arxiu? 50 00:02:33,090 --> 00:02:37,230 I metaserver dirà, oh aquest fitxer d' en realitat 25 trossos de quatre megabytes, 51 00:02:37,230 --> 00:02:38,210 i aquí estan. 52 00:02:38,210 --> 00:02:41,712 I després anirem a un servidor de bloc i descarregant en cada un d'aquests trossos. 53 00:02:41,712 --> 00:02:43,670 I després anem a reconstruir l'arxiu des d'allà, 54 00:02:43,670 --> 00:02:45,086 i després anem a començar la descàrrega. 55 00:02:45,086 --> 00:02:47,580 Sí, per la qual cosa Dropbox d'ofertes amb l'escala, bàsicament, 56 00:02:47,580 --> 00:02:50,460 per molt, sharding molt agressiu. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding és quan es prendre tots els usuaris de la seva posada en marxa 58 00:02:56,400 --> 00:03:00,010 o la seva empresa i potser solia ser en una base de dades, 59 00:03:00,010 --> 00:03:02,620 i que funciona molt bé fins que copejar un cert nombre d'usuaris. 60 00:03:02,620 --> 00:03:04,578 I realment el que vols de fer és trobar alguna manera 61 00:03:04,578 --> 00:03:07,410 per dividir els a través de dues bases de dades, o potser més de dos. 62 00:03:07,410 --> 00:03:10,830 Idealment, prou perquè puguis tenir tots els usuaris en el món. 63 00:03:10,830 --> 00:03:13,080 >> I així, quan vostè fragment, el que fa que és 64 00:03:13,080 --> 00:03:16,830 trobar la manera de decidir que la base de dades per anar 65 00:03:16,830 --> 00:03:20,240 que no requereix colpejar a un directori central. 66 00:03:20,240 --> 00:03:23,670 O potser és molt ràpid, directori central de consulta barat. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Nosaltres mai hem tot el emmagatzemat en una base de dades, 68 00:03:27,189 --> 00:03:28,980 perquè això és gairebé mai va a escalar. 69 00:03:28,980 --> 00:03:33,970 Així que en lloc, el que farem és prendre totes aquesta informació, tots els arxius que 70 00:03:33,970 --> 00:03:36,610 s'emmagatzemen en les metadades, fragmentar a través de centenars 71 00:03:36,610 --> 00:03:38,710 o milers de bases de dades lògiques. 72 00:03:38,710 --> 00:03:42,900 I això vol dir que quan tenim un sol · licitud d'informació d'un usuari, 73 00:03:42,900 --> 00:03:46,890 anem primer diem, sent que la base de dades és la informació de l'usuari emmagatzemada en? 74 00:03:46,890 --> 00:03:49,852 Llavors tindrem bàsicament utilitzar aquesta decisió d'anar 75 00:03:49,852 --> 00:03:51,560 trobar que la base de dades i aquí és on anem a 76 00:03:51,560 --> 00:03:55,080 carregar tots els arxius o totes les metadades dels arxius. 77 00:03:55,080 --> 00:03:56,464 >> Així que fem servir un munt de sharding. 78 00:03:56,464 --> 00:03:57,880 Però sharding no sempre és suficient. 79 00:03:57,880 --> 00:04:00,380 En realitat es necessita per emmagatzemar en memòria cau moltes de les peticions comunes, 80 00:04:00,380 --> 00:04:04,010 perquè fins i tot els que la base de dades consultes poden ser costosos 81 00:04:04,010 --> 00:04:07,570 així també nosaltres fem captura agressius estratègies per assegurar-se que la major part 82 00:04:07,570 --> 00:04:10,310 peticions són comuns bastant fàcil de calcular. 83 00:04:10,310 --> 00:04:14,630 I bàsicament això té molt més ràpid i fa que funcioni ex escala. 84 00:04:14,630 --> 00:04:17,320 Així que això és en un molt d'alt nivell de com funciona Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Sóc Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: I Sóc Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: I això és CS50. 88 00:04:22,579 --> 00:04:23,936