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。