1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 Thomas CARRIERO: Ako Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Ako ay isang software engineer sa Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> Alex ALLAIN: Ako Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Ako ay inhinyero dito sa Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> Thomas CARRIERO: Oo, ako ay talaga ang unang head tf para sa CS50 7 00:00:11,320 --> 00:00:13,660 noong kinuha sa ibabaw David Malin ang klase. 8 00:00:13,660 --> 00:00:17,010 Ako ay na-pagtuturo CS50 para sa dalawang semesters 9 00:00:17,010 --> 00:00:20,700 may Mike Smith, na naging ang naunang mga propesor doon. 10 00:00:20,700 --> 00:00:25,310 >> Alex ALLAIN: Kaya ko talagang ginawang hindi tumagal CS50, ngunit ginawa ko tf ito nang dalawang beses. 11 00:00:25,310 --> 00:00:29,050 Sa sandaling bilang isang regular na tf, at pagkatapos ay ang aking senior taon 12 00:00:29,050 --> 00:00:32,520 Ako ay talagang ulo tf ng CS50, na kung saan ay marami ng masaya. 13 00:00:32,520 --> 00:00:34,270 Thomas CARRIERO: Kaya kapag naabot out David 14 00:00:34,270 --> 00:00:38,647 sa akin tungkol sa pag-set up Dropbox sa CS50 appliance, 15 00:00:38,647 --> 00:00:41,230 Talagang ako ay nasasabik, dahil talaga kaming magkaroon ng client Linux, 16 00:00:41,230 --> 00:00:46,270 kaya ang karamihan ng aming mga gumagamit gamitin ang alinman sa Windows o ang mga kliyente Macintosh, 17 00:00:46,270 --> 00:00:50,940 ngunit ang Linux, Macintosh, at Windows kliyente ay ang lahat aktwal na halos kapareho. 18 00:00:50,940 --> 00:00:55,590 >> Kaya kung ano ang ginawa namin ay namin ang pre-install ang Dropbox Linux client sa CS50 19 00:00:55,590 --> 00:00:59,990 appliance, at ito ay tumatakbo tulad lamang lahat ng aming mga iba pang mga gumagamit ng Linux. 20 00:00:59,990 --> 00:01:02,210 >> Alex ALLAIN: Kaya ang paraan Dropbox Gumagana ba ito 21 00:01:02,210 --> 00:01:08,590 nagpapatakbo ng bilang isang kliyente sa maraming iba't ibang mga operating system at aparato. 22 00:01:08,590 --> 00:01:11,387 Ang Dropbox desktop client ay isa sa mga pinaka-mahusay na kilala, 23 00:01:11,387 --> 00:01:12,720 at isa sa mga pinaka-kagiliw-giliw. 24 00:01:12,720 --> 00:01:15,460 >> Thomas CARRIERO: Kaya Dropbox isa lamang tumatagal ng lahat ng mga file 25 00:01:15,460 --> 00:01:19,500 na inilagay mo sa folder at ito chunks mga file na iyon sa apat na-megabyte chunks. 26 00:01:19,500 --> 00:01:23,270 Kaya kami na ang isang 100-megabyte PDF file at kami ay 27 00:01:23,270 --> 00:01:26,070 tigkal ito sa 25 apat-megabyte chunks. 28 00:01:26,070 --> 00:01:30,670 Yaong chunks ay pagkatapos ay naka-encrypt at pagkatapos ipadala namin ang mga ito sa aming mga server bloke. 29 00:01:30,670 --> 00:01:35,980 >> Alex ALLAIN: Ang block mga server ay ang imbakan para sa mga bloke sa kanilang sarili, 30 00:01:35,980 --> 00:01:39,570 at sa gayon ang bawat block ay naka-imbak sa ang bloke ng server gamit ang data 31 00:01:39,570 --> 00:01:43,990 at isang Shaw 356 hash ng na block. 32 00:01:43,990 --> 00:01:48,280 Iyon ay isang napaka-basic na pag-encrypt primitive na nagbubuod, sa ilang mga kahulugan, 33 00:01:48,280 --> 00:01:53,140 ang data sa isang napaka-natatanging paraan na natatangi sa data na iyon. 34 00:01:53,140 --> 00:01:55,540 >> Maaaring kang mag-upload ng buong file nang sabay-sabay, 35 00:01:55,540 --> 00:02:00,120 ngunit ito ay lumiliko out kung gagawin mo tumagal na, talagang malalaking file 36 00:02:00,120 --> 00:02:03,616 isang talagang mahabang oras na mag-upload, at kung mayroon kang isang pagkabigo, handa ka out ka sana 37 00:02:03,616 --> 00:02:04,740 at mayroon kang upang i-restart ito. 38 00:02:04,740 --> 00:02:07,620 >> Ano kami pagkatapos gawin ay sabihin namin ang isa pang server sa aming system, 39 00:02:07,620 --> 00:02:11,550 at kung ano ang tinatawag naming ang metadata server, na hey ito ay isang file, 40 00:02:11,550 --> 00:02:14,200 at ito ay binubuo ng mga sumusunod na listahan ng mga block. 41 00:02:14,200 --> 00:02:17,030 At palampasin namin ang hashes upang makilala ang mga bloke 42 00:02:17,030 --> 00:02:18,770 sa halip na i-upload ulit ang buong block. 43 00:02:18,770 --> 00:02:20,820 Metaserver Ang pagkatapos ay sumusuri ang bloke ng mga server, 44 00:02:20,820 --> 00:02:22,153 tinitiyak ng mga bloke ang naroon. 45 00:02:22,153 --> 00:02:23,140 Kung sila, perpekto. 46 00:02:23,140 --> 00:02:24,040 Ang lahat ay mabuti. 47 00:02:24,040 --> 00:02:26,400 >> Thomas CARRIERO: Kapag kami nais na isa lamang i-download 48 00:02:26,400 --> 00:02:30,050 ang file mula sa internet, sabihin sabihin nating, gagamitin namin sabihin sa huling metaserver 49 00:02:30,050 --> 00:02:33,090 una, hey maaari mong sabihin sa akin tungkol sa kung saan matatagpuan ang file na ito? 50 00:02:33,090 --> 00:02:37,230 At metaserver ay sabihin, oh ang file na ito ng talaga 25 apat-megabyte chunks, 51 00:02:37,230 --> 00:02:38,210 at dito sila. 52 00:02:38,210 --> 00:02:41,712 At pagkatapos ay ipagpapatuloy namin ng isang bloke server at talagang i-download ang bawat isa sa mga chunks. 53 00:02:41,712 --> 00:02:43,670 At pagkatapos ay gagamitin namin muling itayo ang file mula doon, 54 00:02:43,670 --> 00:02:45,086 at pagkatapos ay gagamitin namin simulan ang pag-download. 55 00:02:45,086 --> 00:02:47,580 Oo, kaya Dropbox ng deal may scale talaga 56 00:02:47,580 --> 00:02:50,460 sa pamamagitan ng napaka, napaka-agresibo sharding. 57 00:02:50,460 --> 00:02:56,400 >> Alex ALLAIN: Sharding ay kapag ikaw gawin ang lahat ng mga gumagamit sa iyong pagsisimula up 58 00:02:56,400 --> 00:03:00,010 o iyong kumpanya at marahil sila ginagamit upang maging sa isang database, 59 00:03:00,010 --> 00:03:02,620 at na gumagana mahusay na hanggang sa iyo pindutin ang isang tiyak na bilang ng mga gumagamit. 60 00:03:02,620 --> 00:03:04,578 At talagang kung ano ang gusto mo gawin ay mahanap ang ilang mga paraan 61 00:03:04,578 --> 00:03:07,410 upang hatiin ang mga kabuuan ng dalawang mga database, o siguro higit sa dalawa. 62 00:03:07,410 --> 00:03:10,830 May perpektong, sapat na maaari mong mayroon sa bawat gumagamit sa buong mundo. 63 00:03:10,830 --> 00:03:13,080 >> At kaya kapag Shard mo, ano ang ginagawa mo ay sa iyo 64 00:03:13,080 --> 00:03:16,830 mahanap ang ilang mga paraan ng pagpapasya na database upang pumunta 65 00:03:16,830 --> 00:03:20,240 sa na ay hindi nangangailangan ng pagpindot ng gitnang direktoryo. 66 00:03:20,240 --> 00:03:23,670 O siguro ay ito ay isang napaka-mabilis, murang hitsura-up gitnang direktoryo. 67 00:03:23,670 --> 00:03:27,189 >> Thomas CARRIERO: Kami ay hindi kailanman mayroon lahat naka-imbak sa isang database, 68 00:03:27,189 --> 00:03:28,980 dahil iyon ang halos hindi kailanman pagpunta sa scale. 69 00:03:28,980 --> 00:03:33,970 Kaya sa halip, anong gagawin namin ay gawin ang lahat ng ang impormasyong iyon, ang lahat ng mga file na 70 00:03:33,970 --> 00:03:36,610 ay naka-imbak sa ang metadata, Shard sa daan-daang 71 00:03:36,610 --> 00:03:38,710 o libu-libong mga lohikal na mga database. 72 00:03:38,710 --> 00:03:42,900 At ibig sabihin nito ay na kapag mayroon kaming humiling para sa impormasyon ng isang gumagamit, 73 00:03:42,900 --> 00:03:46,890 Makikita muna namin sinasabi, hey na database ay impormasyon ng gumagamit na ito na naka-imbak sa? 74 00:03:46,890 --> 00:03:49,852 Pagkatapos kami ay isa lamang gamitin na desisyon upang pumunta 75 00:03:49,852 --> 00:03:51,560 makita na database at iyon kung saan kami ay 76 00:03:51,560 --> 00:03:55,080 load sa lahat ng file o sa lahat ang metadata tungkol sa mga file. 77 00:03:55,080 --> 00:03:56,464 >> Kaya gumagamit kami ng maraming sharding. 78 00:03:56,464 --> 00:03:57,880 Ngunit sharding ay hindi palaging sapat. 79 00:03:57,880 --> 00:04:00,380 Talaga Ikaw ay kailangan i-cache ng maraming mga karaniwang mga kahilingan, 80 00:04:00,380 --> 00:04:04,010 dahil kahit na mga database mga query ay maaaring maging mahal 81 00:04:04,010 --> 00:04:07,570 kaya din ang ginagawa namin agresibo Kinukunan estratehiya upang matiyak na ang pinaka- 82 00:04:07,570 --> 00:04:10,310 mga karaniwang request ay medyo madali upang makalkula. 83 00:04:10,310 --> 00:04:14,630 At isa lamang na gumagawa ng maraming mas mabilis at ito ay ginagawa itong gumana ex scale. 84 00:04:14,630 --> 00:04:17,320 Kaya iyon sa isang napaka- mataas na antas ng kung paano gumagana ang Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> Alex ALLAIN: Ako Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> Thomas CARRIERO: At Ako Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 Alex ALLAIN: At ito ay CS50. 88 00:04:22,579 --> 00:04:23,936