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