1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Ek is Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Ek is 'n sagteware ingenieur by Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX Allain: Ek is Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Ek is 'n ingenieur hier by Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Ja, ek was eintlik die eerste hoof TF vir CS50 7 00:00:11,320 --> 00:00:13,660 Toe Dawid Malin het oor die klas. 8 00:00:13,660 --> 00:00:17,010 Ek het reeds onderrig CS50 vir twee semesters 9 00:00:17,010 --> 00:00:20,700 Mike Smith, wat die vorige professor daar. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: Ek het eintlik nie neem CS50, maar ek het TF dit twee keer. 11 00:00:25,310 --> 00:00:29,050 Sodra as 'n gereelde TF, en dan my senior jaar 12 00:00:29,050 --> 00:00:32,520 Ek was eintlik kop TF van CS50, wat 'n baie pret. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: So Toe Dawid bereik uit 14 00:00:34,270 --> 00:00:38,647 met my oor die oprigting van ' Dropbox in die CS50 toestel, 15 00:00:38,647 --> 00:00:41,230 Ek is baie opgewonde, want Ons het eintlik 'n Linux kliënt, 16 00:00:41,230 --> 00:00:46,270 sodat die meeste van ons gebruikers gebruik óf Windows of die Macintosh kliënte, 17 00:00:46,270 --> 00:00:50,940 Maar die Linux, Mac, en Windows kliënte is eintlik baie soortgelyk. 18 00:00:50,940 --> 00:00:55,590 >> So wat ons gedoen het, is ons vooraf geïnstalleer die Dropbox Linux kliënt in die CS50 19 00:00:55,590 --> 00:00:59,990 apparaat, en dit loop net soos almal van ons ander Linux-gebruikers. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: So het die manier Dropbox werk, is dit 21 00:01:02,210 --> 00:01:08,590 lopies as 'n kliënt op baie verskillende bedryfstelsels en toestelle. 22 00:01:08,590 --> 00:01:11,387 Die Dropbox lessenaar kliënt is een van die mees bekende, 23 00:01:11,387 --> 00:01:12,720 en een van die mees interessante. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: So Dropbox basies neem al die lêers 25 00:01:15,460 --> 00:01:19,500 dat jy sit in die gids en dit stukke die lêers in vier-megabyte stukke. 26 00:01:19,500 --> 00:01:23,270 So ons sal 'n 100-megabyte neem PDF lêer en ons sal 27 00:01:23,270 --> 00:01:26,070 stuk dit in 25 vier-megabyte stukke. 28 00:01:26,070 --> 00:01:30,670 Diegene stukke word dan geïnkripteer en stuur ons hulle aan ons blok bedieners. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: Die blok bedieners die stoor vir die blokke, 30 00:01:35,980 --> 00:01:39,570 en so elke blok is gestoor die blok-bediener met die data 31 00:01:39,570 --> 00:01:43,990 en 'n Shaw 356 hash van die blok. 32 00:01:43,990 --> 00:01:48,280 Dis 'n baie basiese kodering primitief wat 'n opsomming, in 'n sekere sin, 33 00:01:48,280 --> 00:01:53,140 die data in 'n baie unieke manier dit is uniek aan daardie data. 34 00:01:53,140 --> 00:01:55,540 >> Jy kan oplaai die hele lêer alles op een slag, 35 00:01:55,540 --> 00:02:00,120 Maar dit blyk uit as jy dit doen dat, regtig groot lêers te neem 36 00:02:00,120 --> 00:02:03,616 'n baie lang tyd om te laai, en indien jy het 'n mislukking, is jy uit van geluk 37 00:02:03,616 --> 00:02:04,740 en jy het dit om weer te begin. 38 00:02:04,740 --> 00:02:07,620 >> Wat ons dan doen, is ons vertel 'n ander bediener in ons stelsel, 39 00:02:07,620 --> 00:02:11,550 en wat ons noem die metadata bediener, wat hey dit is 'n lêer, 40 00:02:11,550 --> 00:02:14,200 en dit is saamgestel uit die volgende lys van blokke. 41 00:02:14,200 --> 00:02:17,030 En ons slaag om die twee velde daardie blokke te identifiseer 42 00:02:17,030 --> 00:02:18,770 eerder as re-oplaai die hele blok. 43 00:02:18,770 --> 00:02:20,820 Die metaserver dan gaan die blok servers, 44 00:02:20,820 --> 00:02:22,153 maak seker dat die blokke is daar. 45 00:02:22,153 --> 00:02:23,140 As hulle is, volmaak. 46 00:02:23,140 --> 00:02:24,040 Alles is goed. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Wanneer ons wil basies aflaai 48 00:02:26,400 --> 00:02:30,050 die lêer van die internet, laat sê, sal ons die laaste metaserver sê 49 00:02:30,050 --> 00:02:33,090 eerste, hey kan jy my vertel oor waar hierdie lêer se geleë? 50 00:02:33,090 --> 00:02:37,230 En metaserver sal sê, o hierdie lêer se eintlik 25 vier-megabyte stukke, 51 00:02:37,230 --> 00:02:38,210 en hier is hulle. 52 00:02:38,210 --> 00:02:41,712 En dan sal ons 'n blok bediener gaan eintlik laai elk van die stukke. 53 00:02:41,712 --> 00:02:43,670 En dan sal ons herbou die lêer van daar af, 54 00:02:43,670 --> 00:02:45,086 en dan sal ons die aflaai begin. 55 00:02:45,086 --> 00:02:47,580 Ja, so Dropbox van handel met skaal basies 56 00:02:47,580 --> 00:02:50,460 deur baie, baie aggressiewe sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX Allain: Sharding is wanneer jy neem al die gebruikers in jou begin tot 58 00:02:56,400 --> 00:03:00,010 of jou maatskappy en miskien het hulle gebruik te word in 'n databasis, 59 00:03:00,010 --> 00:03:02,620 en dat werk baie goed totdat jy getref 'n sekere aantal van die gebruikers. 60 00:03:02,620 --> 00:03:04,578 En regtig wat jy wil hê te doen, is om 'n manier te vind 61 00:03:04,578 --> 00:03:07,410 diegene te verdeel in twee databasisse, of dalk meer as twee. 62 00:03:07,410 --> 00:03:10,830 Ideaal gesproke genoeg dat jy kan het elke gebruiker in die wêreld. 63 00:03:10,830 --> 00:03:13,080 >> En so wanneer jy Shard, wat jy doen is jy 64 00:03:13,080 --> 00:03:16,830 een of ander manier van die besluit vind die databasis wat om te gaan 65 00:03:16,830 --> 00:03:20,240 te wat nie vereis slaan 'n sentrale gids. 66 00:03:20,240 --> 00:03:23,670 Of miskien is dit 'n baie vinnige, goedkoop look-up sentrale gids. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Ons het nog nooit alles wat gestoor word in 'n databasis, 68 00:03:27,189 --> 00:03:28,980 want dit is amper nooit te skaal gaan. 69 00:03:28,980 --> 00:03:33,970 So in plaas daarvan, wat ons gaan doen, is om al daardie inligting, al die lêers wat 70 00:03:33,970 --> 00:03:36,610 gestoor word op die metadata, Shard oor honderde 71 00:03:36,610 --> 00:03:38,710 of duisende logiese databasisse. 72 00:03:38,710 --> 00:03:42,900 En dit beteken dat wanneer ons 'n vra vir 'n gebruiker se inligting, 73 00:03:42,900 --> 00:03:46,890 Ons sal die eerste sê, hey wat databasis is hierdie gebruiker se inligting gestoor in? 74 00:03:46,890 --> 00:03:49,852 Dan sal ons basies gebruik dat die besluit om te gaan 75 00:03:49,852 --> 00:03:51,560 vind dat die databasis en dit is waar ons sal 76 00:03:51,560 --> 00:03:55,080 laai al die lêers of al die metadata oor die lêers. 77 00:03:55,080 --> 00:03:56,464 >> So gebruik ons ​​'n baie sharding. 78 00:03:56,464 --> 00:03:57,880 Maar sharding is nie altyd genoeg nie. 79 00:03:57,880 --> 00:04:00,380 Jy is werklik nodig om die kas 'n groot deel van die algemene versoeke, 80 00:04:00,380 --> 00:04:04,010 want selfs die databasis navrae kan duur wees 81 00:04:04,010 --> 00:04:07,570 so ons doen ook aggressiewe vaslê strategieë om seker te maak dat die meeste 82 00:04:07,570 --> 00:04:10,310 algemene versoeke baie maklik om te bereken. 83 00:04:10,310 --> 00:04:14,630 En basies wat maak 'n baie vinniger en dit maak dit werk ex skaal. 84 00:04:14,630 --> 00:04:17,320 So dit is op 'n baie hoë-vlak hoe Dropbox werk. 85 00:04:17,320 --> 00:04:19,149 >> ALEX Allain: Ek is Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: En Ek is Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX Allain: En dit is CS50. 88 00:04:22,579 --> 00:04:23,936