1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero: Olen Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Olen ohjelmistosuunnittelija Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN: Olen Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Olen insinööri täällä Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero: Kyllä, olin itse asiassa ensimmäinen pää TF CS50 7 00:00:11,320 --> 00:00:13,660 kun David Malin otti luokassa. 8 00:00:13,660 --> 00:00:17,010 Olin jo opettanut CS50 kaksi lukukautta 9 00:00:17,010 --> 00:00:20,700 Mike Smith, joka oli ennen professori siellä. 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN: Joten en oikeastaan ​​ei ottaa CS50, mutta tein TF sen kahdesti. 11 00:00:25,310 --> 00:00:29,050 Kun tavallisena TF, ja sitten minun vanhempi vuoden 12 00:00:29,050 --> 00:00:32,520 Olin itse pää TF CS50, mikä oli hauskaa. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: So kun David pääsi ulos 14 00:00:34,270 --> 00:00:38,647 minulle perustamalla Dropbox on CS50 laitteen 15 00:00:38,647 --> 00:00:41,230 Olin todella innoissani, koska meillä on todellakin Linux asiakas, 16 00:00:41,230 --> 00:00:46,270 joten suurin osa käyttäjistä käyttää joko Windows-tai Macintosh-asiakkaita, 17 00:00:46,270 --> 00:00:50,940 mutta Linux, Macintosh-ja Windows- asiakkaita ovat kaikki todella hyvin samankaltaisia. 18 00:00:50,940 --> 00:00:55,590 >> Joten mitä teimme on meidän esiasennettuna Dropbox Linux asiakkaan CS50 19 00:00:55,590 --> 00:00:59,990 laite, ja se toimii aivan kuten kaikki meidän muiden Linux-käyttäjille. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN: So tapa Dropbox toimii on se 21 00:01:02,210 --> 00:01:08,590 Toimii kuin asiakas monilla eri käyttöjärjestelmiä ja laitteita. 22 00:01:08,590 --> 00:01:11,387 Dropbox kassa asiakas on yksi hyvin tunnettu, 23 00:01:11,387 --> 00:01:12,720 ja yksi mielenkiintoinen. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero: So Dropbox pohjimmiltaan vie kaikki tiedostot 25 00:01:15,460 --> 00:01:19,500 että laitat siihen kansioon ja se paloina nämä tiedostot neljän megatavun paloina. 26 00:01:19,500 --> 00:01:23,270 Viemme 100 megatavun PDF-tiedoston ja me 27 00:01:23,270 --> 00:01:26,070 kimpale sen 25 neljän megatavun paloina. 28 00:01:26,070 --> 00:01:30,670 Nämä palat ovat sitten salataan ja sitten lähettää ne meidän lohko palvelimia. 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN: block palvelimet ovat varastointi lohkojen itse, 30 00:01:35,980 --> 00:01:39,570 ja siten, että kukin lohko on tallennettu lohko palvelimen tietojen kanssa 31 00:01:39,570 --> 00:01:43,990 ja Shaw 356 hash kyseisen lohkon. 32 00:01:43,990 --> 00:01:48,280 Se on hyvin yksinkertainen salaus alkeellinen että yhteenveto, jossain mielessä, 33 00:01:48,280 --> 00:01:53,140 tiedot hyvin ainutlaatuisella tavalla se on ainutlaatuinen, että tiedot. 34 00:01:53,140 --> 00:01:55,540 >> Voisit lähettää koko tiedoston kerralla, 35 00:01:55,540 --> 00:02:00,120 mutta käy ilmi, jos et että todella suuret tiedostot vievät 36 00:02:00,120 --> 00:02:03,616 todella kauan ladata, ja jos sinulla on vika, olet poissa onnea 37 00:02:03,616 --> 00:02:04,740 ja joudut käynnistämään sen. 38 00:02:04,740 --> 00:02:07,620 >> Mitä me sitten tehdä on kerromme toiselle palvelimelle meidän järjestelmässämme, 39 00:02:07,620 --> 00:02:11,550 ja mitä me kutsumme metatiedot palvelin, että hei tämä on tiedosto, 40 00:02:11,550 --> 00:02:14,200 ja se koostuu Seuraavassa luettelossa lohkoa. 41 00:02:14,200 --> 00:02:17,030 Ja menetämme hash tunnistaa ne lohkot 42 00:02:17,030 --> 00:02:18,770 sijasta uudelleen lataaminen koko korttelin. 43 00:02:18,770 --> 00:02:20,820 Metaserver sitten tarkistaa lohko palvelimet, 44 00:02:20,820 --> 00:02:22,153 varmistaa lohkot ovat siellä. 45 00:02:22,153 --> 00:02:23,140 Jos ne ovat, täydellinen. 46 00:02:23,140 --> 00:02:24,040 Kaikki on hyvää. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero: Kun me haluavat pohjimmiltaan ladata 48 00:02:26,400 --> 00:02:30,050 tiedosto internetistä, katsotaanpa sanoa, me sanomme viimeiseen metaserver 49 00:02:30,050 --> 00:02:33,090 Ensimmäinen, hei voitteko kertoa minulle siitä mihin tämä tiedoston sijaitsee? 50 00:02:33,090 --> 00:02:37,230 Ja metaserver sanovat, oh tämän tiedoston oikeastaan ​​25 neljän megatavun paloina, 51 00:02:37,230 --> 00:02:38,210 ja tässä ne ovat. 52 00:02:38,210 --> 00:02:41,712 Ja sitten menemme lohko palvelimen ja itse ladata jokainen näistä paloina. 53 00:02:41,712 --> 00:02:43,670 Ja sitten me rekonstruoimaan tiedoston sieltä, 54 00:02:43,670 --> 00:02:45,086 ja sitten aloitamme latauksena. 55 00:02:45,086 --> 00:02:47,580 Kyllä, joten Dropbox tarjouksia asteikolla pohjimmiltaan 56 00:02:47,580 --> 00:02:50,460 erittäin, erittäin aggressiivinen sharding. 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN: Sharding on kun ottaa kaikki käyttäjät näkevät käynnisty 58 00:02:56,400 --> 00:03:00,010 tai yrityksen ja ehkä ne käytetään olla yhteen tietokantaan, 59 00:03:00,010 --> 00:03:02,620 ja joka toimii hyvin, kunnes osuma tietty määrä käyttäjiä. 60 00:03:02,620 --> 00:03:04,578 Ja oikeastaan, mitä haluat tehdä on löytää tapa 61 00:03:04,578 --> 00:03:07,410 jakaa näitä kahdella eri tietokantoja tai ehkä enemmän kuin kaksi. 62 00:03:07,410 --> 00:03:10,830 Ihannetapauksessa riitä, että voit on kaikki käyttäjä maailmassa. 63 00:03:10,830 --> 00:03:13,080 >> Ja niin kun sirpale, mitä tehdä, on sinun 64 00:03:13,080 --> 00:03:16,830 löytää tapa päättää jonka tietokanta mennä 65 00:03:16,830 --> 00:03:20,240 ja joka ei edellytä lyömällä keskustassa hakemistoon. 66 00:03:20,240 --> 00:03:23,670 Tai ehkä se on erittäin nopea, Halvat Look-up Keski-hakemistossa. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Meillä ei koskaan ole kaikki tallennetaan yhteen tietokantaan, 68 00:03:27,189 --> 00:03:28,980 koska se on lähes koskaan mittakaavassa. 69 00:03:28,980 --> 00:03:33,970 Joten sen sijaan, mitä teemme on toteutettava kaikki että tiedot, kaikki tiedostot 70 00:03:33,970 --> 00:03:36,610 tallennetaan metatietoja, sirpale sadoissa 71 00:03:36,610 --> 00:03:38,710 tai tuhansia loogisia tietokantoja. 72 00:03:38,710 --> 00:03:42,900 Ja se tarkoittaa, että kun meillä on pyytää käyttäjän tietoja, 73 00:03:42,900 --> 00:03:46,890 me ensin sanoa, hei, mihin tietokannan tämä käyttäjän tiedot tallennetaan? 74 00:03:46,890 --> 00:03:49,852 Sitten me pohjimmiltaan käyttää kyseisen päätöksen mennä 75 00:03:49,852 --> 00:03:51,560 huomaamaan, että tietokanta ja se jos näytämme 76 00:03:51,560 --> 00:03:55,080 lataa kaikki tiedostot tai kaikki metatietoja tiedostoja. 77 00:03:55,080 --> 00:03:56,464 >> Joten käytämme paljon sharding. 78 00:03:56,464 --> 00:03:57,880 Mutta sharding ei aina riitä. 79 00:03:57,880 --> 00:04:00,380 Olet todella täytyy välimuistiin paljon yhteisiä pyyntöjä, 80 00:04:00,380 --> 00:04:04,010 koska nekin tietokanta kyselyt voi olla kallista 81 00:04:04,010 --> 00:04:07,570 joten teemme myös aggressiivinen syömällä strategiat varmistaa, että kaikkein 82 00:04:07,570 --> 00:04:10,310 yhteiset vaatimukset ovat melko helppo laskea. 83 00:04:10,310 --> 00:04:14,630 Ja periaatteessa joka tekee paljon nopeampi ja se tekee työtä ex mittakaavassa. 84 00:04:14,630 --> 00:04:17,320 Niin, että on hyvin korkean tason miten Dropbox toimii. 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN: Olen Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero: Ja Olen Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN: Ja tämä on CS50. 88 00:04:22,579 --> 00:04:23,936