Amazon Aurora 上的超大规模数据库

关键字: [Amazon Web Services re:Invent 2023, Amazon Aurora, Scaling Aurora Databases, Optimizing Database Performance, Sharding Databases, Database Per Service Architecture, Handling Rapid Database Growth]

本文字数: 1700, 阅读完需: 8 分钟

视频

如视频不能正常播放,请前往bilibili观看本视频。>> https://www.bilibili.com/video/BV13N4y1e7Sh

导读

当您的应用程序永远不能停机且数据量快速增长时,管理迅速增长的资源、性能调优和优化成本就变得至关重要。了解快速增长的亚马逊云科技客户如何通过在 Amazon Aurora 上进行扩展来为其应用程序提供支持。在本讲座中,听取帮助数百个亚马逊云科技客户应对快速增长并将他们的关系型数据库推向极限的工程师经验分享。

演讲精华

以下是小编为您整理的本次演讲的精华,共1400字,阅读时间大约是7分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。

随着公司的快速发展,其数据库基础设施面临着巨大的挑战。为了应对这一挑战,演讲者首先询问现场有多少人的公司正在经历类似的增长或者正准备启动以实现快速用户获取和规模化的初创企业。这种增长通常会使得应用程序流量和数据库负载呈指数级增长。尽管应用程序层可能更容易扩展,但在扩展数据库后端方面,许多人仍然面临困难。

演讲者在亚马逊云科技上与数百个面临类似问题的客户共同工作,这些客户都是超规模数据库的用户。通过他们的实践经验,Aurora团队已经掌握了应对病毒式增长带来的流量和负载涌出的策略。通过分享这些策略,与会者可以将其应用于自己公司的实际情况。

演讲者详细阐述了从初创到成熟阶段的策略,包括持续优化数据库性能、适应微服务架构以及最终在多个数据库之间实现数据分片的方法。由于Aurora的架构和功能非常出色,因此它能够很好地满足超规模工作负载的需求。

为了让听众更好地理解这一过程,演讲者让他们设想建立一个全新的电子商务应用程序。该应用程序的数据模型包括核心实体,如客户概况、产品项目和订单。工程团队计划使用客户、产品和订单的独立服务来构建微服务架构。他们选择在亚马逊云科技上搭建应用程序,主要是因为其出色的可扩展性。此外,他们还选择了Amazon Aurora作为托管关系数据库。

在经过几个月的艰苦努力之后,应用程序终于推出并取得初步成功。随着用户和订单的增加,利用率迅速上升。然而,这一令人兴奋的阶段也带来了应对需求的挑战。在这种情况下,应该如何应对?

首先需要扩展应用程序层。建议采用自动缩放规则动态添加容器,并使用负载均衡器分配流量。这样可以确保在某个容器出现故障时仍能提供服务。在数据库方面,第一步是将Aurora实例扩展到更大的规格。演讲者提到了支持高达1TB RAM的大小,例如r5.16xlarge和r6i.32xlarge。更多的内存允许更大的数据集被缓存,从而提高性能,因为内存操作比磁盘快得多。额外的核心还为更高吞吐量提供了更多的CPU功率和网络带宽。

在接下来的过程中,我们将关注高可用性。最初的Aurora集群仅包含一个主实例。在第二个地理冗余区域(AZ)中添加一个只读实例可以在主实例出现故障时实现快速的故障切换。Aurora能够在不到30秒的时间内完成故障切换,从而将停机时间降至最低。这个只读实例还可以处理读取流量,因此建议将应用程序配置为将写操作发送到集群端点,将读取操作发送到只读端点。这样可以在实例间扩展读取操作。

随着应用程序添加更多的容器,数千个连接可能会给数据库带来额外的负载。建议添加一个连接池层来应对负载。可以选择使用开源工具如ProxySQL,或者使用完全托管的Amazon RDS代理。代理将在地理冗余区域(AZ)内跨多个地理区域扩展,并支持更高的数据库吞吐量。

通过添加更多的Aurora副本(每个集群最多15个),可以在实例间进一步扩展读取操作。需要注意的是,如果使用了代理,它将自动在副本之间平衡查询。将这些步骤组合起来(扩大规模、添加只读实例、连接池扩展以及增加副本)可以提供平稳处理病毒式增长的初始激增的能力。

下一阶段是优化。快速增长通常在高压环境下暴露出了测试中遗漏的数据库错误和瓶颈。优化领域包括解决数据库问题和调整以实现最大效率。

在一个客户示例中,一个简单的优化实践将性能提高了1000倍。定期调整数据库参数、索引和查询的客户实现了数量级的更好性能。这允许在优化成本的同时支持增长。

Aurora提供了一些工具来帮助识别优化领域。Performance Insights显示了数据库随时间的负载,强调了表示瓶颈的等待事件。它还显示顶级SQL查询,允许深入查看特定语句的指标,如延迟和I/O。DevOps Guru可以检测数据库指标中的异常并提供解决问题的建议。它在客户受到影响之前识别出潜在问题。

成本管理在实现增长方面同样具有重要意义。Amazon Aurora 无服务器提供真正的按需使用扩展,能够根据工作负载需求自动调整容量。Amazon Aurora Reader 能够自动扩展添加和删除极光副本,以适应不断变化的流量水平并调整容量大小。这些功能有助于优化可变工作负载的成本。

未来的增长前沿在于过渡到与微服务架构一致的专用数据库模型。演讲者阐述了拆分单体数据库的几种优势。这样可以实现独立的扩展和故障隔离。团队可以在无需协调的情况下独立发展其业务模式。此外,它还能避免服务之间因共享数据库而引发的资源争夺。

