规划在哪里使用 RDS 代理
您可以确定哪些数据库实例、集群和应用程序可能从使用 RDS Proxy 中受益匪浅。为此,请考虑以下因素:
-
任何出现“连接过多”错误的数据库实例都很适合与代理相关联。这通常以
ConnectionAttempts
CloudWatch 指标的值较高为特征。代理允许应用程序打开许多客户端连接,而代理管理与数据库实例的少量长期连接。 -
对于使用较小 Amazon 实例类(如 T2 或 T3)的数据库实例,使用代理可以帮助避免内存不足情况。它还可以帮助减少建立连接时的 CPU 开销。处理大量连接时可能会发生这些情况。
-
您可以监控某些 Amazon CloudWatch 指标,以确定数据库实例是否接近某些类型的限制。这些限制针对连接数以及与连接管理关联的内存。您还可以监控某些 CloudWatch 指标,以确定数据库实例是否正在处理许多短期连接。打开和关闭此类连接可能会给数据库带来性能开销。有关要监控的指标的信息,请参阅 使用 Amazon CloudWatch 监控 RDS Proxy 指标。
-
Amazon Lambda 函数也可以很好地使用代理。这些函数进行频繁的短数据库连接,可受益于 RDS Proxy 提供的连接池。您可以利用已为 Lambda 函数提供的任何 IAM 身份验证,而不是在 Lambda 应用程序代码中管理数据库凭证。
-
代理服务器非常适合那些通常需要打开和关闭大量数据库连接,并且没有内置的连接池机制的应用程序。
-
长时间保持大量连接打开的应用程序通常可以很好地使用代理。诸如软件即服务 (SaaS) 或电子商务等行业中的应用程序通常会使连接保持打开状态,从而最大限度地减少数据库请求的延迟。通过 RDS 代理,与直接连接到数据库实例相比,应用程序可以将更多连接保持为打开状态。
-
由于为所有数据库实例设置 IAM 身份验证和 Secrets Manager 较为复杂,因此,您可能尚未采用此类身份验证。如果是这样,您可以保留现有的身份验证方法,并将身份验证委派给代理。代理可以为特定应用程序的客户端连接强制执行身份验证策略。您可以利用已为 Lambda 函数提供的任何 IAM 身份验证,而不是在 Lambda 应用程序代码中管理数据库凭证。
-
RDS 代理可以帮助使应用程序更具弹性,对数据库故障更透明。RDS 代理绕过域名系统(DNS)缓存,以将 Amazon RDS 多可用区数据库实例的故障转移时间缩短多达 66%。RDS 代理还会自动将流量路由到新的数据库实例,同时保留应用程序连接。这使得失效转移对应用程序更加透明。