亚马逊AWS官方博客

Amazon Aurora Serverless v2正式发布:瞬时扩展应对高要求的工作负载

今天,我们很激动地宣布,适用于Aurora PostgreSQL和MySQL的Amazon Aurora Serverless v2现已正式发布。Aurora Serverless是一种可以按需获取,自动扩展的Amazon Aurora配置,可根据您的应用程序需求动态地扩大或缩小数据库规模。

Amazon Aurora是一种专门为云构建,可兼容MySQL与PostgreSQL的关系型数据库。它完全由Amazon Relational Database Service(RDS)托管,可自动实现硬件预配、数据库设置、补丁安装以及备份等繁琐耗时的管理任务。

Amazon Aurora的一个重要功能是计算与存储的分离。借此即可单独扩展计算或存储资源。随着您数据库中的数据容量逐渐增长,Amazon Aurora存储可以自动扩展。例如,您可以借此存储大量数据,如果有朝一日您决定删除其中的大部分数据,预配的存储也将酌情做出调整。

不过很多客户反馈称他们希望Amazon Aurora的计算层也能提供相同灵活性,因为大部分数据库工作负载并非始终需要相同水平的计算能力。随着时间流逝,工作负载的运转可能出现峰值、间断或可预测的高峰。

为了承载此类工作负载,您需要针对预计可能出现的峰值容量需求来预配数据库。然而这种方法成本太高,毕竟数据库工作负载很少会以峰值容量来运行。为了预配恰当数量的计算资源,您需要持续监控数据库容量的使用情况,并在使用量较高时扩展资源。不过这需要专业技能,并且通常还会产生停机时间。

为了解决这个问题,2018年,我们发布了Amazon Aurora Serverless的第一个版本。自那之后,已经有数千家客户通过Amazon Aurora Serverless为不频繁、间断性的以及不可预测的工作负载提供了一种具备成本效益的选项。

今天,我们隆重宣布下一版Amazon Aurora Serverless已正式发布,该服务可帮助客户以无服务器方式运行要求更高的工作负载,瞬时实现非中断性的扩展,精细调整所需容量,并获得读取副本、多AZ部署、Amazon Aurora Global Database等附加功能。

本次发布的Aurora Serverless v2提供了最新版本的Amazon Aurora,支持的版本包括:Aurora PostgreSQL可兼容的PostgreSQL 13,以及Aurora MySQL可兼容的MySQL 8.0。

Aurora Serverless v2主要功能

Aurora Serverless v2可以帮您将数据库扩展至每秒几十万条事务的规模,并能以具备成本效益的方式管理要求最高的工作负载。它可以通过细化的增量式调整满足工作负载对容量的需求,这一过程中完全不会打断连接或事务。此外,您只需要为自己实际使用的容量付费,相比按照峰值负载需求进行预配的做法,成本最多可节约90%。

如果您已经有Amazon Aurora集群,还可在同一个集群中创建Aurora Serverless v2实例。借此即可获得混合配置的集群,让预配实例与Aurora Serverless v2实例在同一个集群中共存。

该服务广泛支持Amazon Aurora的全部功能。例如,您可以创建最多15个Amazon Aurora读取副本并将其部署到多个可用区中。这些读取副本中可包含任意数量个Aurora Serverless v2实例,并可将其做为故障转移目标来提高可用性,或借此对读取操作进行进一步的扩展。

类似的,对于Global Database,您可以将任意数量的实例指派为Aurora Serverless v2,闲置时只需为最小容量付费。这些位于辅助区域中的实例亦可单独进行扩展,借此跨区域为不同工作负载提供支持。该服务的完整功能列表请参考Amazon Aurora用户指南

Aurora Serverless v2的扩展原理

Aurora Serverless v2可通过添加更多CPU和内存资源来扩展底层实例的容量,借此以非中断性的方式实现瞬间扩展。该技术可直接就地增加或减少底层实例的容量,无需为实现扩展而故障转移至新实例。

Aurora Serverless v2在容量缩小方面采取了一种更保守的方法。它会循序渐进地逐渐缩小容量,直到达到工作负载所需的容量。缩容速度过快会过早地清空已缓存页面并减小缓冲池的容量,这可能会对性能产生不利影响。

Aurora Serverless容量以Aurora容量单位(Aurora Capacity Unit,ACU)做为衡量单位。每个ACU包含大约2GB内存、相应的CPU以及网络资源。使用Aurora Serverless v2时,您的初始容量最小可以使用0.5 ACU,可支持的最大容量为128 ACU。此外,该服务还支持以0.5 ACU为增量进行细化的扩容,借此您的数据库容量将能与工作负载的实际需求更加契合。

Aurora Serverless v2扩展演练

为了展示Aurora Serverless v2的实际效果,我们将模拟一次闪电促销。假设您运行了一个电商网站,并举办了一个营销活动,客户可以在有限时间内享受到五折的优惠促销价。您预计在促销期间网站流量将会激增。