首先,需要识别每个服务所属的表,例如,客户属于介绍服务,订单属于订购服务。这可能需要进行一些重构,如添加订单详情表以消除订单和物品之间的直接链接。接下来,为每个服务添加新的数据库端点,起初仍指向共享数据库。这允许在使用实际分割之前对使用情况进行审核。

Amazon Aurora 快速克隆功能可以迅速创建新数据库,只需指向相同的存储快照即可。这使得为新服务快速分配新数据库成为可能。复制设置将从单体数据库到新服务数据库的数据流。然后,应用程序将被路由到新的端点。

如今,服务团队拥有了自己的数据库,因此需要建立监控、操作和调优的最佳实践。虽然变得更加灵活,但他们可能需要关于数据库管理的培训。Amazon Aurora 的性能洞察等工具有助于跨所有数据库进行监督。

演讲者随后讨论了分片策略以实现更高的横向扩展。打破数据库大小和读写吞吐量限制的两种方法。分片将数据分布在多个Amazon Aurora 数据库中,每个数据库包含总体数据的一部分。

一个简单的分片示例是将客户表分开。客户的哈希ID决定分区,然后将范围的分区映射到单独的分片。查询将针对包含所需数据的单个分片。

在经过仔细分析之后,选择分区键对于提高查询效率至关重要,这样可以确保查询仅命中一个分片。反之,如果查询跨越多个分片,性能将会受到影响。在不同分区键上连接分片表会导致应用程序代码中出现昂贵的合并操作。因此,建议将相关表(如客户地址)放置在相同的分区键上。

例如,邮政编码等参考表应在每个分片上完全复制,以实现在分片中的高性能和本地化连接。应用程序逻辑需要将查询路由到正确的分片。为此,可以使用分片模块或在代理服务中处理路由。

此外,演讲者还分享了添加新分片和处理跨分片备份的技巧。由于每个分片都是一个独立的数据库,因此在分片之间的备份并非事务上一致的。在灾难后恢复时,需要小心协调跨分片的恢复过程。

近期,亚马逊推出了Aurora Limitless数据库,旨在简化分片过程。它提供了声明式表分片、自动数据路由以及资源的自动扩展。一个事务路由层可以处理跨分片的查询,同时保持ACID保证。它将结果集跨分片汇总并管理分布式提交。该服务封装了复杂的分片管理,使得开发人员可以专注于他们的应用程序。

总的来说,演讲者介绍了从初始启动到大规模分片处理超规模工作负载的一系列技术。尽管支持快速增长的基础设施需求,但Aurora的专用数据库架构提供了许多功能以满足这些需求。同样重要的是,通过持续的调整和优化来优化性能,从而最大限度地利用数据库资源。将这些数据库最佳实践与Aurora的高性能和可用性相结合,使公司能够自信地扩大其最苛刻的应用程序。

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

领导者向那些担忧扩张速度的快速成长公司的员工提问。

作为一家专注于自动化分析和建议的公司,DevOps Guru致力于帮助缺乏经验的团队更好地管理他们的数据库。

借助亚马逊云科技的数十万名RDS客户的经验,DeSbu能够提前预警潜在的数据库问题并提供主动见解。

Aurora Serverless具有自动且即时扩展的功能,以满足工作负载需求,从而实现真正按使用付费的数据库功能。

领导者指出,共享数据库模式由于服务之间的紧密耦合而限制了灵活性。

为了解决这个问题,他们引入了新的数据库端点,使得服务能够在仍然访问共享数据库的同时独立使用各个表。

在re:Invent的演讲中,亚马逊云科技部门的高级领导们探讨了如何扩展Amazon Aurora的相关问题。

总结

亚马逊Aurora数据库致力于应对迅速增长的数据库需求和规模扩大的挑战。随着应用程序的使用量不断上升,可以通过实施一系列策略来优化其性能。首先,通过升级到具有更多CPU、内存和网络带宽的大型Aurora实例规模,以扩充数据库容量。这将使得数据库能够在内存中存储更多的数据,从而实现更高效的处理。同时,添加读取副本以缓解读取压力。通过使用RDS代理进行连接池化,可以更高效地处理大量连接。其次,通过对参数进行调整、修复错误以及改进低效查询,对数据库进行优化。Performance Insights和DevOps Guru等工具可帮助识别潜在的问题区域。经过适当的优化后,性能可能会提高10倍甚至更高。为了与微服务保持协调,将数据库划分为每个服务的独立模式。利用快速的克隆功能高效地复制数据,为团队提供独立的开发功能空间。此外,可以根据需要进行单个数据库的缩放。针对极端规模的挑战,将数据跨越多个Aurora集群进行划分。谨慎选择合适的分区键,以确保查询仅影响一个分片。根据需要创建和使用物化全局索引。管理分片之间的备份。借助Aurora Serverless,分片变得更为简便,因为服务器无用系统负责处理基础设施和路由逻辑。通过合理的架构和优化,Aurora能够扩展以满足各种工作负载的需求,从小型初创公司到为全球数百万用户提供服务的大型企业。

演讲原文

https://blog.csdn.net/just2gooo/article/details/134810791

想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!

2023亚马逊云科技re:Invent全球大会 - 官方网站

点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!

点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!

即刻注册亚马逊云科技账户,开启云端之旅!

【免费】亚马逊云科技“100 余种核心云服务产品免费试用”

【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”

亚马逊云科技是谁?

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值