Thomas CARRIERO: Ako Thomas Carriero. Ako ay isang software engineer sa Dropbox. Alex ALLAIN: Ako Alex Allain. Ako ay inhinyero dito sa Dropbox. Thomas CARRIERO: Oo, ako ay talaga ang unang head tf para sa CS50 noong kinuha sa ibabaw David Malin ang klase. Ako ay na-pagtuturo CS50 para sa dalawang semesters may Mike Smith, na naging ang naunang mga propesor doon. Alex ALLAIN: Kaya ko talagang ginawang hindi tumagal CS50, ngunit ginawa ko tf ito nang dalawang beses. Sa sandaling bilang isang regular na tf, at pagkatapos ay ang aking senior taon Ako ay talagang ulo tf ng CS50, na kung saan ay marami ng masaya. Thomas CARRIERO: Kaya kapag naabot out David sa akin tungkol sa pag-set up Dropbox sa CS50 appliance, Talagang ako ay nasasabik, dahil talaga kaming magkaroon ng client Linux, kaya ang karamihan ng aming mga gumagamit gamitin ang alinman sa Windows o ang mga kliyente Macintosh, ngunit ang Linux, Macintosh, at Windows kliyente ay ang lahat aktwal na halos kapareho. Kaya kung ano ang ginawa namin ay namin ang pre-install ang Dropbox Linux client sa CS50 appliance, at ito ay tumatakbo tulad lamang lahat ng aming mga iba pang mga gumagamit ng Linux. Alex ALLAIN: Kaya ang paraan Dropbox Gumagana ba ito nagpapatakbo ng bilang isang kliyente sa maraming iba't ibang mga operating system at aparato. Ang Dropbox desktop client ay isa sa mga pinaka-mahusay na kilala, at isa sa mga pinaka-kagiliw-giliw. Thomas CARRIERO: Kaya Dropbox isa lamang tumatagal ng lahat ng mga file na inilagay mo sa folder at ito chunks mga file na iyon sa apat na-megabyte chunks. Kaya kami na ang isang 100-megabyte PDF file at kami ay tigkal ito sa 25 apat-megabyte chunks. Yaong chunks ay pagkatapos ay naka-encrypt at pagkatapos ipadala namin ang mga ito sa aming mga server bloke. Alex ALLAIN: Ang block mga server ay ang imbakan para sa mga bloke sa kanilang sarili, at sa gayon ang bawat block ay naka-imbak sa ang bloke ng server gamit ang data at isang Shaw 356 hash ng na block. Iyon ay isang napaka-basic na pag-encrypt primitive na nagbubuod, sa ilang mga kahulugan, ang data sa isang napaka-natatanging paraan na natatangi sa data na iyon. Maaaring kang mag-upload ng buong file nang sabay-sabay, ngunit ito ay lumiliko out kung gagawin mo tumagal na, talagang malalaking file isang talagang mahabang oras na mag-upload, at kung mayroon kang isang pagkabigo, handa ka out ka sana at mayroon kang upang i-restart ito. Ano kami pagkatapos gawin ay sabihin namin ang isa pang server sa aming system, at kung ano ang tinatawag naming ang metadata server, na hey ito ay isang file, at ito ay binubuo ng mga sumusunod na listahan ng mga block. At palampasin namin ang hashes upang makilala ang mga bloke sa halip na i-upload ulit ang buong block. Metaserver Ang pagkatapos ay sumusuri ang bloke ng mga server, tinitiyak ng mga bloke ang naroon. Kung sila, perpekto. Ang lahat ay mabuti. Thomas CARRIERO: Kapag kami nais na isa lamang i-download ang file mula sa internet, sabihin sabihin nating, gagamitin namin sabihin sa huling metaserver una, hey maaari mong sabihin sa akin tungkol sa kung saan matatagpuan ang file na ito? At metaserver ay sabihin, oh ang file na ito ng talaga 25 apat-megabyte chunks, at dito sila. At pagkatapos ay ipagpapatuloy namin ng isang bloke server at talagang i-download ang bawat isa sa mga chunks. At pagkatapos ay gagamitin namin muling itayo ang file mula doon, at pagkatapos ay gagamitin namin simulan ang pag-download. Oo, kaya Dropbox ng deal may scale talaga sa pamamagitan ng napaka, napaka-agresibo sharding. Alex ALLAIN: Sharding ay kapag ikaw gawin ang lahat ng mga gumagamit sa iyong pagsisimula up o iyong kumpanya at marahil sila ginagamit upang maging sa isang database, at na gumagana mahusay na hanggang sa iyo pindutin ang isang tiyak na bilang ng mga gumagamit. At talagang kung ano ang gusto mo gawin ay mahanap ang ilang mga paraan upang hatiin ang mga kabuuan ng dalawang mga database, o siguro higit sa dalawa. May perpektong, sapat na maaari mong mayroon sa bawat gumagamit sa buong mundo. At kaya kapag Shard mo, ano ang ginagawa mo ay sa iyo mahanap ang ilang mga paraan ng pagpapasya na database upang pumunta sa na ay hindi nangangailangan ng pagpindot ng gitnang direktoryo. O siguro ay ito ay isang napaka-mabilis, murang hitsura-up gitnang direktoryo. Thomas CARRIERO: Kami ay hindi kailanman mayroon lahat naka-imbak sa isang database, dahil iyon ang halos hindi kailanman pagpunta sa scale. Kaya sa halip, anong gagawin namin ay gawin ang lahat ng ang impormasyong iyon, ang lahat ng mga file na ay naka-imbak sa ang metadata, Shard sa daan-daang o libu-libong mga lohikal na mga database. At ibig sabihin nito ay na kapag mayroon kaming humiling para sa impormasyon ng isang gumagamit, Makikita muna namin sinasabi, hey na database ay impormasyon ng gumagamit na ito na naka-imbak sa? Pagkatapos kami ay isa lamang gamitin na desisyon upang pumunta makita na database at iyon kung saan kami ay load sa lahat ng file o sa lahat ang metadata tungkol sa mga file. Kaya gumagamit kami ng maraming sharding. Ngunit sharding ay hindi palaging sapat. Talaga Ikaw ay kailangan i-cache ng maraming mga karaniwang mga kahilingan, dahil kahit na mga database mga query ay maaaring maging mahal kaya din ang ginagawa namin agresibo Kinukunan estratehiya upang matiyak na ang pinaka- mga karaniwang request ay medyo madali upang makalkula. At isa lamang na gumagawa ng maraming mas mabilis at ito ay ginagawa itong gumana ex scale. Kaya iyon sa isang napaka- mataas na antas ng kung paano gumagana ang Dropbox. Alex ALLAIN: Ako Alex Allain. Thomas CARRIERO: At Ako Thomas Carriero. Alex ALLAIN: At ito ay CS50.