Amazon RDS 代理

提高您的应用程序的扩展性、弹性和安全性

Amazon RDS 代理是针对 Amazon Relational Database Service(RDS)的完全托管、高度可用数据库代理,使应用程序更加可扩展,更能灵活地处理数据库故障,并且更具安全性。

许多应用程序,包括在现代无服务器架构上构建的应用程序,可以拥有大量与数据库服务器的开放连接,并可在高速率下打开和关闭数据库连接,从而耗尽数据库内存和计算资源。Amazon RDS 代理可使应用程序池化和共享已建立的数据库连接,从而提高数据库效率和应用程序的可扩展性。借助 RDS Proxy,Aurora 和 RDS 数据库的故障转移时间最多可缩短 66%,数据库凭证、身份验证和访问可通过与 AWS Secrets Manager 和 AWS Identity and Access Management(IAM)的集成来管理。

无需更改代码即可为大多数应用程序启用 Amazon RDS 代理。您无需预置或管理任何其他基础设施即可开始使用 RDS 代理。定价很简单,基于底层数据库实例的容量。对于 Amazon Aurora Serverless v2 实例,您需要按照 Aurora 容量单位(ACU)付费,对于预置实例则按照 vCPU 付费。Amazon RDS 代理适用于 Amazon Aurora PostgreSQL 兼容版、Amazon Aurora MySQL 兼容版、Amazon RDS for PostgreSQL、Amazon RDS for MySQL、Amazon RDS for MariaDB 和 Amazon RDS for SQL Server。

Amazon RDS 代理简介(12:13)

RDS 代理的优势

您的 Amazon RDS 代理实例会维护与 RDS 数据库实例建立的连接池,从而减少建立新连接时通常对数据库计算和内存资源的压力。RDS 代理还可共享不常使用的数据库连接,因此访问 RDS 数据库的连接更少。这种连接池使您的数据库能够高效地支持大量和高频率的应用程序连接,从而使您的应用程序可在不影响性能的情况下进行扩展。
RDS 代理可自动连接到新数据库实例,同时保留应用程序连接,从而最大限度地减少因中断而影响数据库可用性的应用程序中断。发生故障转移时,RDS 代理会将请求直接路由到新数据库实例。这可将 Aurora 和 RDS 数据库的故障转移时间缩短多达 66%。RDS 代理还支持具有两个可读备用数据库的多可用区,其失效转移通常低于 35 秒,写入延迟降低 2 倍,读取容量增加,并且将次要版本升级停机时间缩短到通常不到 1 秒。
Amazon RDS 代理允许您选择对数据库访问强制执行 IAM 身份验证,并避免将数据库凭证硬编码为应用程序代码,从而使您能够进一步控制数据安全。RDS 代理还可让您利用 AWS Secrets Manager 集中管理数据库凭证。
数据库代理服务器有助于处理数据库上的额外负载。尽管传统的代理服务器可使应用程序更有效地扩展,但它们很难部署、打补丁和管理,那样消耗的时间和精力本可以更好地花在开发优秀的产品上。Amazon RDS 代理为您提供了数据库代理的优势,无需对自己的代理服务器打补丁和进行管理的额外负担。RDS 代理完全无服务器,可自动扩展以适应您的工作负载。
Amazon RDS 代理与所支持数据库引擎的协议完全兼容,因此您无需更改应用程序代码即可为应用程序部署 RDS 代理。您只需将应用程序连接指向代理而非 RDS 数据库,其余部分即可无缝管理。

工作原理

Amazon RDS 代理位于您的应用程序和关系数据库之间,可有效管理数据库连接并提高应用程序的可扩展性。

Amazon RDS 代理的工作原理

应用场景

无服务器应用程序开发

通过 Amazon RDS 代理,您可以构建扩展性和可用性更高的无服务器应用程序,因为它们可以更高效地使用您的关系数据库。现代无服务器应用程序支持高度可变的工作负载,可能会尝试打开大量新的数据库连接,或者将许多连接保持打开但处于空闲状态。连接激增或大量打开的连接可能会使您的数据库服务器受到压力,从而导致查询速度变慢,应用程序可扩展性受限。通过池化和共享已建立的数据库连接,RDS 代理允许您高效地扩展以增加来自无服务器应用程序的连接。RDS 代理还可使您通过控制已打开的数据库连接总数来维持可预测的数据库性能。最后,RDS 代理通过拒绝可能降低数据库性能的无法使用的应用程序连接,来保持无服务器应用程序的可用性。

软件即服务(SaaS)和电子商务应用程序

SaaS 或电子商务应用程序通常会使大量数据库连接保持打开状态,以确保快速的用户响应时间,尽管这些打开的连接中只有一小部分可以在给定时刻被主动使用。这些打开但空闲的连接仍然消耗数据库内存和计算资源。您可以使用 RDS 代理使来自您的应用程序的连接保持空闲,同时只需要建立数据库连接来最佳服务活动请求,而不是过度配置数据库来支持大部分空闲连接。

在常见问题解答中探索更多应用场景