1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Аз съм Томас Carriero. 3 00:00:01,950 --> 00:00:03,640 Аз съм софтуерен инженер в Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Аз съм Алекс Allain. 5 00:00:05,250 --> 00:00:08,200 Аз съм инженер тук в Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Да, бях всъщност първият главата TF за CS50 7 00:00:11,320 --> 00:00:13,660 когато Дейвид Малин пое класа. 8 00:00:13,660 --> 00:00:17,010 Бях вече преподава CS50 за два семестъра 9 00:00:17,010 --> 00:00:20,700 с Майк Смит, който беше предварителното професор там. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Така че аз всъщност не направих предприеме CS50, но го направих TF го два пъти. 11 00:00:25,310 --> 00:00:29,050 След като редовен TF, и след това ми година 12 00:00:29,050 --> 00:00:32,520 Всъщност аз бях ръководител на TF CS50, което беше много забавно. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: So когато Дейвид се протегна 14 00:00:34,270 --> 00:00:38,647 с мен за създаване Dropbox в CS50 уреда, 15 00:00:38,647 --> 00:00:41,230 Бях много развълнуван, защото ние всъщност имаме Linux клиент, 16 00:00:41,230 --> 00:00:46,270 така че повечето от нашите потребители използват или Windows или Macintosh клиенти, 17 00:00:46,270 --> 00:00:50,940 но Linux, Macintosh и Windows Всички клиенти, които всъщност са много сходни. 18 00:00:50,940 --> 00:00:55,590 >> Така че това, което направихме е, че ние предварително инсталиран клиентът Dropbox Linux в CS50 19 00:00:55,590 --> 00:00:59,990 уред, и той работи точно като всички други наши потребители на Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Така че начин Dropbox работи е 21 00:01:02,210 --> 00:01:08,590 работи като клиент на много различни операционни системи и устройства. 22 00:01:08,590 --> 00:01:11,387 Десктоп клиент Dropbox е един от най-добре познатите, 23 00:01:11,387 --> 00:01:12,720 и един от най-интересните. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: Така Dropbox основно взима всички файлове 25 00:01:15,460 --> 00:01:19,500 че ще ви постави в папката и я парчета тези файлове в четири мегабайта парчета. 26 00:01:19,500 --> 00:01:23,270 Така че ние ще вземе 100-мегабайт PDF файл и ние ще 27 00:01:23,270 --> 00:01:26,070 парче го в 25 четири-мегабайта парчета. 28 00:01:26,070 --> 00:01:30,670 След това тези парчета са криптирани и тогава можем да ги изпращате на нашите печатни сървъри. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: блокови сървърите са съхранение за самите блокове 30 00:01:35,980 --> 00:01:39,570 и така че всеки блок се съхранява в на блока на сървъра с данните 31 00:01:39,570 --> 00:01:43,990 и хашиш от този блок Shaw 356. 32 00:01:43,990 --> 00:01:48,280 Това е един много основен криптиране примитивен който обобщава, в известен смисъл, 33 00:01:48,280 --> 00:01:53,140 данните в уникален начин това е уникален за това данни. 34 00:01:53,140 --> 00:01:55,540 >> Можете да качите Целият файл наведнъж, 35 00:01:55,540 --> 00:02:00,120 но се оказва, че ако го направите, Това наистина големи файлове, да се 36 00:02:00,120 --> 00:02:03,616 много дълго време, за да качите, и ако имате неуспех, вие сте изложени на късмет 37 00:02:03,616 --> 00:02:04,740 и вие трябва да го рестартирате. 38 00:02:04,740 --> 00:02:07,620 >> Какво тогава ние правим е да кажа друг сървър в нашата система, 39 00:02:07,620 --> 00:02:11,550 и това, което ние наричаме метаданните сървър, че ей това е файл, 40 00:02:11,550 --> 00:02:14,200 и е съставен от следния списък на блокове. 41 00:02:14,200 --> 00:02:17,030 И ние пропускаме хешовете да се идентифицират тези блокове 42 00:02:17,030 --> 00:02:18,770 Вместо повторно качване на целия блок. 43 00:02:18,770 --> 00:02:20,820 The metaserver тогава проверява печатни сървъри, 44 00:02:20,820 --> 00:02:22,153 прави се, че блоковете са там. 45 00:02:22,153 --> 00:02:23,140 Ако те са перфектни. 46 00:02:23,140 --> 00:02:24,040 Всичко е добре. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Когато ние искате да изтеглите основно 48 00:02:26,400 --> 00:02:30,050 на файл от интернет, да да речем, ще кажем, че до последния metaserver 49 00:02:30,050 --> 00:02:33,090 първо, хей може ли да ми кажете за това къде се намира този файл е? 50 00:02:33,090 --> 00:02:37,230 И metaserver ще кажа, о, този файл е всъщност 25 четири мегабайта парчета, 51 00:02:37,230 --> 00:02:38,210 и тук са те. 52 00:02:38,210 --> 00:02:41,712 И тогава ние ще отидем блок сървър и всъщност свалите всеки от тези парчета. 53 00:02:41,712 --> 00:02:43,670 И тогава ние ще се реконструира файла от там, 54 00:02:43,670 --> 00:02:45,086 и след това ще започне изтеглянето на файла. 55 00:02:45,086 --> 00:02:47,580 Да, така Dropbox сделки с мащаб основно 56 00:02:47,580 --> 00:02:50,460 от много, много агресивен sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding е, когато предприеме всички потребители във вашата стартиране 58 00:02:56,400 --> 00:03:00,010 или вашата фирма и може би те да бъде използван в една база данни, 59 00:03:00,010 --> 00:03:02,620 и че работи чудесно, докато не хит на определен брой потребители. 60 00:03:02,620 --> 00:03:04,578 И наистина това, което искате да направите е да намерите някакъв начин 61 00:03:04,578 --> 00:03:07,410 да се разделят тези в два бази данни, или може би повече от два. 62 00:03:07,410 --> 00:03:10,830 В идеалния случай, достатъчно, че можете да има всеки потребител в света. 63 00:03:10,830 --> 00:03:13,080 >> И така, когато парчето, това, което правите вие ​​е 64 00:03:13,080 --> 00:03:16,830 намери някакъв начин на вземане на решение коя база данни да отидете 65 00:03:16,830 --> 00:03:20,240 за които не се изисква удря централната директория. 66 00:03:20,240 --> 00:03:23,670 Или може би това е един много бърз, евтини поглед нагоре централната директория. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Ние никога не сме всичко се съхранява в база данни, 68 00:03:27,189 --> 00:03:28,980 защото това е почти никога няма да мащабирате. 69 00:03:28,980 --> 00:03:33,970 Така че, вместо това, което ние ще направим, е да вземе всички тази информация, всички файлове, които 70 00:03:33,970 --> 00:03:36,610 се съхраняват на метаданните, Shard през стотици 71 00:03:36,610 --> 00:03:38,710 или хиляди логически бази данни. 72 00:03:38,710 --> 00:03:42,900 А това означава, че когато имаме Запитване за информация на потребителя, 73 00:03:42,900 --> 00:03:46,890 ние първо ще кажа, хей коя база данни се информация за това на потребителя се съхраняват в? 74 00:03:46,890 --> 00:03:49,852 Тогава ще основно използвате това решение, за да отидете 75 00:03:49,852 --> 00:03:51,560 откриете, че база данни и това е, когато ние ще 76 00:03:51,560 --> 00:03:55,080 зареди всички файлове или всичките метаданните за файловете. 77 00:03:55,080 --> 00:03:56,464 >> Така че ние използваме много sharding. 78 00:03:56,464 --> 00:03:57,880 Но sharding не винаги е достатъчно. 79 00:03:57,880 --> 00:04:00,380 Вие действително се нуждаят, за да кешират много от най-честите искания, 80 00:04:00,380 --> 00:04:04,010 защото дори и тези, база данни заявки могат да бъдат скъпи 81 00:04:04,010 --> 00:04:07,570 така че ние също правим агресивна улавяне стратегии, за да се уверете, че най- 82 00:04:07,570 --> 00:04:10,310 общи искания са доста лесно да се изчисли. 83 00:04:10,310 --> 00:04:14,630 И в общи линии, че прави много по-бързо и това го прави да работи бивш мащаб. 84 00:04:14,630 --> 00:04:17,320 Така че това е най-много високо равнище, как работи Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Аз съм Алекс Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: И Аз съм Томас Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: И това е CS50. 88 00:04:22,579 --> 00:04:23,936