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