专栏首页CSDN技术头条Dropbox存储架构:扩展至EB级别的实践

Dropbox存储架构:扩展至EB级别的实践

多年前,我们将 Dropbox 称为“魔力口袋”,因为它设计的初衷就是让用户将所有文件放在一个顺手的地方。一路发展下来,Dropbox 已经从一个简单的东西发展成为世界上最为强大、随处可用的协作平台。随着规模逐渐扩大,我们需要建立专有的存储架构,这个项目被命名为“魔力口袋”(Magic Pocket)。两年半之后,如今我们很高兴地宣布:我们的自定义架构将提供90%的用户数据存储及服务。

Dropbox 是由工程师建立的,技术创新是公司文化的立足之本。对于我们的用户而言,这仅仅意味着我们创造了一个可用的产品,但在打造如此简单的用户体验背后,还有许多事情发生。

Dropbox 公司建立于2008年,在迅速成长中收获了逾5亿的注册用户以及 500PB 用户数据(即5后面有17个0),这个数字几乎达到了美国国会图书馆(全球最重要的图书馆之一)所有书籍内容的 1.4 万倍。为了让读者对 Dropbox 不可思议的成长有个概念,我这样来说吧:2012年在笔者加入 Dropbox 时,用户数据仅有 40PB ,而这个数字在四年后翻了12倍多。

Dropbox 存储两类数据:文件内容与文件/用户的元数据。我们使用了混合云架构,将元数据与我们的 web 服务放在自行管理的数据中心,而将文件内容存储在 Amazon 之上 —— 我们是 Amazon S3 的早期用户之一,也正是它使得我们能快速可靠地进行扩展。Amazon Web Services(AWS) 一直是我们宝贵的合作伙伴,没有 AWS 这样的服务,我们也没办法发展得如此之快。

随着我们的用户及客户在需求上持续增长,我们决定在内部存储系统上进行大规模投入。作出这个决定有如下几个原因:首先,我们产品的差异关键之一在于性能,使用内部存储则允许我们将整个堆栈定制为端到端的结构,从而提高在特定用例上的性能。其次,作为全世界领先的云服务提供商之一,我们的块状存储用例是独一无二的,修改后我们可以利用自身规模及特殊用例来自定义硬件与软件,从而在单位经济效益上有所提高。

我们明了:自己想要打造全世界仅有数个的 EB 级存储系统,因此从一开始就很明显,由于在开源社区中并没有能用于 Dropbox 这样规模的内容,我们必须从零开始。全世界没有几家公司有我们这样的困扰 —— 对这样的存储规模有如此的需求,而在安全性标准上高于我们的就更少了。我们从设计之初就考虑到了可靠性与安全性的问题,确保系统所存储的数据安全可靠,且高度可用。数据以静态形式加密,系统旨在提供超过99.9999999999%的年度数据耐久性,以及超过99.99%的数据可用性。

具体如何达成呢?

代码部署:Magic Pocket 项目在2013年夏季便成为主要项目之一。我们预先构建了一个小的原型以验证概念,对我们的工作负载和文件分布有个了解。软件是这个项目的重头戏,我们一边在生产环境中就构建的方式做了多次迭代,一边在各个阶段中严格执行验证。创新集中在设计与自动化方面:我们需要创建可以从零开始,扩展成为世界上最大的存储系统之一的干净设计,以及允许我们的小团队维护数量巨大的硬件的自动化方案,还需要测试并审计在针对数据最高级别的耐久性及可用性时系统的可靠性程度。

灰度发布: 在2014年8月,我们着手开始“灰度发布”(即产品发布的一种手段,往往用于需要一次性发布的产品),在对数据做了两个区域定位的镜像备份之后,我们认为系统已经准备好可以存储用户数据了。当然,我们将额外的备份又多存储了半年以防万一。

发布日期: “登陆日” 2015年2月27日。在 Dropbox 的历史上,我们首次使用专有的用户文件存储及服务,一旦新架构得到验证,我们就能在半年内设定积极的目标:将系统扩展到 500PB 以上。

