深入了解Amazon DynamoDB的架构选择

深入了解Amazon DynamoDB的架构选择

关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, DynamoDB, Architectural Choices, Data Partitioning, High Availability, Consistent Performance, Scalability]

导读

为了克服关系型数据库的性能和规模限制,亚马逊云科技构建了Amazon DynamoDB,以在任何规模下为全球最苛刻的应用程序提供稳定的个位数毫秒级性能。在本次讨论中,您将了解Amazon DynamoDB的架构选择。深入理解何时使用DynamoDB,以及为什么超过一百万亚马逊云科技客户使用DynamoDB来支持数百个每秒处理超过50万请求的应用程序。最后,您将获得一个全新的视角,了解如何设计自己的应用程序。

演讲精华

以下是小编为您整理的本次演讲的精华。

在这个由数据和数字体验驱动的世界中,对可扩展、高可用性和持续高性能的系统需求变得至关重要。亚马逊云科技很早就意识到了这一需求,并着手革新应用程序的构建和部署方式。在这一努力的核心,就是Amazon DynamoDB,一种非关系型数据库服务,已成为全球无数高吞吐量应用程序的基石,服务超过100万客户,这是一个令人敬畏的成就,尤其考虑到它的起源。

DynamoDB的起源可以追溯到近20年前亚马逊历史上的一个关键时刻,当时公司的网站在假日购物季遭遇了灾难性中断。这一事件促使亚马逊进行了彻底调查,发现惊人的70%的数据库访问模式涉及访问单个键和单个表,而20%涉及访问单个表中的多个键。更令人惊讶的是,90%的工作负载与传统数据库提供的关系功能无关。这一认识促使了Dynamo论文和系统的开发,标志着亚马逊首次进军NoSQL数据库领域。

随着外部客户也面临类似的挑战,在MySQL之上采用分片架构来容纳不断增长的工作负载,亚马逊看到了满足更广泛市场需求的机会。2012年,DynamoDB诞生了,这是多年来从Dynamo系统中汲取经验和教训的结晶。在过去13年里,DynamoDB团队不断完善和优化该服务,获得了关于大规模扩展、高可用性和一致性能的宝贵见解。

DynamoDB的核心是一个分布式哈希表,针对主键查找、分区键内范围扫描和全表扫描进行了优化。这种架构直接符合亚马逊早期发现的访问模式,其中70%的请求涉及主键查找,20%涉及单个表内的范围扫描。DynamoDB的设计目标是优化可扩展性、一致性能和高可用性,而不是对传统关系数据库的简单增量改进。

为实现近乎无限的可扩展性,DynamoDB采用了一种分区策略,将数据分布在多个存储节点上。每个分区都是一个计算单元,拥有自己的读写和存储容量分配。随着工作负载增加,DynamoDB会动态拆分分区,有效地扩展系统以满足不断增长的需求。这种分区方法不是一个附加功能,而是从一开始就编织进DynamoDB的核心设计原则。令人惊讶的是,DynamoDB有数百个表每小时处理超过10亿个请求,数百个表每秒处理超过50万个请求,数百个表的大小超过100TB。

将DynamoDB与众不同的关键架构选择之一是其多租户架构。DynamoDB不是将整个存储节点专用于单个客户的数据,而是在同一存储节点上共存来自不同表的分区。这种方法实现了高效的容量管理,并为客户提供了专用资源的错觉,同时通过健壮的资源管理机制确保了严格的隔离和性能保证。

最近推出的“热吞吐量”功能体现了DynamoDB多租户架构的强大功能。该功能允许客户了解他们的表基于底层分区的累积吞吐量可以支持的最大吞吐量。随着工作负载波动,DynamoDB会动态扩展分区以满足不断增长的需求,同时保持热吞吐量容量,无缝应对未来的峰值。这种专用资源的错觉,加上DynamoDB按需容量的按请求付费定价模式,为客户提供了无与伦比的可扩展性、经济性和操作简单性组合。

