THOMAS Carriero提出:我是托馬斯Carriero提出。 我是一個軟件工程師的Dropbox。 ALEX ALLAIN:我是亞歷克斯阿蘭。 我在這裡在Dropbox的一名工程師。 THOMAS Carriero提出:是的,我是 實際上第一頭TF為CS50 當大衛馬林接手類。 我已經教 CS50為兩個學期 與麥克·史密斯,誰是 事先教授那裡。 ALEX ALLAIN:所以我居然沒 採取CS50,但我確實TF兩次。 一旦作為一個普通的TF, 然後我大四 實際上,我是負責人的TF CS50,這是一個很大的樂趣。 THOMAS Carriero提出:那麼 當大衛伸出 我如何設置 Dropbox的在CS50家電, 我真的很興奮,因為 我們實際上有一個Linux客戶端, 所以我們大部分的用戶使用任 Windows或Macintosh客戶端, 但Linux,Macintosh和視窗 客戶都其實很相似。 所以我們預裝的就是我們所做的是 Dropbox的Linux客戶端在CS50 家電,它運行就像 我們的所有其他Linux用戶。 ALEX ALLAIN:所以 Dropbox的方式的工作原理是它 作為運行在許多不同的客戶端 操作系統和設備。 Dropbox的桌面客戶端 最熟知的, 而其中最有趣的一個。 THOMAS Carriero提出:那麼Dropbox的 基本上需要的所有文件 你把文件夾中,它豆腐塊 這些文件分為四個兆字節的塊。 因此,我們將採取一個100兆字節 PDF文件,我們會 塊成25四兆字節的塊。 這些塊被加密,然後與 那麼,我們送他們到我們的塊服務器。 ALEX ALLAIN:該塊服務器 的存儲塊本身 所以每個塊被存儲在 與該數據塊服務器 和肖356散列塊。 這是一個非常基本的加密原語 ,總結,在某種意義上, 在一個非常獨特的方式將數據 這是唯一的數據。 你可以上傳 整個文件全部一次, 但事實證明,如果你這樣做 如此,真正的大文件佔用 很長一段時間上傳,如果 你有一個失敗,你的運氣了 你必須重新啟動它。 接下來,我們要做的就是告訴我們 在我們的系統中另一台服務器, 而我們所說的元數據 服務器,即嘿,這是一個文件, 和它的組成的 下面的塊列表。 而我們通過了哈希 確定這些塊 而不是重新上傳 整個塊。 該metaserver然後 檢查塊服務器, 確保塊的存在。 如果是這樣,完美。 一切都很好。 THOMAS Carriero提出:當我們 想基本上下載 從互聯網上的文件,讓我們 比如,我們會說的最後metaserver 首先,哎,你能告訴我 在哪裡這個文件的位置? 和metaserver會說,哦這個文件的 其實25四兆字節的塊, 在這裡,他們是。 然後我們會去一個塊服務器和 其實每個下載這些塊。 然後我們將重建 該文件從那裡, 然後我們將開始下載。 是的,這樣的交易的Dropbox 與規模基本 通過非常,非常積極的分片。 ALEX ALLAIN:分片是當你 把所有的用戶在你的啟動 或您的公司,也許他們 曾經是在一個數據庫中, 那偉大工程,直到你 創下了一定數量的用戶。 而真的是你想要的東西 要做的就是找​​到一些方法 拆分那些跨越兩個 數據庫,或者是兩個以上。 理想情況下,不夠,你可以 在世界的每一個用戶。 所以當你分片, 你要做的就是你 決定找一些方法 該數據庫去 到不需要 創下了中央目錄。 或者,也許這是一個非常快的, 便宜查找中央目錄。 THOMAS Carriero提出:我們從來沒有 一切都存儲在一個數據庫中, 因為這幾乎 永遠不會擴展。 因此,不是,我們會做的是採取一切 這些信息,所有的文件 存儲在元數據中, 分片在數百 或數千邏輯數據庫。 這意味著,當我們有一個 請求一個用戶的信息, 我們先說,哎哪個數據庫 存儲在該用戶的信息? 然後,我們將基本 使用該決定去 發現數據庫 而這也正是我們將 加載的所有文件或所有 有關這些文件的元數據。 因此,我們使用了很多分片的。 但分片是不夠的。 你實際上需要緩存 很多常見的請求, 因為即使是那些數據庫 查詢可以是昂貴的 所以我們也在做積極的捕捉 策略,以確保最 常見的要求是 很容易計算。 基本上這使得很多 速度更快,這使得它的工作前的規模。 所以這是一個非常 高層次的Dropbox是如何工作的。 ALEX ALLAIN:我是亞歷克斯阿蘭。 THOMAS Carriero提出:與 我是托馬斯Carriero提出。 ALEX ALLAIN:這是CS50。