1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Jsem Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Jsem softwarový inženýr na Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Já jsem Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Jsem inženýr zde na Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Ano, byl jsem vlastně první hlava TF pro CS50 7 00:00:11,320 --> 00:00:13,660 když David Malin převzal třídu. 8 00:00:13,660 --> 00:00:17,010 Už jsem se učil CS50 dva semestry 9 00:00:17,010 --> 00:00:20,700 Mike Smith, který byl před profesor tam. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Takže jsem vlastně dělal ne se CS50, ale dvakrát jsem to udělal TF to. 11 00:00:25,310 --> 00:00:29,050 Poté, co jako běžné TF, a pak se můj nadřízený rok 12 00:00:29,050 --> 00:00:32,520 Byl jsem vlastně hlava TF z CS50, což bylo hodně legrace. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Tak když David natáhl 14 00:00:34,270 --> 00:00:38,647 mi o nastavení Dropbox v CS50 spotřebiče 15 00:00:38,647 --> 00:00:41,230 Byl jsem opravdu nadšený, protože ve skutečnosti máme klienta Linux, 16 00:00:41,230 --> 00:00:46,270 takže většina našich uživatelů používá buď Windows nebo klienti Macintosh, 17 00:00:46,270 --> 00:00:50,940 ale Linux, Macintosh a Windows klienti jsou ve skutečnosti velmi podobné. 18 00:00:50,940 --> 00:00:55,590 >> Takže to, co jsme udělali je, že jsme pre-nainstalovány klient Dropbox Linux v CS50 19 00:00:55,590 --> 00:00:59,990 zařízení, a to běží, stejně jako všechny naše ostatní uživatele Linuxu. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: Tak způsob, jak Dropbox funguje, je to 21 00:01:02,210 --> 00:01:08,590 běží jako klient na mnoha různých operační systémy a zařízení. 22 00:01:08,590 --> 00:01:11,387 Desktop klient Dropbox je jeden z nejvíce dobře známý, 23 00:01:11,387 --> 00:01:12,720 a jeden z nejzajímavějších. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Tak Dropbox v podstatě se všechny soubory 25 00:01:15,460 --> 00:01:19,500 které jste vložili do složky a kousky tyto soubory do čtyř megabajt kousky. 26 00:01:19,500 --> 00:01:23,270 Takže budeme mít 100 megabajtů Soubor PDF a my 27 00:01:23,270 --> 00:01:26,070 kus do 25 čtyři megabajt kousky. 28 00:01:26,070 --> 00:01:30,670 Tyto kusy jsou pak šifrován a pak poslat do našeho bloku servery. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: Blok servery jsou úložiště pro samotné bloky, 30 00:01:35,980 --> 00:01:39,570 a proto každý blok je uložen v blok server s daty 31 00:01:39,570 --> 00:01:43,990 a Shaw 356 hash tohoto bloku. 32 00:01:43,990 --> 00:01:48,280 To je velmi jednoduchý šifrovací primitivní , který shrnuje, v určitém smyslu, 33 00:01:48,280 --> 00:01:53,140 data ve velmi jedinečným způsobem to je jedinečné těchto údajů. 34 00:01:53,140 --> 00:01:55,540 >> Dalo by se nahrát celý soubor najednou, 35 00:01:55,540 --> 00:02:00,120 ale ukázalo se, pokud nechcete že, opravdu velké soubory zabírají 36 00:02:00,120 --> 00:02:03,616 opravdu dlouhá doba nahrát, a pokud máte poruchu, máte smůlu 37 00:02:03,616 --> 00:02:04,740 a musíte ji restartovat. 38 00:02:04,740 --> 00:02:07,620 >> To, co pak dělat, je, že jsme říci, jiný server v našem systému, 39 00:02:07,620 --> 00:02:11,550 a to, co nazýváme metadata serveru, že hej to je soubor, 40 00:02:11,550 --> 00:02:14,200 a to ve složení Následující seznam bloků. 41 00:02:14,200 --> 00:02:17,030 A my jsme projít do hodnoty hash identifikovat ty bloky 42 00:02:17,030 --> 00:02:18,770 spíše než re-nahrávání celý blok. 43 00:02:18,770 --> 00:02:20,820 Metaserver pak kontroluje bloku servery, 44 00:02:20,820 --> 00:02:22,153 zajišťuje, že bloky jsou tam. 45 00:02:22,153 --> 00:02:23,140 Pokud jsou, perfektní. 46 00:02:23,140 --> 00:02:24,040 Všechno je dobré. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Když jsme Chcete podstatě ke stažení 48 00:02:26,400 --> 00:02:30,050 souborů z internetu, ať je to řekněme, budeme říkat na poslední metaserver 49 00:02:30,050 --> 00:02:33,090 První, hej můžete mi říct, o tom, kde se nachází tento soubor je? 50 00:02:33,090 --> 00:02:37,230 A metaserver řeknou, ach tento soubor je ve skutečnosti 25 čtyři-megabyte kousky, 51 00:02:37,230 --> 00:02:38,210 a tady jsou. 52 00:02:38,210 --> 00:02:41,712 A pak půjdeme blokové serveru a skutečně stáhnout každý z těchto bloků. 53 00:02:41,712 --> 00:02:43,670 A pak budeme rekonstruovat soubor odtud, 54 00:02:43,670 --> 00:02:45,086 a pak budeme-li zahájit stahování. 55 00:02:45,086 --> 00:02:47,580 Ano, tak Dropbox obchodů se stupnicí v podstatě 56 00:02:47,580 --> 00:02:50,460 velmi, velmi agresivní sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding je, když jste vzít všechny uživatele ve vaší začátku až 58 00:02:56,400 --> 00:03:00,010 nebo vaše společnost, a možná, že používá se v jedné databázi, 59 00:03:00,010 --> 00:03:02,620 a že funguje skvěle, dokud hit určitý počet uživatelů. 60 00:03:02,620 --> 00:03:04,578 A opravdu to, co chceš udělat, je najít nějaký způsob, 61 00:03:04,578 --> 00:03:07,410 rozdělit ty přes dvě databáze, nebo možná více než dvě. 62 00:03:07,410 --> 00:03:10,830 V ideálním případě tak, že můžete mít každý uživatel na světě. 63 00:03:10,830 --> 00:03:13,080 >> A tak, když se střep, to, co děláte, je vám 64 00:03:13,080 --> 00:03:16,830 najít nějaký způsob, jak rozhodnout, které databáze jít 65 00:03:16,830 --> 00:03:20,240 se, že nevyžaduje bít centrální adresář. 66 00:03:20,240 --> 00:03:23,670 Nebo možná, že je to velmi rychlé, levné look-up centrální adresář. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Nikdy jsme se vše uloženo v jedné databázi, 68 00:03:27,189 --> 00:03:28,980 protože to je téměř nikdy měřítku. 69 00:03:28,980 --> 00:03:33,970 Takže místo toho, co budeme dělat, je mít všechny že údaje, všechny soubory, které 70 00:03:33,970 --> 00:03:36,610 jsou uloženy na metadata, Shard celé stovky 71 00:03:36,610 --> 00:03:38,710 nebo tisíce logických databází. 72 00:03:38,710 --> 00:03:42,900 A to znamená, že pokud máme žádost o informace uživatele, 73 00:03:42,900 --> 00:03:46,890 budeme nejprve říci, hej, které databáze jsou informace uživatelův uloženy v? 74 00:03:46,890 --> 00:03:49,852 Pak jsme si v podstatě použití tohoto rozhodnutí jít 75 00:03:49,852 --> 00:03:51,560 zjistíte, že databáze a to je, kde budeme 76 00:03:51,560 --> 00:03:55,080 načíst všechny soubory nebo všechny metadata o souborech. 77 00:03:55,080 --> 00:03:56,464 >> Tak jsme se použít hodně sharding. 78 00:03:56,464 --> 00:03:57,880 Ale sharding není vždy dost. 79 00:03:57,880 --> 00:04:00,380 Jste skutečně potřebují do mezipaměti hodně společných požadavků, 80 00:04:00,380 --> 00:04:04,010 protože i ty databáze Dotazy mohou být drahé 81 00:04:04,010 --> 00:04:07,570 tak uděláme také agresivní snímání strategie, aby se ujistil, že nejvíce 82 00:04:07,570 --> 00:04:10,310 společné požadavky jsou poměrně snadno vypočítat. 83 00:04:10,310 --> 00:04:14,630 A v podstatě, že dělá hodně rychleji, a to dělá to funguje ex měřítko. 84 00:04:14,630 --> 00:04:17,320 Tak to je na velmi na vysoké úrovni, jak Dropbox funguje. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Já jsem Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: A Jsem Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: A je to CS50. 88 00:04:22,579 --> 00:04:23,936