1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Jam Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Unë jam një inxhinier software në Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX Allain: Unë jam Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Unë jam një inxhinier këtu në Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Po, unë kam qenë në fakt TF parë kreu për CS50 7 00:00:11,320 --> 00:00:13,660 kur Davidi Malin mori klasën. 8 00:00:13,660 --> 00:00:17,010 Unë tashmë ishte mësuar CS50 për dy semestra 9 00:00:17,010 --> 00:00:20,700 me Mike Smith, i cili ishte profesor para atje. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: Kështu që unë në fakt nuk e kam marrë CS50, por unë e bëri TF atë dy herë. 11 00:00:25,310 --> 00:00:29,050 Pasi si TF rregullt, dhe pastaj viti im i lartë 12 00:00:29,050 --> 00:00:32,520 Unë kam qenë në fakt TF kreu i CS50, e cila ishte një shumë e fun. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Pra, Kur Davidi arriti jashtë 14 00:00:34,270 --> 00:00:38,647 për mua në lidhje me ngritjen e Dropbox në aplikim CS50, 15 00:00:38,647 --> 00:00:41,230 Unë kam qenë i ngacmuar me të vërtetë, sepse ne fakt kemi një klient Linux, 16 00:00:41,230 --> 00:00:46,270 kështu që shumica e përdoruesve tanë përdorin ose Dritaret apo klientët Macintosh, 17 00:00:46,270 --> 00:00:50,940 por Linux, Macintosh, dhe Windows klientët janë të gjitha në të vërtetë shumë të ngjashme. 18 00:00:50,940 --> 00:00:55,590 >> Pra, ajo që ne e bëmë ne është para-instaluar klienti Dropbox Linux në CS50 19 00:00:55,590 --> 00:00:59,990 aplikim, dhe ai shkon vetëm si të gjithë përdoruesit e tjerë tona Linux. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: Pra, mënyrë Dropbox punon është ajo 21 00:01:02,210 --> 00:01:08,590 shkon si një klient në shumë të ndryshme sistemeve operative dhe pajisjet. 22 00:01:08,590 --> 00:01:11,387 Desktop klient Dropbox është një nga më të njohur mirë, 23 00:01:11,387 --> 00:01:12,720 dhe një nga më interesante. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Pra Dropbox në thelb merr të gjitha dosjet 25 00:01:15,460 --> 00:01:19,500 që ju të vënë në dosje dhe chunks ato fotografi në chunks katër-megabyte. 26 00:01:19,500 --> 00:01:23,270 Pra, ne do të marrin një 100-megabyte PDF fotografi dhe ne do të 27 00:01:23,270 --> 00:01:26,070 copë atë në 25 chunks katër-megabyte. 28 00:01:26,070 --> 00:01:30,670 Këto chunks atëherë janë të koduara dhe atëherë ne dërgoni ato në serverat tanë bllok. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: Serverat bllok janë magazinimit për vetë blloqe, 30 00:01:35,980 --> 00:01:39,570 dhe kështu çdo bllok është e ruajtur në server bllok me të dhënat 31 00:01:39,570 --> 00:01:43,990 dhe një hash Shaw 356 të këtij blloku. 32 00:01:43,990 --> 00:01:48,280 Kjo është një encryption shumë bazë primitive që përmbledh, në një kuptim, 33 00:01:48,280 --> 00:01:53,140 të dhënat në një mënyrë shumë të veçantë kjo është unike për këto të dhëna. 34 00:01:53,140 --> 00:01:55,540 >> Ju mund të ngarkoni tërë fotografi të gjitha përnjëherë, 35 00:01:55,540 --> 00:02:00,120 por rezulton në qoftë se ju bëni që, fotografi të vërtetë të mëdha të 36 00:02:00,120 --> 00:02:03,616 një kohë të vërtetë e gjatë për të ngarkoni, dhe në qoftë se ju keni një dështim, ju jeni nga fat 37 00:02:03,616 --> 00:02:04,740 dhe ju duhet të rinisni atë. 38 00:02:04,740 --> 00:02:07,620 >> Ajo që ne pastaj të bëjë është që të themi: një tjetër server në sistemin tonë, 39 00:02:07,620 --> 00:02:11,550 dhe ajo që ne e quajmë metadata server, se hej kjo është një fotografi, 40 00:02:11,550 --> 00:02:14,200 dhe është e përbërë nga pas listën e blloqeve. 41 00:02:14,200 --> 00:02:17,030 Dhe ne të kalojë deri hashes për të identifikuar ato blloqe 42 00:02:17,030 --> 00:02:18,770 në vend se të ri-ngarkimi i gjithë blloku. 43 00:02:18,770 --> 00:02:20,820 Metaserver pastaj kontrollon servers bllok, 44 00:02:20,820 --> 00:02:22,153 bën të sigurt blloqet janë atje. 45 00:02:22,153 --> 00:02:23,140 Nëse ata janë, të përsosur. 46 00:02:23,140 --> 00:02:24,040 Çdo gjë është e mirë. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Kur ne doni të shkarkoni në thelb 48 00:02:26,400 --> 00:02:30,050 fotografi nga interneti, le të thonë, ne do të thonë se në metaserver fundit 49 00:02:30,050 --> 00:02:33,090 parë, hey mund të më thoni se ku gjendet e skedës? 50 00:02:33,090 --> 00:02:37,230 Dhe metaserver do të thonë, oh këtë fotografi të në të vërtetë 25 chunks katër-megabyte, 51 00:02:37,230 --> 00:02:38,210 dhe këtu janë ata. 52 00:02:38,210 --> 00:02:41,712 Dhe pastaj ne do të shkojnë një server bllok dhe në të vërtetë shkarko secili prej këtyre chunks. 53 00:02:41,712 --> 00:02:43,670 Dhe pastaj ne do të rindërtojnë fotografi nga atje, 54 00:02:43,670 --> 00:02:45,086 dhe pastaj ne do të filluar shkarkimin. 55 00:02:45,086 --> 00:02:47,580 Po, kështu që Dropbox e marrëveshjeve me shkallë në thelb 56 00:02:47,580 --> 00:02:50,460 nga shumë, sharding shumë agresive. 57 00:02:50,460 --> 00:02:56,400 >> ALEX Allain: Sharding është kur ju të marrë të gjithë përdoruesit në fillimin tuaj 58 00:02:56,400 --> 00:03:00,010 ose kompania juaj dhe ndoshta ata përdoret për të qenë në një bazë të dhënash, 59 00:03:00,010 --> 00:03:02,620 dhe që vepra të mëdha deri sa ju goditur një numër të caktuar të përdoruesve. 60 00:03:02,620 --> 00:03:04,578 Dhe me të vërtetë atë që ju dëshironi të bëni është të gjejnë ndonjë mënyrë 61 00:03:04,578 --> 00:03:07,410 për të ndarë ato në të dy Bazat e të dhënave, ose ndoshta më shumë se dy. 62 00:03:07,410 --> 00:03:10,830 Në mënyrë ideale, të mjaftueshme që ju mund të kanë çdo përdorues në botë. 63 00:03:10,830 --> 00:03:13,080 >> Dhe kështu që kur ju copë e thyer, atë që ju bëni është të ju 64 00:03:13,080 --> 00:03:16,830 të gjejnë një mënyrë për të vendosur të cilat baza e të dhënave për të shkuar 65 00:03:16,830 --> 00:03:20,240 të që nuk kërkon goditur një drejtori qendrore. 66 00:03:20,240 --> 00:03:23,670 Apo ndoshta kjo është një shumë të shpejtë, Drejtoria qendrore look-up të lirë. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Ne kurrë nuk kemi çdo gjë ruhet në një bazë të dhënash, 68 00:03:27,189 --> 00:03:28,980 sepse kjo është pothuajse e kurrë nuk përhapet. 69 00:03:28,980 --> 00:03:33,970 Pra në vend të kësaj, ajo që ne do të bëjmë është të marrë të gjitha se informatat, të gjitha dosjet që 70 00:03:33,970 --> 00:03:36,610 ruhen ne metadata, copë e thyer nëpër qindra 71 00:03:36,610 --> 00:03:38,710 ose mijëra të bazave të të dhënave logjike. 72 00:03:38,710 --> 00:03:42,900 Dhe kjo do të thotë se kur ne kemi një kërkesë për informacion të një përdoruesi, 73 00:03:42,900 --> 00:03:46,890 ne do të themi së pari, hej cilat baza e të dhënave është informata e perdoruesit ruajtur në? 74 00:03:46,890 --> 00:03:49,852 Pastaj ne do të në thelb përdorin atë vendim për të shkuar 75 00:03:49,852 --> 00:03:51,560 të gjeni se bazën e të dhënave dhe kjo është ajo ku ne do të 76 00:03:51,560 --> 00:03:55,080 ngarkesës të gjitha dosjet apo të gjithë metadata për fotografi. 77 00:03:55,080 --> 00:03:56,464 >> Pra, ne përdorim një shumë të sharding. 78 00:03:56,464 --> 00:03:57,880 Por sharding nuk është gjithmonë e mjaftueshme. 79 00:03:57,880 --> 00:04:00,380 Ju në fakt jeni nevojë për të cache një shumë e kërkesave të përbashkëta, 80 00:04:00,380 --> 00:04:04,010 sepse edhe ata të bazës së të dhënave pyetje mund të jetë i shtrenjtë 81 00:04:04,010 --> 00:04:07,570 kështu që ne gjithashtu bëjmë kapjen agresive strategjitë për të siguruar që më 82 00:04:07,570 --> 00:04:10,310 kërkesa të zakonshme janë shumë e lehtë për të llogaritur. 83 00:04:10,310 --> 00:04:14,630 Dhe në thelb që e bën shumë më të shpejtë dhe kjo e bën atë punë ex shkallë. 84 00:04:14,630 --> 00:04:17,320 Pra, kjo është në një shumë të i nivelit të lartë si punon Dropbox. 85 00:04:17,320 --> 00:04:19,149 >> ALEX Allain: Unë jam Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Dhe Unë jam Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX Allain: Dhe kjo është CS50. 88 00:04:22,579 --> 00:04:23,936