确保高可用性是DynamoDB设计理念的基石。DynamoDB团队的高级主要工程师Amr Thalji强调,为满足客户期望,构建零停机时间的系统至关重要。在他加入团队四年多的时间里,DynamoDB实现了零计划维护停机的非凡壮举,这证明了团队从根本上致力于高可用性工程的决心。

DynamoDB团队采用的一种关键策略是为全球表复制部署多个复制器。对于跨越四个区域的全球表,任何一个区域的写入都会主动复制到其他区域。但是,DynamoDB没有为所有区域使用单一复制器,而是为每对源和目标区域组合部署单独的复制器。尽管这种方法需要更多资源,对于四区域全球表需要12个复制器,但它将故障域限制在区域之间的单个链路,确保两个区域之间的网络问题或延迟不会影响到其他区域的复制。这种架构选择,加上并行性和冗余的适度使用,隔离了故障并最小化了对整个系统可用性的影响。

DynamoDB设计的另一个关键方面是对可预测延迟的重视。正如Amr Thalji敏锐地观察到的那样,客户要求性能一致,可以容忍延迟但无法忍受响应时间的不一致。为解决这一挑战,DynamoDB团队采用了多种策略,包括最小化代码执行路径的差异、尽可能在同一可用区域内共置客户端和请求路由器,以及在查询执行时更倾向于命令式模型而非声明式模型。

团队对可预测延迟的承诺不仅体现在架构选择上,也体现在卓越的运营实践中。例如,在引入新的硬件平台时,DynamoDB团队会精心测试和基准测试性能特征,确保即使在单个可用区域发生故障的情况下,系统也能保持一致的低延迟。这种对细节的关注贯穿了DynamoDB的设计和运营的方方面面,从软件部署到容量规划和资源分配。

在整个演讲中,Amr Thalji强调了几个指导原则,这些原则塑造了DynamoDB的架构和运营实践。其中一个原则就是假设缓存是冷的,确保系统能够在没有缓存层的情况下处理大规模持续工作。这种方法不仅增强了可用性,还简化了维护可预测性能所需的工程工作。Amr Thalji提供了一个令人信服的例子,引用了一个客户场景,其应用程序每秒驱动20亿个请求,缓存命中率为99.99%。为确保可预测的低延迟,DynamoDB团队会将底层数据库规模扩大到每秒40亿个请求,实际上是在持续工作状态下运行,并对冲缓存故障的风险。

DynamoDB团队所奉行的另一个原则是用简单、可重用的组件构建系统。通过将复杂的单体应用分解为模块化的微服务,每个微服务都有明确定义的契约和故障域,团队可以隔离问题、实现持续部署和向后兼容,并利用并行性实现可预测的低延迟。这种架构方法与亚马逊的小型自治团队理念保持一致,促进了敏捷性和创新,同时保持卓越的运营水平。

DynamoDB团队对持续改进和以客户为中心的创新的承诺,体现在过去一年推出的众多新功能和增强功能中。最重大的一项公告是将DynamoDB按需容量的价格降低了50%,这一举措直接让客户受益于团队持续优化所实现的节省。

此外,亚马逊还降低了全球表的溢价,取消了区域写入和复制写入之间的成本差异。这一变化进一步体现了团队为客户提供经济高效的全球分布式解决方案的决心,同时不会影响性能或可用性。

在安全性方面,DynamoDB推出了多项增强功能,包括基于资源的策略以实现细粒度访问控制、私有链路支持以实现安全通信,以及基于属性的访问控制的正式发布。这些功能使客户能够构建安全、合规的应用程序,同时利用DynamoDB的可扩展性和灵活性。

也许DynamoDB发展历程中最重大的里程碑之一是在最近的re:Invent 2024大会上宣布推出全球表的同步多区域复制功能。这一功能使客户能够为强一致性工作负载实现零恢复点目标,同时还能够跨亚马逊云科技区域进行强一致性读取。这项开创性的功能不仅增强了数据持久性和可用性,还为基于DynamoDB构建全球分布式、关键任务应用程序开辟了新的可能性。

