本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
目标业务成果
本节将讨论以下业务成果:
-
提高应用程序可扩展性
-
提高应用程序性能
-
提高应用程序可用性
-
提高应用程序安全性
-
降低操作复杂性
提高应用程序可扩展性
应用程序的可扩展性取决于数据库处理并发连接的能力。并发连接的数取决于数据库实例类型。例如,t3.small 实例类型可支持 187 个并发数据库连接。对数据库的其他客户端连接尝试会导致失败。使用 Amazon 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 代理提高应用程序可用性
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 代理可以提高开发人员的速度,从而更快地交付新的应用程序。