一篇改变互联网发展进程的论文 | Dynamo

一篇改变互联网发展进程的论文 | Dynamo

在最近结束的操作系统顶级学术会议 SOSP2017 上,Amazon 十年前发表的 Dynamo 论文《Dynamo: Amazon's Highly Available Key-value Store》喜获 SIGOPS 名人堂奖(Hall of Fame Award, HoF)!

在操作系统领域顶级学术会议SOSP2017上,Amazon的Dynamo论文获得Hall of Fame Award


能够收获如此重量级的奖项,亚马逊 CTO Werner Vogels 也百感交集。

《Dynamo: Amazon's Highly Available Key-value Store》文章节选


作为论文的署名作者之一,Werner Vogels 专门撰写了一篇文章,详细回顾了 Dynamo 的前世今生。我们将其翻译出来,以飨诸位读者。

2017年10月2日是亚马逊 Dynamo 白皮书发表十周年的日子。作为一项里程碑性事件,这不禁使我认真回顾了过去十年间数据库领域的诸多创新,同时也提醒我认真思考为何从用户角度出发去解决难题能够达到远超预期且持久的效果。

事情最初可以追溯到2004年。亚马逊那时候还在使用着 Oracle 带有集群与备份的企业级数据库。我们拥有优秀的数据库管理员团队,而且可以与 Oracle 的顶尖专家沟通。我们一直在努力构建在当时占据领先地位的商业数据库,但却无法满足亚马逊业务持续增长带来的可用性、可扩展性以及性能需求。

彼时,基于 Oracle 运行的数据库已是不堪重负,于是我们开始评估是否可以开发一款定制的数据库来满足我们的长期商业需求。我们优先专注于那些能够支持亚马逊购物车等大规模、任务关键型服务的要求。同时,我们也大胆质疑传统关系型数据库提出的假设,如强一致性的要求。我们的目标是开发有着无限扩展性、一致性能以及高可用性的数据库,从而促进业务的快速发展。

我们对当时数据库的使用方式进行了深入研究,发现我们对数据库的关系型能力需求并不频繁。大约70%的操作都是键-值类操作——仅使用一个主键,返回一个单行数据。大约20%的操作会返回一组行数据,但是也仍然位于单个表上。


基于这些要求以及对当前现状的质疑,一个规模并不大的分布式系统领域专家团队合作设计了一款可以同时支持读写扩展的横向扩展型分布式数据库,来满足我们的长期业务需求。这就是亚马逊 Dynamo 数据库的起源。


基于 Dynamo 数据库前期取得的成功,我们撰写了亚马逊Dynamo白皮书,并在2007年 ACM 操作系统原理会议(SOSP)上发表,希望可以让业界同行从中获益。这篇白皮书得到了业界的广泛认可,并催生了当今众所周知的 NoSQL 分布式数据库技术。

《Dynamo: Amazon's Highly Available Key-value Store》文章节选


当然,没有哪项技术变革是在封闭的环境中发生的,与此同时,在 NoSQL 演进的过程中,云计算技术也在向前发展。随着亚马逊云科技的发展,我们逐渐意识到,Dynamo 数据库之于外部客户的意义可能与与我们相同。因此,我们开始着手基于原有的 Dynamo 设计架构打造一项全面托管型亚马逊云科技数据库服务。


要想构建全面托管型云数据库服务,我们需要达成高于亚马逊内部系统设计标准的要求。该全面托管型云数据库要求具备下述特性:


1. 可扩展性

该项服务必须能够为几十万甚至几百万亚马逊云科技客户提供支持,让每一位客户都可以基于该数据库支持自身的互联网级应用。


2. 安全性

该项服务必须能够储存外部亚马逊云科技客户的机密数据,由此需要更高级别的访问控制与安全措施。


3. 持久性与高可用性

该项服务必须具备极高的容错能力,才能获取客户信任,从而基于该数据库运行自身的关键任务。


4. 高性能

该项服务必须能够在广泛客户的不同任务负载下,始终保持高性能。


5. 可管理性

该项服务必须易于管理和操作。如果想要获得更多的用户,这一点或许最为关键


基于上述目标,我们于2012年1月正式发布了 Amazon DynamoDB。这项基于云端的 NoSQL 数据库服务可在满足安全性、可用性、高性能以及可管理性的同时,支持运行超大规模的关键性作业任务。


今天,DynamoDB 正在驱动那些让传统数据库难以承载的新一代高性能、互联网规模应用。Lyft、Tinder 和 Redfin 等互联网巨头以及 Comcast、Under Armor、宝马、 Nordstrom 和丰田等大型企业都在依靠 DynamoDB 的可扩展性和高性能来为自身的关键作业任务保驾护航。


