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。