低空跳伞: 2015年4月30日,我们开始了这场竞赛:在三个区域定位安装额外的服务器,以跟上数据流的处理速度。为了使其奏效,我们从服务器建立了一个高性能的网络,高峰值传输的数据量超过每秒0.5TB。由于在计划中留给我们“打开降落伞”的时间非常少,因此这个项目被叫做“低空跳伞”。同时在硬件方面,我们让同一平台内可负载的硬件机架数量达到了极限。

成功着陆: 我们的目标是截至2015年10月30日,使用内部架构提供90%的数据服务,结果这个目标的达成时间比预期提前了将近一个月(即2015年10月7日)。团队不仅按时交付了任务,而且还是在并未造成任何重大服务中断与数据丢失的情况下,完成了这一重要的技术任务。

这是一个振奋人心的里程碑,更是其他创新的开始。我们会继续投入自己的架构建设,也会继续使用 Amazon 的服务。今年晚些时候,我们会拓展与 AWS 的关系,以便在德国存储欧洲企业级用户的数据。为信任我们的用户保护及保存他们的数据,是我们贯彻始终的首要任务。

本文分享自微信公众号 - CSDN技术头条(CSDN_Tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【BDTC2016】科大讯飞大数据研究院副院长谭昶:讯飞大数据的实践与思考

    2016中国大数据技术大会首日全体会议中,上午最后一位演讲嘉宾来自科大讯飞大数据研究院副院长谭昶,他带来了《讯飞大数据的实践与思考》的主题分享。他从语言谈起,分...

    CSDN技术头条
  • 如何做好大数据产品设计架构和技术策略?

    作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据产品的体系思路,让大家系统性学习和了解有关大数据的设计架构...

    CSDN技术头条
  • 携程实时用户数据采集与分析系统

    一、携程实时用户数据采集系统设计实践 随着移动互联网的兴起,特别是近年来,智能手机、pad等移动设备凭借便捷、高效的特点风靡全球,同时各类APP的快速发展进一步...

    CSDN技术头条
  • 用户体验案例:从头到尾的设计经验

    作为设计师,我们常常抱怨产品不尽人意。我之前也常常会这样想,直到前一段时间有幸参与到某个金融项目中,才对彼此的工作有所的了解。当中的很多理念都是未来设计师所必须...

    宇相
  • 创建数据集模块常见设置

    创建数据集的主要功能是从数据库查询出所需的数据,从而进行数据分析。在创建数据集处,可以对数据进行一些简单的处理,如数据级别的权限设置,字段信息修改,字段管理等。

    腾讯云商业智能分析团队
  • RAIL简介:一个以用户为中心的性能模型

    一说到性能优化,大家可能立马就会想到和加载相关的时间了,比如首字节时间、白屏时间、首屏时间、用户可交互时间、DOMContentLoaded时间、onLoad时...

    IMWeb前端团队
  • 识别App数据造假渠道的分析方法

    俗话说,有钱能使鬼推磨。为了保障下载量、使用量,企业通常会在 App 推广中投巨资给第三方渠道,用于引流买量。但在这一过程中,内鬼、羊毛党、刷量中介总会趁虚而入...

    走在河边的小鹿
  • RAIL简介:一个以用户为中心的性能模型

    本文作者:IMWeb huscot 原文出处:IMWeb社区 未经同意,禁止转载 web性能优化,这是大家耳熟能详的东西了。 一说到性能优化,大家可能...

    IMWeb前端团队
  • ES中nest join

    nested 类型是一个特殊object数据类型,允许数组的object的字段可以被独立的查询出来。

    付威
  • 在GAE中使用struts2框架

    在确定了IDE和Server之后,就要选择一个web框架了。我选择的是struts2,因为它的使用率很高,网上也很多资源,遇到问题好查。

    明年我18

扫码关注云+社区

领取腾讯云代金券