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 insinyur perangkat lunak 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 insinyur di sini di 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 ketika David Malin mengambil alih kelas. 8 00:00:13,660 --> 00:00:17,010 Saya sudah mengajar CS50 selama dua semester 9 00:00:17,010 --> 00:00:20,700 dengan Mike Smith, yang profesor sebelumnya ada. 10 00:00:20,700 --> 00:00:25,310 >> ALEX Allain: Jadi saya benar-benar tidak mengambil CS50, tapi aku TF dua kali. 11 00:00:25,310 --> 00:00:29,050 Sekali sebagai TF biasa, dan kemudian tahun senior saya 12 00:00:29,050 --> 00:00:32,520 Aku benar-benar kepala TF CS50, yang menyenangkan. 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero: Jadi ketika David mengulurkan 14 00:00:34,270 --> 00:00:38,647 kepada saya tentang pengaturan Dropbox di alat CS50, 15 00:00:38,647 --> 00:00:41,230 Aku benar-benar senang, karena kita benar-benar memiliki sebuah klien Linux, 16 00:00:41,230 --> 00:00:46,270 sehingga sebagian besar pengguna kami menggunakan baik Windows atau Macintosh klien, 17 00:00:46,270 --> 00:00:50,940 tetapi Linux, Macintosh, dan Windows klien semua sebenarnya sangat mirip. 18 00:00:50,940 --> 00:00:55,590 >> Jadi apa yang kita lakukan adalah kita pra-instal klien Dropbox Linux di CS50 19 00:00:55,590 --> 00:00:59,990 alat, dan itu berjalan seperti semua kami pengguna Linux lainnya. 20 00:00:59,990 --> 00:01:02,210 >> ALEX Allain: Jadi cara Dropbox bekerja itu 21 00:01:02,210 --> 00:01:08,590 berjalan sebagai klien pada banyak berbeda sistem operasi dan perangkat. 22 00:01:08,590 --> 00:01:11,387 The Dropbox client 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 file 25 00:01:15,460 --> 00:01:19,500 yang Anda masukkan ke dalam folder dan potongan file-file menjadi potongan empat megabyte. 26 00:01:19,500 --> 00:01:23,270 Jadi kita akan mengambil 100-megabyte File PDF dan kita akan 27 00:01:23,270 --> 00:01:26,070 potongan itu menjadi 25 potongan empat megabyte. 28 00:01:26,070 --> 00:01:30,670 Mereka potongan tersebut kemudian dienkripsi dan maka kami mengirim mereka ke server blok kami. 29 00:01:30,670 --> 00:01:35,980 >> ALEX Allain: Server blok yang penyimpanan untuk blok sendiri, 30 00:01:35,980 --> 00:01:39,570 sehingga setiap blok disimpan dalam blok server dengan data 31 00:01:39,570 --> 00:01:43,990 dan Shaw 356 hash dari blok tersebut. 32 00:01:43,990 --> 00:01:48,280 Itu enkripsi sangat dasar primitif yang merangkum, dalam arti tertentu, 33 00:01:48,280 --> 00:01:53,140 data dalam cara yang sangat unik yang unik untuk data tersebut. 34 00:01:53,140 --> 00:01:55,540 >> Anda bisa meng-upload seluruh file sekaligus, 35 00:01:55,540 --> 00:02:00,120 tapi ternyata jika Anda melakukan itu, file-file besar mengambil 36 00:02:00,120 --> 00:02:03,616 waktu yang sangat lama untuk meng-upload, dan jika Anda memiliki kegagalan, Anda kurang beruntung 37 00:02:03,616 --> 00:02:04,740 dan Anda harus me-restart itu. 38 00:02:04,740 --> 00:02:07,620 >> Lalu apa yang kita lakukan adalah kita katakan server lain dalam sistem kami, 39 00:02:07,620 --> 00:02:11,550 dan apa yang kita sebut metadata Server, yang hey ini adalah file, 40 00:02:11,550 --> 00:02:14,200 dan itu terdiri dari Berikut daftar blok. 41 00:02:14,200 --> 00:02:17,030 Dan kami melewatkan hash untuk mengidentifikasi blok-blok 42 00:02:17,030 --> 00:02:18,770 bukan re-upload seluruh blok. 43 00:02:18,770 --> 00:02:20,820 Metaserver kemudian memeriksa server blok, 44 00:02:20,820 --> 00:02:22,153 memastikan blok yang ada. 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: Ketika kita ingin pada dasarnya men-download 48 00:02:26,400 --> 00:02:30,050 file dari internet, mari kita katakanlah, kita akan mengatakan kepada metaserver terakhir 49 00:02:30,050 --> 00:02:33,090 pertama, hei dapat Anda ceritakan tentang di mana berkas ini berada? 50 00:02:33,090 --> 00:02:37,230 Dan metaserver akan mengatakan, oh berkas ini sebenarnya 25 potongan empat megabyte, 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 blok server dan benar-benar men-download masing-masing potongan. 53 00:02:41,712 --> 00:02:43,670 Dan kemudian kita akan merekonstruksi file dari sana, 54 00:02:43,670 --> 00:02:45,086 dan kemudian kita akan memulai download. 55 00:02:45,086 --> 00:02:47,580 Ya, jadi Dropbox dari penawaran dengan skala 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 ketika Anda mengambil semua pengguna dalam start up 58 00:02:56,400 --> 00:03:00,010 atau perusahaan Anda dan mungkin mereka digunakan untuk berada di satu database, 59 00:03:00,010 --> 00:03:02,620 dan yang bekerja bagus sampai Anda memukul sejumlah pengguna. 60 00:03:02,620 --> 00:03:04,578 Dan benar-benar apa yang Anda inginkan lakukan adalah menemukan beberapa cara 61 00:03:04,578 --> 00:03:07,410 untuk membagi mereka di dua database, atau mungkin lebih dari dua. 62 00:03:07,410 --> 00:03:10,830 Idealnya, cukup bahwa Anda dapat memiliki setiap pengguna di dunia. 63 00:03:10,830 --> 00:03:13,080 >> Dan ketika Anda pecahan, apa yang Anda lakukan adalah Anda 64 00:03:13,080 --> 00:03:16,830 menemukan beberapa cara untuk menentukan yang database untuk pergi 65 00:03:16,830 --> 00:03:20,240 untuk yang tidak memerlukan memukul direktori pusat. 66 00:03:20,240 --> 00:03:23,670 Atau mungkin itu adalah sangat cepat, murah direktori pusat look-up. 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero: Kami tidak pernah memiliki semuanya disimpan dalam satu database, 68 00:03:27,189 --> 00:03:28,980 karena itulah hampir tidak akan skala. 69 00:03:28,980 --> 00:03:33,970 Jadi sebagai gantinya, apa yang akan kita lakukan adalah mengambil semua informasi itu, semua file yang 70 00:03:33,970 --> 00:03:36,610 disimpan pada metadata, pecahan di ratusan 71 00:03:36,610 --> 00:03:38,710 atau ribuan database logis. 72 00:03:38,710 --> 00:03:42,900 Dan itu berarti bahwa ketika kita memiliki meminta informasi pengguna, 73 00:03:42,900 --> 00:03:46,890 pertama kita akan mengatakan, hey database yang adalah informasi pengguna ini disimpan dalam? 74 00:03:46,890 --> 00:03:49,852 Kemudian kita pada dasarnya akan menggunakan keputusan itu untuk pergi 75 00:03:49,852 --> 00:03:51,560 menemukan database yang dan di sanalah kita akan 76 00:03:51,560 --> 00:03:55,080 memuat semua file atau semua metadata tentang file. 77 00:03:55,080 --> 00:03:56,464 >> Jadi kita menggunakan banyak sharding. 78 00:03:56,464 --> 00:03:57,880 Tapi sharding tidak selalu cukup. 79 00:03:57,880 --> 00:04:00,380 Anda benar-benar perlu cache banyak permintaan umum, 80 00:04:00,380 --> 00:04:04,010 karena bahkan basis data tersebut query bisa mahal 81 00:04:04,010 --> 00:04:07,570 jadi kami juga melakukan menangkap agresif strategi untuk memastikan bahwa sebagian besar 82 00:04:07,570 --> 00:04:10,310 permintaan umum adalah cukup mudah untuk menghitung. 83 00:04:10,310 --> 00:04:14,630 Dan pada dasarnya yang membuat banyak lebih cepat dan membuatnya bekerja skala ex. 84 00:04:14,630 --> 00:04:17,320 Jadi itu di sangat tingkat tinggi bagaimana Dropbox bekerja. 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 Aku 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