1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO: Saya Thomas Carriero. 3 00:00:01,950 --> 00:00:03,640 Saya seorang jurutera perisian di Dropbox. 4 00:00:03,640 --> 00:00:05,250 >> ALEX Allain: Saya Alex Allain. 5 00:00:05,250 --> 00:00:08,200 Saya seorang jurutera di sini pada Dropbox. 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO: Ya, saya sebenarnya TF kepala pertama untuk CS50 7 00:00:11,320 --> 00:00:13,660 apabila David Malin mengambil alih kelas. 8 00:00:13,660 --> 00:00:17,010 Saya telah pun mengajar CS50 untuk dua semester 9 00:00:17,010 --> 00:00:20,700 dengan Mike Smith, yang merupakan profesor terlebih dahulu di sana. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: Jadi saya benar-benar tidak mengambil CS50, tetapi saya TF dua kali. 11 00:00:25,310 --> 00:00:29,050 Sekali sebagai TF biasa, dan kemudian tahun kanan saya 12 00:00:29,050 --> 00:00:32,520 Saya sebenarnya kepala TF daripada CS50, yang banyak keseronokan. 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO: Jadi apabila David mendekati 14 00:00:34,270 --> 00:00:38,647 kepada saya kira-kira menubuhkan Dropbox perkakas CS50 yang, 15 00:00:38,647 --> 00:00:41,230 Saya benar-benar teruja, kerana kita sebenarnya mempunyai pelanggan Linux, 16 00:00:41,230 --> 00:00:46,270 jadi kebanyakan pengguna kami menggunakan sama ada Windows atau pelanggan Macintosh, 17 00:00:46,270 --> 00:00:50,940 tetapi Linux, Macintosh, dan Windows pelanggan semua sebenarnya yang sama. 18 00:00:50,940 --> 00:00:55,590 >> Jadi apa yang kita lakukan ialah kita pra-dipasang pelanggan Dropbox Linux dalam CS50 19 00:00:55,590 --> 00:00:59,990 perkakas, dan ia berjalan seperti semua pengguna Linux kami yang lain. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: Jadi cara Dropbox berfungsi ialah ia 21 00:01:02,210 --> 00:01:08,590 berjalan sebagai pelanggan di pelbagai sistem operasi dan alat-alat. 22 00:01:08,590 --> 00:01:11,387 The Dropbox pelanggan desktop salah satu yang paling terkenal, 23 00:01:11,387 --> 00:01:12,720 dan salah satu yang paling menarik. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO: Jadi Dropbox pada dasarnya mengambil semua fail 25 00:01:15,460 --> 00:01:19,500 yang anda masukkan ke dalam folder dan ia ketulan fail-fail ke dalam ketulan empat megabait. 26 00:01:19,500 --> 00:01:23,270 Oleh itu, kita akan mengambil 100-megabait Fail PDF dan kita akan 27 00:01:23,270 --> 00:01:26,070 sebahagian ke dalam 25 ketulan empat megabait. 28 00:01:26,070 --> 00:01:30,670 Mereka ketulan kemudian disulitkan dan maka kita menghantar mereka ke pelayan blok kami. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: The pelayan blok adalah penyimpanan untuk blok diri mereka sendiri, 30 00:01:35,980 --> 00:01:39,570 dan sebagainya setiap blok disimpan di dalam server blok dengan data yang 31 00:01:39,570 --> 00:01:43,990 dan hash Shaw 356 blok itu. 32 00:01:43,990 --> 00:01:48,280 Itu satu penyulitan yang sangat asas primitif yang meringkaskan, dalam erti kata lain, 33 00:01:48,280 --> 00:01:53,140 data dengan cara yang sangat unik yang unik untuk data tersebut. 34 00:01:53,140 --> 00:01:55,540 >> Anda boleh memuat naik keseluruhan fail sekaligus, 35 00:01:55,540 --> 00:02:00,120 tetapi ternyata jika anda yang, fail benar-benar besar mengambil 36 00:02:00,120 --> 00:02:03,616 masa yang benar-benar panjang untuk dimuat naik, dan jika anda mempunyai kegagalan, anda daripada nasib 37 00:02:03,616 --> 00:02:04,740 dan anda perlu memulakannya semula. 38 00:02:04,740 --> 00:02:07,620 >> Apa pula yang kita lakukan adalah kita beritahu server lain dalam sistem kami, 39 00:02:07,620 --> 00:02:11,550 dan apa yang kita panggil metadata pelayan, yang hey ini adalah fail, 40 00:02:11,550 --> 00:02:14,200 dan ia terdiri daripada senarai blok berikut. 41 00:02:14,200 --> 00:02:17,030 Dan kita melalukan yang Hash untuk mengenal pasti orang-orang blok 42 00:02:17,030 --> 00:02:18,770 bukannya semula memuat naik seluruh blok. 43 00:02:18,770 --> 00:02:20,820 Metaserver kemudian memeriksa pelayan blok, 44 00:02:20,820 --> 00:02:22,153 memastikan blok berada di sana. 45 00:02:22,153 --> 00:02:23,140 Jika mereka, sempurna. 46 00:02:23,140 --> 00:02:24,040 Semuanya baik. 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO: Apabila kita mahu pada dasarnya turun 48 00:02:26,400 --> 00:02:30,050 fail dari internet, mari kita katakan, kita akan berkata kepada metaserver terakhir 49 00:02:30,050 --> 00:02:33,090 pertama, hey anda boleh beritahu saya tentang di mana terletak fail ini? 50 00:02:33,090 --> 00:02:37,230 Dan metaserver akan berkata, oh fail ini ini sebenarnya 25 ketulan empat megabait, 51 00:02:37,230 --> 00:02:38,210 dan di sini mereka. 52 00:02:38,210 --> 00:02:41,712 Dan kemudian kita akan pergi pelayan blok dan sebenarnya turun setiap orang-orang ketulan. 53 00:02:41,712 --> 00:02:43,670 Dan kemudian kita akan membina semula fail dari sana, 54 00:02:43,670 --> 00:02:45,086 dan kemudian kita akan mula memuat turun. 55 00:02:45,086 --> 00:02:47,580 Ya, jadi Dropbox tawaran dengan skala pada dasarnya 56 00:02:47,580 --> 00:02:50,460 dengan sangat, sharding sangat agresif. 57 00:02:50,460 --> 00:02:56,400 >> ALEX Allain: Sharding adalah apabila anda mengambil semua pengguna dalam permulaan anda 58 00:02:56,400 --> 00:03:00,010 atau syarikat anda dan mungkin mereka digunakan untuk berada di dalam satu pangkalan data, 59 00:03:00,010 --> 00:03:02,620 dan kerja-kerja besar sehingga anda mencecah sebilangan pengguna. 60 00:03:02,620 --> 00:03:04,578 Dan benar-benar apa yang anda mahu lakukan adalah mencari cara 61 00:03:04,578 --> 00:03:07,410 untuk berpecah mereka di dua pangkalan data, atau mungkin lebih daripada dua orang. 62 00:03:07,410 --> 00:03:10,830 Sebaik-baiknya, cukup bahawa anda boleh mempunyai setiap pengguna di dunia. 63 00:03:10,830 --> 00:03:13,080 >> Dan jadi apabila anda beling, apa yang anda lakukan adalah anda 64 00:03:13,080 --> 00:03:16,830 mencari cara-cara membuat keputusan mana pangkalan data untuk pergi 65 00:03:16,830 --> 00:03:20,240 kepada yang tidak memerlukan memukul direktori pusat. 66 00:03:20,240 --> 00:03:23,670 Atau mungkin ia adalah sangat cepat, murah melihat-up direktori pusat. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO: Kami tidak pernah mempunyai semua disimpan dalam satu pangkalan data, 68 00:03:27,189 --> 00:03:28,980 kerana itulah hampir tidak akan dicapai. 69 00:03:28,980 --> 00:03:33,970 Jadi,, apa yang kita akan lakukan ialah mengambil semua maklumat itu, semua fail-fail yang 70 00:03:33,970 --> 00:03:36,610 disimpan pada metadata, Shard seluruh beratus-ratus 71 00:03:36,610 --> 00:03:38,710 atau beribu-ribu pangkalan data logik. 72 00:03:38,710 --> 00:03:42,900 Dan itu bererti bahawa apabila kita mempunyai meminta maklumat pengguna, 73 00:03:42,900 --> 00:03:46,890 kita mula-mula akan berkata, hey mana pangkalan data adalah maklumat pengguna ini disimpan di dalam? 74 00:03:46,890 --> 00:03:49,852 Kemudian kita akan pada dasarnya menggunakan keputusan itu untuk pergi 75 00:03:49,852 --> 00:03:51,560 mencari pangkalan data yang dan di mana kita akan 76 00:03:51,560 --> 00:03:55,080 memuatkan semua fail atau semua Metadata tentang fail. 77 00:03:55,080 --> 00:03:56,464 >> Oleh itu, kita menggunakan banyak sharding. 78 00:03:56,464 --> 00:03:57,880 Tetapi sharding tidak selalunya mencukupi. 79 00:03:57,880 --> 00:04:00,380 Anda sebenarnya perlu cache banyak permintaan yang sama, 80 00:04:00,380 --> 00:04:04,010 kerana walaupun pangkalan data mereka pertanyaan boleh mahal 81 00:04:04,010 --> 00:04:07,570 jadi kami juga melakukan menangkap agresif strategi untuk memastikan bahawa yang paling 82 00:04:07,570 --> 00:04:10,310 permintaan biasa ialah agak mudah untuk mengira. 83 00:04:10,310 --> 00:04:14,630 Dan pada dasarnya yang membuat banyak lebih cepat dan ia membuatkan ia berfungsi bekas skala. 84 00:04:14,630 --> 00:04:17,320 Jadi, itu di yang sangat peringkat tinggi bagaimana Dropbox berfungsi. 85 00:04:17,320 --> 00:04:19,149 >> ALEX Allain: Saya Alex Allain. 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO: Dan Saya Thomas Carriero. 87 00:04:20,857 --> 00:04:22,579 ALEX Allain: Dan ini adalah CS50. 88 00:04:22,579 --> 00:04:23,936