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。