1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS Carriero提出:我是托馬斯Carriero提出。 3 00:00:01,950 --> 00:00:03,640 我是一個軟件工程師的Dropbox。 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN:我是亞歷克斯阿蘭。 5 00:00:05,250 --> 00:00:08,200 我在這裡在Dropbox的一名工程師。 6 00:00:08,200 --> 00:00:11,320 >> THOMAS Carriero提出:是的,我是 實際上第一頭TF為CS50 7 00:00:11,320 --> 00:00:13,660 當大衛馬林接手類。 8 00:00:13,660 --> 00:00:17,010 我已經教 CS50為兩個學期 9 00:00:17,010 --> 00:00:20,700 與麥克·史密斯,誰是 事先教授那裡。 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN:所以我居然沒 採取CS50,但我確實TF兩次。 11 00:00:25,310 --> 00:00:29,050 一旦作為一個普通的TF, 然後我大四 12 00:00:29,050 --> 00:00:32,520 實際上,我是負責人的TF CS50,這是一個很大的樂趣。 13 00:00:32,520 --> 00:00:34,270 THOMAS Carriero提出:那麼 當大衛伸出 14 00:00:34,270 --> 00:00:38,647 我如何設置 Dropbox的在CS50家電, 15 00:00:38,647 --> 00:00:41,230 我真的很興奮,因為 我們實際上有一個Linux客戶端, 16 00:00:41,230 --> 00:00:46,270 所以我們大部分的用戶使用任 Windows或Macintosh客戶端, 17 00:00:46,270 --> 00:00:50,940 但Linux,Macintosh和視窗 客戶都其實很相似。 18 00:00:50,940 --> 00:00:55,590 >> 所以我們預裝的就是我們所做的是 Dropbox的Linux客戶端在CS50 19 00:00:55,590 --> 00:00:59,990 家電,它運行就像 我們的所有其他Linux用戶。 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN:所以 Dropbox的方式的工作原理是它 21 00:01:02,210 --> 00:01:08,590 作為運行在許多不同的客戶端 操作系統和設備。 22 00:01:08,590 --> 00:01:11,387 Dropbox的桌面客戶端 最熟知的, 23 00:01:11,387 --> 00:01:12,720 而其中最有趣的一個。 24 00:01:12,720 --> 00:01:15,460 >> THOMAS Carriero提出:那麼Dropbox的 基本上需要的所有文件 25 00:01:15,460 --> 00:01:19,500 你把文件夾中,它豆腐塊 這些文件分為四個兆字節的塊。 26 00:01:19,500 --> 00:01:23,270 因此,我們將採取一個100兆字節 PDF文件,我們會 27 00:01:23,270 --> 00:01:26,070 塊成25四兆字節的塊。 28 00:01:26,070 --> 00:01:30,670 這些塊被加密,然後與 那麼,我們送他們到我們的塊服務器。 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN:該塊服務器 的存儲塊本身 30 00:01:35,980 --> 00:01:39,570 所以每個塊被存儲在 與該數據塊服務器 31 00:01:39,570 --> 00:01:43,990 和肖356散列塊。 32 00:01:43,990 --> 00:01:48,280 這是一個非常基本的加密原語 ,總結,在某種意義上, 33 00:01:48,280 --> 00:01:53,140 在一個非常獨特的方式將數據 這是唯一的數據。 34 00:01:53,140 --> 00:01:55,540 >> 你可以上傳 整個文件全部一次, 35 00:01:55,540 --> 00:02:00,120 但事實證明,如果你這樣做 如此,真正的大文件佔用 36 00:02:00,120 --> 00:02:03,616 很長一段時間上傳,如果 你有一個失敗,你的運氣了 37 00:02:03,616 --> 00:02:04,740 你必須重新啟動它。 38 00:02:04,740 --> 00:02:07,620 >> 接下來,我們要做的就是告訴我們 在我們的系統中另一台服務器, 39 00:02:07,620 --> 00:02:11,550 而我們所說的元數據 服務器,即嘿,這是一個文件, 40 00:02:11,550 --> 00:02:14,200 和它的組成的 下面的塊列表。 41 00:02:14,200 --> 00:02:17,030 而我們通過了哈希 確定這些塊 42 00:02:17,030 --> 00:02:18,770 而不是重新上傳 整個塊。 43 00:02:18,770 --> 00:02:20,820 該metaserver然後 檢查塊服務器, 44 00:02:20,820 --> 00:02:22,153 確保塊的存在。 45 00:02:22,153 --> 00:02:23,140 如果是這樣,完美。 46 00:02:23,140 --> 00:02:24,040 一切都很好。 47 00:02:24,040 --> 00:02:26,400 >> THOMAS Carriero提出:當我們 想基本上下載 48 00:02:26,400 --> 00:02:30,050 從互聯網上的文件,讓我們 比如,我們會說的最後metaserver 49 00:02:30,050 --> 00:02:33,090 首先,哎,你能告訴我 在哪裡這個文件的位置? 50 00:02:33,090 --> 00:02:37,230 和metaserver會說,哦這個文件的 其實25四兆字節的塊, 51 00:02:37,230 --> 00:02:38,210 在這裡,他們是。 52 00:02:38,210 --> 00:02:41,712 然後我們會去一個塊服務器和 其實每個下載這些塊。 53 00:02:41,712 --> 00:02:43,670 然後我們將重建 該文件從那裡, 54 00:02:43,670 --> 00:02:45,086 然後我們將開始下載。 55 00:02:45,086 --> 00:02:47,580 是的,這樣的交易的Dropbox 與規模基本 56 00:02:47,580 --> 00:02:50,460 通過非常,非常積極的分片。 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN:分片是當你 把所有的用戶在你的啟動 58 00:02:56,400 --> 00:03:00,010 或您的公司,也許他們 曾經是在一個數據庫中, 59 00:03:00,010 --> 00:03:02,620 那偉大工程,直到你 創下了一定數量的用戶。 60 00:03:02,620 --> 00:03:04,578 而真的是你想要的東西 要做的就是找​​到一些方法 61 00:03:04,578 --> 00:03:07,410 拆分那些跨越兩個 數據庫,或者是兩個以上。 62 00:03:07,410 --> 00:03:10,830 理想情況下,不夠,你可以 在世界的每一個用戶。 63 00:03:10,830 --> 00:03:13,080 >> 所以當你分片, 你要做的就是你 64 00:03:13,080 --> 00:03:16,830 決定找一些方法 該數據庫去 65 00:03:16,830 --> 00:03:20,240 到不需要 創下了中央目錄。 66 00:03:20,240 --> 00:03:23,670 或者,也許這是一個非常快的, 便宜查找中央目錄。 67 00:03:23,670 --> 00:03:27,189 >> THOMAS Carriero提出:我們從來沒有 一切都存儲在一個數據庫中, 68 00:03:27,189 --> 00:03:28,980 因為這幾乎 永遠不會擴展。 69 00:03:28,980 --> 00:03:33,970 因此,不是,我們會做的是採取一切 這些信息,所有的文件 70 00:03:33,970 --> 00:03:36,610 存儲在元數據中, 分片在數百 71 00:03:36,610 --> 00:03:38,710 或數千邏輯數據庫。 72 00:03:38,710 --> 00:03:42,900 這意味著,當我們有一個 請求一個用戶的信息, 73 00:03:42,900 --> 00:03:46,890 我們先說,哎哪個數據庫 存儲在該用戶的信息? 74 00:03:46,890 --> 00:03:49,852 然後,我們將基本 使用該決定去 75 00:03:49,852 --> 00:03:51,560 發現數據庫 而這也正是我們將 76 00:03:51,560 --> 00:03:55,080 加載的所有文件或所有 有關這些文件的元數據。 77 00:03:55,080 --> 00:03:56,464 >> 因此,我們使用了很多分片的。 78 00:03:56,464 --> 00:03:57,880 但分片是不夠的。 79 00:03:57,880 --> 00:04:00,380 你實際上需要緩存 很多常見的請求, 80 00:04:00,380 --> 00:04:04,010 因為即使是那些數據庫 查詢可以是昂貴的 81 00:04:04,010 --> 00:04:07,570 所以我們也在做積極的捕捉 策略,以確保最 82 00:04:07,570 --> 00:04:10,310 常見的要求是 很容易計算。 83 00:04:10,310 --> 00:04:14,630 基本上這使得很多 速度更快,這使得它的工作前的規模。 84 00:04:14,630 --> 00:04:17,320 所以這是一個非常 高層次的Dropbox是如何工作的。 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN:我是亞歷克斯阿蘭。 86 00:04:19,149 --> 00:04:20,857 >> THOMAS Carriero提出:與 我是托馬斯Carriero提出。 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN:這是CS50。 88 00:04:22,579 --> 00:04:23,936