1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 ТОМАС Carriero: Я Томас Carriero. 3 00:00:01,950 --> 00:00:03,640 Я инженер-программист в Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> АЛЕКС Аллен: Я Алекс Аллен. 5 00:00:05,250 --> 00:00:08,200 Я инженер здесь Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> ТОМАС 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 >> АЛЕКС Аллен: Так что я на самом деле не принять 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 ТОМАС Carriero: Так когда Дэвид потянулся 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 так что большинство наших пользователей используют либо Окна или клиенты 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 >> АЛЕКС Аллен: Так способ 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 >> ТОМАС 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 >> Алекс Allain: блок серверы хранения для самих блоков, 30 00:01:35,980 --> 00:01:39,570 и так каждый блок хранится в блок сервер с данными 31 00:01:39,570 --> 00:01:43,990 и Шоу 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 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 >> ТОМАС 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 скажу, о этот файл'S на самом деле 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 >> АЛЕКС Аллен: 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 >> ТОМАС 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 хранятся на метаданных, осколок через сотни 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 >> Таким образом, мы используем много шардинге. 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 >> АЛЕКС Аллен: Я Алекс Аллен. 86 00:04:19,149 --> 00:04:20,857 >> ТОМАС Carriero: И Я Томас Carriero. 87 00:04:20,857 --> 00:04:22,579 АЛЕКС Аллен: И это CS50. 88 00:04:22,579 --> 00:04:23,936