THOMAS CARRIERO: Rwy'n Thomas Carriero. Rwy'n beiriannydd meddalwedd yn Dropbox. ALEX Allain: Rwy'n Alex Allain. Yr wyf yn beiriannydd yma yn Dropbox. THOMAS CARRIERO: Ie, roeddwn yn mewn gwirionedd TF bennaeth cyntaf ar gyfer CS50 pan gymerodd David Malin dros y dosbarth. Yr wyf eisoes wedi bod yn dysgu CS50 am ddau semester gyda Mike Smith, a oedd yn athro cyn yno. ALEX Allain: Felly, yr wyf mewn gwirionedd oedd cymryd CS50, ond fe wnes TF ddwywaith. Unwaith fel TF rheolaidd, ac yna fy mlwyddyn uwch Roeddwn yn mewn gwirionedd yn bennaeth TF o CS50, a oedd yn llawer o hwyl. THOMAS CARRIERO: Felly pan gyrhaeddodd Dafydd allan i mi am sefydlu Dropbox yn y peiriant CS50, Roeddwn yn gyffrous gwirionedd, gan fod yr ydym mewn gwirionedd yn cael gleient Linux, felly mae'r rhan fwyaf o'n defnyddwyr yn defnyddio naill ai Ffenestri neu cleientiaid Macintosh, ond mae'r Linux, Macintosh, a Ffenestri cleientiaid i gyd mewn gwirionedd yn debyg iawn. Felly hyn a wnaethom yw ein cyn-osod y cleient Dropbox Linux yn y CS50 offer, ac mae'n rhedeg yn union fel pob un o'n defnyddwyr eraill Linux. ALEX Allain: Felly, y ffordd Dropbox gweithio yw ei yn rhedeg fel cleient ar lawer o wahanol systemau gweithredu a dyfeisiau. Mae'r cleient n ben-desg Dropbox yn un o'r rhai mwyaf adnabyddus, ac yn un o'r rhai mwyaf diddorol. THOMAS CARRIERO: Felly Dropbox yn y bôn yn cymryd yr holl ffeiliau eich bod yn rhoi yn y ffolder ac mae'n ddarnau ffeiliau hynny yn ddarnau pedwar-megabeit. Felly, byddwn yn cymryd 100-megabeit Ffeil PDF ac rydym chi helpu darn i mewn i 25 o ddarnau pedwar-megabeit. Yna, darnau hynny yn cael eu hamgryptio a yna rydym yn eu hanfon at ein gweinyddion bloc. ALEX Allain: Y gweinyddwyr bloc yn storio ar gyfer y blociau eu hunain, ac felly mae pob bloc yn cael ei storio mewn gweinydd bloc gyda'r data a Shaw 356 hash y bloc. Dyna amgryptio sylfaenol iawn cyntefig sy'n crynhoi, mewn rhai ystyr, data mewn ffordd unigryw iawn sy'n unigryw i'r data hwnnw. Gallech lwytho y ffeil gyfan i gyd ar unwaith, ond mae'n troi allan os ydych yn gwneud hynny, ffeiliau fawr iawn yn cymryd amser hir iawn i lwytho, ac os gennych fethiant, ydych allan o lwc ac mae'n rhaid i chi ei ailgychwyn. Beth felly rydym yn ei wneud yw ein dweud gweinyddwr arall yn ein system, a'r hyn yr ydym yn galw y metadata gweinyddwr, hynny hey hon yn ffeil, ac mae'n cynnwys y rhestr o flociau canlynol. Ac rydym yn gwrthod y hashes i nodi'r blociau hynny yn hytrach na ail-llwytho i fyny y bloc cyfan. Mae'r metaserver Yna gwiriadau y gweinyddwyr bloc, yn sicrhau bod y blociau yno. Os ydynt, berffaith. Mae popeth yn dda. THOMAS CARRIERO: Pan fyddwn yn eisiau yn y bôn i'w llwytho i lawr y ffeil oddi ar y rhyngrwyd, gadewch i ni dyweder, byddwn yn dweud wrth y metaserver diwethaf yn gyntaf, hey allwch chi ddweud wrthyf am ble ffeil hwn lleoli? A bydd metaserver yn dweud, oh y ffeil yn mewn gwirionedd 25 ddarnau pedwar-megabeit, ac yma y maent. Ac yna byddwn yn mynd gweinydd bloc a mewn gwirionedd lawrlwytho pob un o'r darnau hynny. Ac yna byddwn yn ail-greu y ffeil oddi yno, ac yna byddwn yn dechrau lwytho i lawr. Ie, felly Dropbox yn delio gyda graddfa bôn drwy iawn, sharding ymosodol iawn. ALEX Allain: Sharding yw pan fyddwch yn cymryd pob un o'r defnyddwyr yn eich cychwyn i fyny neu eich cwmni ac efallai eu bod yn arfer bod mewn un gronfa ddata, a bod yn gweithio iawn hyd nes y byddwch taro nifer penodol o ddefnyddwyr. Ac yn wir yr hyn yr ydych ei eisiau ei wneud yw dod o hyd i ffordd i rannu hynny ar draws dau cronfeydd data, neu efallai mwy na dau. Yn ddelfrydol, yn ddigon eich bod yn gallu yn cael pob defnyddiwr yn y byd. Ac felly pan fyddwch yn Shard, yr hyn yr ydych yn ei wneud yw eich dod o hyd i ffordd o benderfynu sy'n cronfa ddata i fynd i hynny nid oes angen taro cyfeiriadur canolog. Neu efallai ei fod yn gyflym iawn, cyfeiriadur canolog edrych i fyny rhad. THOMAS CARRIERO: Yr ydym byth yn cael popeth storio mewn un gronfa ddata, oherwydd dyna bron byth yn mynd i raddfa. Felly, yn hytrach, yr hyn y byddwn yn ei wneud yw cymryd yr holl wybodaeth honno, yr holl ffeiliau sydd yn cael eu storio ar y metadata, Shard ar draws cannoedd neu filoedd o gronfeydd data rhesymegol. Ac mae hynny'n golygu bod pan fydd gennym cais am wybodaeth y defnyddiwr, byddwn yn gyntaf yn dweud, hey sy'n gronfa ddata caiff y wybodaeth y defnyddiwr hwn ei storio mewn? Yna, byddwn ni yn y bôn Defnyddiwch y penderfyniad i fynd dod o hyd i gronfa ddata a dyna lle byddwn ni lwytho holl ffeiliau neu bob y metadata am y ffeiliau. Felly, rydym yn defnyddio llawer o sharding. Ond nid sharding bob amser yn ddigon. Yn rhaid i chi mewn gwirionedd i cache llawer o'r ceisiadau cyffredin, oherwydd hyd yn oed y rhai cronfa ddata Gall ymholiadau fod yn ddrud felly rydym hefyd yn gwneud cipio ymosodol strategaethau i sicrhau bod y rhan fwyaf o ceisiadau cyffredin yw eithaf hawdd i gyfrifo. Ac yn y bôn sy'n gwneud llawer gyflymach ac mae'n ei gwneud yn gweithio ex raddfa. Felly dyna yn iawn lefel uchel-sut Dropbox yn gweithio. ALEX Allain: Rwy'n Alex Allain. THOMAS CARRIERO: A Rwy'n Thomas Carriero. ALEX Allain: Ac mae hyn yn CS50.