在使用传统数据库的情况下,如果这类营销活动需要定期举办,您需要根据预计的峰值负载配置数据库容量。或者如果只是时不时进行促销,您也需要在每次促销峰值期间根据预计的峰值流量重新配置数据库。这两种情况下,您都会受制于自己预先估计的容量需求。如果销量超出预期又会怎样?如果数据库无法满足需求,可能导致服务性能降级。如果营销活动效果低于预期呢?您等于在为自己不需要的容量花了冤枉钱。

在这个演示中,我们将使用Aurora Serverless v2做为事务数据库。促销期间,我们会使用Amazon Lambda函数调用数据库并处理电商网站的订单。该Lambda函数和数据库位于同一个Amazon Virtual Private Cloud(VPC)中,函数可直接连接至数据库并执行各种操作。

我们将使用开源的负载测试框架Artillery来模拟闪电促销的流量。该工具可以调用多个Lambda函数,进而生产诶那个不同类型的负载。例如,我们可以从小规模负载着手开始,并快速增大负载,以观察数据库如何根据工作负载调整其容量。Artillery负载测试运行在同一个VPC中的Amazon Elastic Compute Cloud(Amazon EC2)实例上。

下列Amazon CloudWatch仪表板展示了订单数量增加过程中,数据库容量的变化情况。在该仪表板中,已下达的订单显示为蓝色线条,数据库当前容量显示为橙色线条。

促销刚开始时,Aurora Serverless v2数据库的初始容量为5 ACU,这是配置好的数据库最小容量。在前几分钟里,订单数量增加,但数据库容量并未立即增加。预配置的初始数据库容量已经可以轻松应对此时的负载。

然而在大概15:55时,订单数量激增至12,000。因此数据库将容量扩展到14 ACU。数据库容量可在毫秒级别的时间里瞬间增大,完全可以根据负载规模进行调整。

订单下达数量在几秒钟内保持高位,随后到15:58开始大幅减少。然而数据库容量并未完全按照流量的下降趋势随之减小。相反,数据库容量是逐渐降低到5 ACU的。这种保守的缩容方式可避免过早清空缓存页面进而影响到性能。这种做法不仅可以避免对峰值工作负载产生不必要的延迟,同时保证了缓存和缓冲池不会过早清空。

在现有Amazon Aurora集群中使用Aurora Serverless v2

如果您已经在使用Amazon Aurora集群并且希望尝试Aurora Serverless v2,此时最快速的上手方法是使用混合配置的集群,在其中同时运行Serverless实例和预配置实例。首先,您可以为现有集群添加新的Reader,请注意,需要将Reader实例的类型配置为Serverless v2

请用您的工作负载测试新添加的Serverless实例。确认实例可以按照预期方式正常工作后,即可开始故障转移至Serverless实例,整个过程可在30秒内完成。该方式可以用最小程度的停机时间让您开始使用Aurora Serverless v2。

如何新建Aurora Serverless v2数据库

若要开始使用Aurora Serverless v2,您需要通过RDS控制台新建一个数据库。首先请选择引擎类型为Amazon Aurora。随后选择希望兼容的数据库引擎:MySQL或PostgreSQL。请打开引擎版本选项下的筛选器并选择筛选器:Show versions that support Serverless v2。接下来会看到,Available versions下拉菜单中将只显示能被Aurora Serverless v2支持的选项。

随后需要设置数据库。请使用数据库管理员的用户名和密码设置凭据选项。

接下来需要配置数据库实例。您需要选择自己想要使用的实例类。借此即可为数据库实例分配计算、网络和内存容量。在这里请选择Serverless

随后需要定义容量范围。Aurora Serverless v2的容量可以在最大容量和最小容量范围内进行扩大或缩小。您需要在这里为工作负载设置数据库的最大和最小容量。可指定的最小容量为0.5 ACU,最大容量为128 ACU。有关Aurora Serverless v2容量单位的详细信息请参考瞬时自动扩展文档

接下来需要配置网络连接,为此请新建一个VPC和安全组,或使用默认设置。最后,请选择Create database

数据库的创建需要几分钟时间。当状态变为Available时,意味着数据库已创建完成。

数据库的连接信息会显示在数据库页面上。这里会显示端点和端口、管理员账户的用户名和密码,以及连接到新建的Aurora Serverless v2数据库所需的其他所有信息。

立即体验!

Aurora Serverless v2目前已可通过US East (Ohio)、US East (N. Virginia)、US West (N. California)、US West (Oregon)、Asia Pacific (Hong Kong)、Asia Pacific (Mumbai)、Asia Pacific (Seoul)、Asia Pacific (Singapore)、Asia Pacific (Sydney)、Asia Pacific (Tokyo)、Canada (Central)、Europe (Frankfurt)、Europe (Ireland)、Europe (London)、Europe (Paris)、Europe (Stockholm)以及South America (São Paulo)区域使用。

有关该服务的详细信息,请访问Amazon Aurora Serverless v2产品页面。

本篇作者

Marcia Villalba

Marcia Villalba是亚马逊云科技的资深开发者布道师。她在软件行业,尤其是应用程序的构建和扩展方面有着15年的从业经验。她致力于设计能够充分发挥云计算能力的系统,并积极拥抱DevOps文化。