Lyft 使用 DynamoDB 储存所有车辆的位置信息;Tinder 使用它来存储百万用户信息以及完成数十亿次的搜索匹配;Redfin 使用它来存储百万用户信息,并管理数以亿计的房产数据;Comcast 使用它来驱动运行于2000多万台设备上的 XIFINITY X1 视频服务;宝马使用它来打造了“车传感(CARASSO)”服务,可在24小时内实现两个数量级的服务规模变化;Nordstrom 在推荐系统中使用 DynamoDB,使得处理时间从20分钟降至短短几秒;Under Armour 使用它支持拥有2亿用户的互联健身社区;丰田赛车部门基于 DynamoDB 制定有关进站、轮胎更换、比赛策略的实时决策;此外还有超过10万的亚马逊云科技客户在各种这样的大规模、高性能应用中使用 DynamoDB。


基于大量的客户实践,DynamoDB 已经实现了它的设计初衷:


1. 可扩展性

在 DynamoDB 的支持下,客户可以基于单一表在每秒钟响应数百万条请求,存储数百 TB 数据或容纳超过1万亿条数据。在2017年亚马逊 Prime Day 全球购物狂欢日当天,DynamoDB 每秒钟响应的请求数量超过1290万。目前,所有亚马逊云科技区域(目前有16个地理区域,计划在巴林、中国大陆、法国、香港、瑞典等地新拓展6个区域)均支持 DynamoDB 服务,因而可以满足相应地域内客户对可扩展数据库服务的需求。


2. 安全性

DynamoDB 与 Amazon IAM 服务集成,对组织内的用户实现表、项和属性层级的精细访问控制。您可以通过 VPC 端点来控制自身应用与 DynamoDB 之间的网络流量是在公共网络流动还是在自身虚拟私有云的范围内流动。在与 Amazon CloudWatch、Amazon CloudTrial 和 Amazon Config 集成后,DynamoDB 还可实现监控、核查和配置管理功能。此外,我们还提供 SOC、PCI、ISO、FedRAMP、HIPAA BAA 和 DOD Impact Level 4 认证有助于客户满足广泛的合规标准。


3. 耐久性与高可用性

DynamoDB 可确保数据的持久性,并可在服务器、服务器机架或可用区发生故障时实现99.99%的可用性。DynamoDB 可以自动将数据重新分配至健康的服务器,无需客户介入即可确保数据保有多个可用副本。


4. 高性能

即使数据量增多,DynamoDB 也可提供一致且延迟低于10毫秒的性能。DynamoDB Accelerator(DAX)是一种完全托管且高度可用的内存缓存,即使每秒钟的请求数量达到数百万,也可以将 DynamoDB 的响应时间从毫秒级缩短到微秒级。


5. 可管理性

DynamoDB 消除了手动实现容量规划、配置、服务器监控、软件升级、应用安全补丁、扩建基础设施、监控、性能调节、在分布式数据中心进行复制以确保高可用性以及在新节点进行复制以确保数据持久性等需求。上述所有内容均可自动进行,无需停机等待,让您可以更加专注地服务客户、完善应用和推动业务增长。


6. 适应能力


DynamoDB 可智能化适应表的独特存储需求,通过对多个服务器进行水平分区来扩展表容量,并借助存活时间(TTL)功能删除标记到期项来缩减表容量。DynamoDB 支持 Auto Scaling 功能,让表容量能够自动根据表和索引的实际流量大小而扩展或缩减。创建表或索引时,Auto Scaling 在默认情况下处于启用状态。


十年前,我们从未想过我们在 Dynamo 数据库领域付出的努力能够产生如此持久的影响力。我们从用户角度出发解决自身需求的的一次实践,最终演化为一种催化剂,推动了行业大规模变迁至非关系型数据库,并最终促成新一代互联网规模应用的诞生。


在亚马逊云科技,我们相信 DynamoDB 所取得的成就只是第一步。我们认为当前正处于数据库转型时期,诸如 DynamoDB 等专用型数据库的普及也才刚刚开始。我们预计在未来十年间,数据库领域的创新数量能够超越过去十年。目前,我们的团队正在研发有关 DynamoDB 服务的更多激动人心的内容,我已经迫不及待地想要在未来几个月内与大家分享。


Amazon 上的人工智能

Amazon DynamoDB 云数据库

免费注册亚马逊云科技账号

编辑于 2021-02-23 12:15