1 年
1 年内在 AWS 上推出了元数据存储系统。
5.5
每用户 GB 的成本降低了 5.5 倍。
节省了数百万美元
节省了数百万美元的扩展成本。
300TB
在不到 2 周的时间内迁移了 300TB 的数据。
4000-6000 次查询
以每秒 4000-6000 次查询的速度摄取数据。
概述
2018 年夏,由于某些分区的数据快速增长,Dropbox 的本地元数据存储出现了容量不足的问题。Dropbox 的数据库团队有三个选择:将本地存储容量增加一倍(这将花费数百万美元)、删除大量元数据,或者寻找一种新的、高度可扩展且经济高效的解决方案。第三个选择是最好的,但要实现它却是一个挑战。Dropbox 需要在不到 2 年的时间里,使其本地系统达到最大容量,而该项目的实施团队仅有两名员工。
这些情况促使 Dropbox 寻求 Amazon Web Services(AWS)的托管解决方案。Dropbox 使用 Amazon DynamoDB(一种完全托管的灵活 NoSQL 数据库,可在任何规模上提供个位数毫秒级性能)和 Amazon Simple Storage Service(Amazon S3,一种云对象存储服务)快速开发了一个名为 Alki 的新托管存储系统。这为几乎无限的用户元数据腾出了空间,而且由于不必增加本地存储,不仅为公司节省了数百万美元,还将每 GB 的成本降低了 5.5 倍。
将审计日志数据从传统数据库迁移到云
Dropbox 由麻省理工学院的两名学生于 2007 年创立,是一种全球协作工具和文件共享服务。该公司已成为世界上最成功的初创公司之一,超过 6 亿用户上传了 4000 多亿条内容。
Dropbox 的元数据存储最初仅存放在公司的主要数据存储 Edgestore 中,在基于分片 MySQL 集群的本地分布式数据库中托管。到 2018 年年中,快速增长的冷元数据距离压倒 Edgestore 还有不到 2 年的时间,冷元数据是那些不常访问但需要持久存储并立即可用的数据。然而,增加本地数据库的容量需要拆分现有分区并购买新的机器来托管它们,这将使 Edgestore 的成本翻一番,每年增加数百万美元。此外,将冷元数据与热元数据(或常用元数据)存储在同一个数据库中已不再有意义。Dropbox 的 Alki 团队技术主管 Jonathan Lee 表示:“如果你写入的数据不经常读取,那么在已针对检索速度进行优化的介质中使用这些数据会非常昂贵,更不用说存储毫无意义了。”
结果,两名员工从数据库团队脱离出来,构建了 Alki,这是一种可以经济高效地存储元数据的解决方案。他们特别关注审计日志数据 Edgestore 的主要冷元数据这一应用场景。由于小型的 Alki 团队面临着紧迫的最后期限,如果延误,可能会导致用户元数据丢失,因此他们决定实施来自 AWS 的托管服务。借助 Amazon DynamoDB 和 Amazon S3,Dropbox 在短短一年内就迅速制作了原型,并在 AWS 上部署了冷元数据存储。AWS 解决方案架构师就像是 Dropbox Alki 团队的延伸,提供规范性指导和实施帮助。
Lee 说道:“在构建存储系统时,必须考虑复制、备份和容量管理等组件。Amazon DynamoDB 和 Amazon S3 非常符合这一需求,这些服务是行业标准。这些是大型团队需要几年时间才能解决的问题。但借助 Amazon DynamoDB 和 Amazon S3,我们简化了这些问题,因为 AWS 可以处理许多复杂的任务,比如数据复制、数据持久性管理和硬件预置。Amazon DynamoDB 和 Amazon S3 会随着我们的容量需求自动增长。我们不再需要为本地容量做计划,为硬件采购做预算,然后被我们的决定困扰 4 年之久。”
在构建存储系统时,必须考虑复制、备份和容量管理等组件。借助 Amazon DynamoDB 和 Amazon S3,我们简化了这些问题,因为 AWS 可以处理许多复杂的任务。”
Jonathan Lee
Dropbox Alki 项目的 Team Tech Lead
使用 AWS 解决方案构建冷热元数据存储
Alki 团队在 AWS 解决方案架构师的帮助下,构建了一个基于日志结构合并树(LSM 树)的元数据存储系统,该系统有两层数据存储:上层用于热元数据,下层用于冷元数据。Amazon DynamoDB 充当热存储层,以每秒 4,000-6,000 次写入的速度将审计日志数据摄取到 6 个 DynamoDB 表中。然后,这些表中的每一个表每天存储 50-80GB。每天结束时,团队会将这些表中的元数据卸载到 Amazon S3 进行永久存储,然后删除 Amazon DynamoDB 中的表。
到 2019 年初,在 Alki 团队选择 Amazon DynamoDB 和 Amazon S3 不到 6 个月后,Alki 就处于生产测试阶段,摄取所有数据并提供一部分读取。到 2019 年 10 月,大约 300TB 的审计日志数据(占 Edgestore 中存储的所有数据的四分之一)已迁移到 Alki,现已全面投入生产。
Amazon DynamoDB 和 Amazon S3 的可扩展性帮助 Dropbox 团队在不到 2 周的时间内完成了数据迁移。Lee 解释说:“通常,你可能会设计一个系统,其规模是你在稳态下预期的 10 倍。但我们可以在 AWS 上扩展 100-1,000 倍,而无需提前设计系统。” Alki 团队预计稳定状态为每秒 4,000 次查询,但在迁移期间,它能够为 Amazon DynamoDB 预置每秒 600,000 次查询。
Lee 表示,AWS 解决方案架构师在整个迁移过程中为 Alki 团队提供了高级支持。“关于我们与开发 Alki 的 AWS 团队的互动,我们没有什么可说的,只有正面的评价。他们总是非常积极主动地帮助我们发现问题,指出我们可以如何加快工作速度,或者确定我们可能需要在操作上更加谨慎的领域,”Lee 说。Alki 团队和 AWS 解决方案架构师能够通过实时渠道保持持续的沟通。Alki 团队将继续通过 AWS 的托管服务从这种协作中获益。Alki 团队的软件工程师 Stas Ilinskiy 表示:“持久运行一个系统需要专业的知识,而我们没有这种专业知识。但借助 Amazon DynamoDB,我们还获得了具备运行它的专业知识的人员。”
借助 Amazon DynamoDB 和 Amazon S3,Alki 为 Dropbox 节省了数百万美元的扩展成本,并显著降低了每用户 GB 成本。Dropbox 的 Edgestore 每年每用户 GB 成本是 Alki 的 5.5 倍。
持续打造卓越的用户存储体验
Alki 团队正在探索如何使用 Amazon EMR 更有效地将数据从 Amazon DynamoDB 卸载到 Amazon S3,该过程目前由 Dropbox 自己的批处理系统处理。此外,为了进一步实现 Alki 的成本节省,Dropbox 于 2020 年 10 月将另一个拥有 300TB 冷元数据的数据库从 Edgestore 迁移到了 Alki。这为 Dropbox 将来如何使用 Alki 来优化和进一步降低成本奠定了基础:该公司可能将其用作通用的冷元数据存储。“我们能否将 Alki 与 Edgestore 集成,并在两者之间透明地移动数据,而不是转移特定的用例?”Lee 问道。“这是下一个愿景。”
借助 Amazon DynamoDB 和 Amazon S3,Alki 团队能够快速启动持久、可扩展的元数据存储,从而为 Dropbox 节省了大量成本。AWS 提供的托管服务使维护这种存储成为一种可持续的长期选择。该解决方案还使 Dropbox 能够启动几个在 Edgestore 上无法启动的项目。Lee 表示:“整个 Alki 项目受到所有高层管理人员的密切关注,我们对 Alki 的表现非常满意,因此对 Amazon DynamoDB 和 Amazon S3 的性能也非常满意。”
关于 Dropbox
Dropbox 总部位于旧金山,致力于让生活井井有条并让工作顺畅进行。Dropbox 在 180 个国家/地区拥有 6 亿多的注册用户,其使命是设计一种更加开明的工作方式。
使用的 AWS 服务
更多软件和互联网行业客户案例
行动起来
无论行业无论规模,每天都有各种机构在使用 AWS 实现自身业务转型、实现企业愿景。欢迎您联系我们的专家,立即踏上您的 AWS 之旅。