1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Je suis Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Je suis un ingénieur logiciel chez Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Je suis Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Je suis un ingénieur ici à Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Oui, j'étais en fait le premier TF tête pour CS50 7 00:00:11,320 --> 00:00:13,660 quand David Malin a repris la classe. 8 00:00:13,660 --> 00:00:17,010 J'avais déjà enseigné CS50 pour deux semestres 9 00:00:17,010 --> 00:00:20,700 Mike Smith, qui était le professeur avant il. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Donc j'ai effectivement fait pas CS50 prendre, mais je l'ai fait deux fois TF. 11 00:00:25,310 --> 00:00:29,050 Une fois en TF régulière, et puis ma dernière année 12 00:00:29,050 --> 00:00:32,520 En fait, j'étais tête de TF CS50, qui était un beaucoup de plaisir. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Donc, quand David tendit 14 00:00:34,270 --> 00:00:38,647 à moi au sujet de la mise en place La sélection dans le dispositif de CS50, 15 00:00:38,647 --> 00:00:41,230 J'étais vraiment excité, parce nous avons en fait un client Linux, 16 00:00:41,230 --> 00:00:46,270 donc la plupart de nos utilisateurs utilisent soit Fenêtres ou les clients Macintosh, 17 00:00:46,270 --> 00:00:50,940 mais Linux, Macintosh et Windows clients sont tous très similaire. 18 00:00:50,940 --> 00:00:55,590 >> Donc, ce que nous avons fait, c'est que nous pré-installé le client Dropbox Linux dans le CS50 19 00:00:55,590 --> 00:00:59,990 appareil, et il fonctionne comme tous nos autres utilisateurs de Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Donc, le façon Dropbox fonctionne est-il 21 00:01:02,210 --> 00:01:08,590 fonctionne comme un client sur de nombreux différents les systèmes d'exploitation et les périphériques. 22 00:01:08,590 --> 00:01:11,387 Le client de bureau Dropbox est l'un des plus connus, 23 00:01:11,387 --> 00:01:12,720 et l'une des plus intéressantes. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Donc Dropbox prend essentiellement tous les fichiers 25 00:01:15,460 --> 00:01:19,500 que vous mettez dans le dossier et morceaux ces fichiers en morceaux de quatre mégaoctets. 26 00:01:19,500 --> 00:01:23,270 Donc, nous allons jeter un 100 mégaoctets fichier PDF et nous allons 27 00:01:23,270 --> 00:01:26,070 morceau dans 25 morceaux de quatre mégaoctets. 28 00:01:26,070 --> 00:01:30,670 Ces morceaux sont ensuite cryptées et puis nous les envoyons à nos serveurs de blocs. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Les serveurs de blocs sont le stockage des blocs eux-mêmes, 30 00:01:35,980 --> 00:01:39,570 et de sorte que chaque bloc est stocké dans le serveur de bloc avec les données 31 00:01:39,570 --> 00:01:43,990 et une table de hachage Shaw 356 de ce bloc. 32 00:01:43,990 --> 00:01:48,280 C'est un cryptage très basique primitive qui résume, en un certain sens, 33 00:01:48,280 --> 00:01:53,140 les données d'une manière très unique qui est unique à ces données. 34 00:01:53,140 --> 00:01:55,540 >> Vous pouvez télécharger le fichier entier en une seule fois, 35 00:01:55,540 --> 00:02:00,120 mais il s'avère si vous faites que, vraiment gros fichiers prennent 36 00:02:00,120 --> 00:02:03,616 un temps très long à charger, et si vous avez une panne, vous n'avez pas de chance 37 00:02:03,616 --> 00:02:04,740 et vous devez redémarrer. 38 00:02:04,740 --> 00:02:07,620 >> Ce que nous faisons est alors nous disons un autre serveur dans notre système, 39 00:02:07,620 --> 00:02:11,550 et ce que nous appelons les métadonnées serveur, que bon c'est un fichier, 40 00:02:11,550 --> 00:02:14,200 et il est composé de la liste des blocs suivants. 41 00:02:14,200 --> 00:02:17,030 Et nous passons les hashs d'identifier les blocs 42 00:02:17,030 --> 00:02:18,770 plutôt que de re-ajout l'ensemble du bloc. 43 00:02:18,770 --> 00:02:20,820 Le metaserveur alors vérifie les serveurs de blocs, 44 00:02:20,820 --> 00:02:22,153 fait que les blocs sont là. 45 00:02:22,153 --> 00:02:23,140 S'ils le sont, parfait. 46 00:02:23,140 --> 00:02:24,040 Tout est bon. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Lorsque nous voulez télécharger fondamentalement 48 00:02:26,400 --> 00:02:30,050 le fichier à partir d'Internet, nous allons par exemple, nous dirons à la dernière metaserveur 49 00:02:30,050 --> 00:02:33,090 premier, hey pouvez-vous me dire sur l'endroit où se trouve de ce fichier? 50 00:02:33,090 --> 00:02:37,230 Et metaserveur dira, oh ce fichier de en fait 25 morceaux de quatre méga-octets, 51 00:02:37,230 --> 00:02:38,210 et ils sont ici. 52 00:02:38,210 --> 00:02:41,712 Et puis nous irons un serveur de blocs et réellement télécharger chacun de ces morceaux. 53 00:02:41,712 --> 00:02:43,670 Et puis nous allons reconstruire le fichier à partir de là, 54 00:02:43,670 --> 00:02:45,086 et puis nous allons commencer le téléchargement. 55 00:02:45,086 --> 00:02:47,580 Oui, si Dropbox des offres avec échelle essentiellement 56 00:02:47,580 --> 00:02:50,460 par très, très agressif fragmentation. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding est lorsque vous prendre tous les utilisateurs dans votre démarrage 58 00:02:56,400 --> 00:03:00,010 ou votre entreprise et peut-être qu'ils l'habitude d'être dans une base de données, 59 00:03:00,010 --> 00:03:02,620 et qui fonctionne très bien jusqu'à ce que vous frapper un certain nombre d'utilisateurs. 60 00:03:02,620 --> 00:03:04,578 Et vraiment ce que vous voulez à faire est de trouver un moyen 61 00:03:04,578 --> 00:03:07,410 de diviser les travers deux bases de données, ou peut-être plus de deux. 62 00:03:07,410 --> 00:03:10,830 Idéalement, assez que vous pouvez avoir tous les utilisateurs dans le monde. 63 00:03:10,830 --> 00:03:13,080 >> Et donc quand vous tesson, ce que vous faites, c'est vous 64 00:03:13,080 --> 00:03:16,830 trouver un moyen de décider base de données à partir 65 00:03:16,830 --> 00:03:20,240 à qui ne nécessite pas de frapper un répertoire central. 66 00:03:20,240 --> 00:03:23,670 Ou peut-être que c'est un très rapide, consultation répertoire central pas cher. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Nous n'avons jamais tout stocké dans une base de données, 68 00:03:27,189 --> 00:03:28,980 parce que c'est presque ne va jamais à l'échelle. 69 00:03:28,980 --> 00:03:33,970 Ainsi, au lieu, ce que nous allons faire est de prendre toutes les que l'information, tous les fichiers que 70 00:03:33,970 --> 00:03:36,610 sont enregistrés sur les métadonnées, Eclat sur des centaines 71 00:03:36,610 --> 00:03:38,710 ou des milliers de bases de données logiques. 72 00:03:38,710 --> 00:03:42,900 Et cela signifie que lorsque nous avons une demander pour l'information de l'utilisateur, 73 00:03:42,900 --> 00:03:46,890 nous allons d'abord dire, hey quelle base de données est l'information de l'utilisateur stocké dans? 74 00:03:46,890 --> 00:03:49,852 Ensuite, nous allons essentiellement utiliser cette décision pour aller 75 00:03:49,852 --> 00:03:51,560 trouver cette base de données et c'est là que nous allons 76 00:03:51,560 --> 00:03:55,080 charger tous les fichiers ou tous les métadonnées sur les fichiers. 77 00:03:55,080 --> 00:03:56,464 >> Donc, nous utilisons beaucoup de fragmentation. 78 00:03:56,464 --> 00:03:57,880 Mais fragmentation n'est pas toujours suffisant. 79 00:03:57,880 --> 00:04:00,380 Vous avez réellement besoin de mettre en cache un grand nombre de demandes communes, 80 00:04:00,380 --> 00:04:04,010 parce que même ceux base de données les requêtes peuvent être coûteux 81 00:04:04,010 --> 00:04:07,570 si nous faisons également la capture agressif stratégies pour s'assurer que le plus 82 00:04:07,570 --> 00:04:10,310 demandes courantes sont assez facile à calculer. 83 00:04:10,310 --> 00:04:14,630 Et dans le fond qui fait beaucoup plus rapide et il fait fonctionner ex échelle. 84 00:04:14,630 --> 00:04:17,320 C'est donc à une très de haut niveau comment Dropbox fonctionne. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Je suis Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Et Je suis Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Et c'est CS50. 88 00:04:22,579 --> 00:04:23,936