

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 目标业务成果
<a name="targeted-business-outcomes"></a>

本节将讨论以下业务成果： 
+ 提高应用程序可扩展性
+ 提高应用程序性能
+ 提高应用程序可用性
+ 提高应用程序安全性
+ 降低操作复杂性

## 提高应用程序可扩展性
<a name="increase-application-scalability"></a>

应用程序的可扩展性取决于数据库处理并发连接的能力。并发连接的数取决于数据库实例类型。例如，t3.small 实例类型可支持 187 个并发数据库连接。对数据库的其他客户端连接尝试会导致失败。使用 Amazon RDS 代理端点与数据库交互，即使所需的客户端连接超过了实例类型支持的最大连接数，应用程序也能继续工作，如下图所示。



![图表显示了 13 个未使用 RDS 代理的失败连接和所有使用 RDS 代理的成功连接。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-proxy/images/application-scalability-chart.png)


因为 RDS 代理使用连接池，所以即使数据库实例的并发连接上限为 187 个，使用 RDS 代理端点的测试应用程序也能够扩展到 20,000 个客户端连接。

Amazon RDS 代理是需要扩展的架构中的一个重要组件。

## 提高应用程序性能
<a name="increase-application-performance"></a>

空闲连接是指不处理任何事务，但仍在使用数据库服务器上的内存和 CPU 的数据库连接。具有未结事务的空闲客户端会话也会阻止 autovacuum 过程清理死元组。死元组会导致数据库表膨胀，从而导致 SQL 查询速度变慢。Amazon RDS for PostgreSQL 数据库默认保持空闲连接 24 小时（由 `idle_in_transaction_session_timeout` 参数设置）。

默认情况下，如果空闲连接的闲置时间超过 30 分钟（由[IdleClientTimeout](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy-managing.html#rds-proxy-connection-pooling-tuning.idleclienttimeout)参数设置），RDS Proxy 会将其关闭，从而主动管理空闲连接。尽早清除空闲会话及其使用的资源可以减少对 CPU、内存和 autovacuum 过程的影响。

Amazon RDS 代理可有效管理空闲连接，从而提高应用程序性能。

## 提高应用程序可用性
<a name="increase-application-availability"></a>

应用程序的可用性取决于其数据库失效转移响应时间。在数据库失效转移期间，应用程序会遇到正在进行的事务出错。这会降低应用程序对最终用户的可用性。

RDS 代理可感知数据库失效转移。发生数据库失效转移时，RDS 代理会将来自应用程序端的传入请求排队，直到能够与数据库建立新的连接。这有助于防止正在进行的事务出错，从而提高应用程序的可用性。

[使用 Amazon RDS 代理提高应用程序可用性](https://aws.amazon.com/blogs/database/improving-application-availability-with-amazon-rds-proxy/)这篇文章重点介绍了将 RDS 代理与 Amazon Aurora 数据库结合使用的好处。使用 RDS 代理时，平均失效转移时间为 3.1 秒，而使用直接连接数据库时为 24 秒。这表示提高了 87％。

Amazon RDS 代理有助于提高应用程序可用性。

## 提高应用程序安全性
<a name="increase-application-security"></a>

由于 RDS 代理使用 TLS/SSL 和 AWS Identity and Access Management (IAM)，因此它可以充当客户端应用程序和底层 Postgres 数据库之间的额外安全层。借助 RDS 代理，您可以对连接到代理的应用程序采用更严格的安全要求（TLS 1.2 和 IAM 角色）。

RDS 代理可以从中检索数据库证书 AWS Secrets Manager，并且您可以为 RDS 代理用户配置 IAM 身份验证。这样，即使数据库使用本机身份验证机制（如用户名和密码），您也可以对数据库访问强制执行 IAM 身份验证。这减少了应用程序管理数据库凭证的需求，改善了应用程序的安全状况。

## 降低操作复杂性
<a name="decrease-application-management"></a>

连接池程序必须辅以其他代理服务器，才能提供高可用性和负载均衡。这种设置增加了操作复杂性。传统的代理服务器很难部署、修补和管理。使用它们会消耗时间和精力，而这些时间和精力本可以用在开发产品上。

Amazon RDS 代理为您提供了数据库代理的优势，且无需额外承担修补和管理自己的代理服务器的负担。RDS 代理为无服务器服务，可自动扩展以适应您的工作负载。凭借其自助设置选项，RDS 代理可以提高开发人员的速度，从而更快地交付新的应用程序。