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