目标业务成果 - AWS 规范性指导

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

目标业务成果

本节将讨论以下业务成果: 

  • 提高应用程序可扩展性

  • 提高应用程序性能

  • 提高应用程序可用性

  • 提高应用程序安全性

  • 降低操作复杂性

提高应用程序可扩展性

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

图表显示了 13 个未使用 RDS 代理的失败连接和所有使用 RDS 代理的成功连接。

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

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

提高应用程序性能

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

默认情况下,如果空闲连接的闲置时间超过 30 分钟(由IdleClientTimeout参数设置),RDS Proxy 会将其关闭,从而主动管理空闲连接。尽早清除空闲会话及其使用的资源可以减少对 CPU、内存和 autovacuum 过程的影响。

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

提高应用程序可用性

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

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

使用 Amazon RDS 代理提高应用程序可用性这篇文章重点介绍了将 RDS 代理与 Amazon Aurora 数据库结合使用的好处。使用 RDS 代理时,平均失效转移时间为 3.1 秒,而使用直接连接数据库时为 24 秒。这表示提高了 87%。

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

提高应用程序安全性

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

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

降低操作复杂性

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

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