在整场演讲中,Joseph Idziorek和Amr Thalji借助现实世界的例子和客户案例来阐释DynamoDB的强大功能和多功能性。像Netflix、Uber、三星和Duolingo这样的公司,每一家都有独特的高吞吐量应用程序,执行重复性任务,如添加购物车商品、检索位置数据、管理会话状态、存入账户或检索游戏玩家状态,它们都选择了DynamoDB作为数据库。这些来自在线零售、运输、游戏和语言学习等不同行业的公司,体现了DynamoDB可扩展性、可用性和一致性能力的普遍吸引力,使其成为跨行业企业的不二之选。

其他客户,如Duolingo、JPMorgan Chase、Mazor和Roblox等在2024年re:Invent大会上的专题会议中分享了他们基于DynamoDB构建应用的经验。这些多样化的客户案例证明了DynamoDB能够处理各种工作负载,进一步凸显了它的多功能性和适用于关键任务应用的能力。

总之,“深入探讨亚马逊DynamoDB架构选择”这场在亚马逊云科技 re:Invent 2024大会上的演讲,全面深入地剖析了塑造DynamoDB成为世界一流非关系型数据库服务的原则、设计决策和运营实践。从最初为应对Amazon.com的关键故障而诞生,到如今成为无数高吞吐量应用程序的支柱,DynamoDB的发展历程见证了创新、以客户为中心以及对可扩展性、可用性和大规模一致性能力的不懈追求的力量。

下面是一些演讲现场的精彩瞬间:

Kumar是DynamoDB的高级主管工程师,与他的同事Amrth一同登台,后者的存在和反馈让每一天对他来说都变得更美好。

ed1d5d10039a9e09a69b9702d9ea5d58.png

客户要求应用程序和数据库具有一致性和可预测的延迟,他们可以容忍延迟但不能接受性能不一致。

2e8178ea97be8d99ee18ead52a5824c0.png

Andy Jassy强调了Amazon DynamoDB在任何规模下都能提供可预测的性能,即使在每秒500万个请求的情况下,客户也能体验到一致的低延迟。

2ec4b1f40631ea1118dcfe364e7cfcb8.png

Andy Jassy强调了可预测延迟的重要性,以及声明式模型和命令式模型在实现重复任务应用程序的一致性能方面的区别。

7e3241d91767d6a7bcf6e1d446c7691d.png

构建无聊的系统,使其具有一致性、容错性和可扩展性,这样你就可以夜夜安睡。

e1b23960e5620cfed602f26bfbfa57b5.png

Andy Jassy宣布Amazon DynamoDB按需容量降价50%,成为客户更加经济实惠的默认选择。

244201aafa3f7e305f133a30764d3264.png

演讲者提供了补充资源,包括白皮书和以前的演讲,以进一步探索DynamoDB的不同方面。

fa030784cde6590e7e51f5877d11ace0.png

总结

在这个富有洞见的演讲中,来自亚马逊 DynamoDB 团队的 Joseph Idzork 和 Amr Thalji 深入探讨了 DynamoDB 可扩展性、高可用性和一致性能力背后的架构选择和原则。他们强调了在设计系统时考虑简单性、故障隔离和并行性的重要性,以实现可预测的低延迟和零停机时间。

他们涵盖的关键点包括:

  1. DynamoDB 被优化为分布式哈希表,将数据分区到多个节点上,从而实现近乎无限的可扩展性和任何规模下的一致性能。
  2. 采用多租户架构可以实现高效的资源管理,并通过诸如“预热吞吐量”等功能营造专用资源的错觉。
  3. 实现高可用性需要预期故障、限制故障域范围,并通过滚动更新和向后兼容的 API 等技术实现零停机部署。
  4. 实现可预测的低延迟需要消除变化、并行化操作,并倾向于命令式而非声明式模型来执行相同的操作。
  5. 使用简单、可重用的微服务构建系统,并定义明确的契约,有助于独立的故障域、持续部署和故障隔离。

最后,他们强调设计“无聊”的系统的重要性,这些系统可以可靠地运行而不会中断,使客户能够专注于应用程序而不是基础设施管理。

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值