Q34 — AWS SAA-C03 第16章
第 34/100 题 | ← 返回第16章
Q1234. 一家公司正在 AWS 上运行一个无服务器电商应用程序。该应用程序使用 Amazon APl Gateway 调用 AWS Lambda Java 函数。Lambda 函数连接到 Amazon RDS for MySQL 数据库来存储数据。在最近的一次促销活动中,网络流量突然增加导致 APl 性能下降和数据库连接失败。该公司需要实施一个解决方案,以最大限度地降低 Lambda 函数的延迟并支持流量突发。哪种解决方案能够以最少的应用程序改动来满足这些要求?
- A. 更新 Lambda 函数的代码,使 Lambda 函数在函数处理程序之外打开数据库连接。增加 Lambda 函数的预置并发数。
- B. 为数据库创建 RDS Proxy 终端节点。将数据库密钥存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预配置并发数。 ✓
- C. 创建自定义参数组。增加 max_connections 参数的值。将自定义参数组与 RDS 数据库实例关联并安排重启。增加 Lambda 函数的预留并发数。
- D. 为数据库创建 RDS Proxy 终端节点。将数据库密钥存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预留并发数
正确答案: B. 为数据库创建 RDS Proxy 终端节点。将数据库密钥存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预配置并发数。
解析
为了解决无服务器电商应用中高流量事件期间 API 性能不佳和数据库连接失败的问题,让我们分析一下需求和选项:关键要求:最小化 Lambda 函数的延迟:减少建立数据库连接所需的时间。支持突发流量:确保数据库能够处理连接数的突然增加而不会发生故障。尽量减少对应用程序的改动:优先选择对现有代码库修改最少的解决方案。解决方案分析:RDS 代理:用途:RDS Proxy 是 Amazon RDS 的完全托管、高可用性数据库代理,可提高应用程序的可扩展性、抵御数据库故障的能力以及安全性。它池化并共享数据库连接,从而提高数据库连接的效率并降低 Lambda 函数的延迟。好处:减少建立新数据库连接的开销。处理连接池,这对于像 Lambda 这样快速扩展的无服务器应用程序至关重要。只需对应用程序代码进行少量更改(只需更新连接字符串以指向 RDS Proxy 终端节点)。预配置并发与预留并发:预置并发:确保指定数量的 Lambda 函数实例已初始化并准备好响应请求,从而缩短冷启动时间。对于需要稳定性能的应用程序非常有用。预留并发:限制 Lambda 函数的并发执行数量,以防止其耗尽账户中所有可用的并发数。这有助于防止某个函数独占资源,但不会直接提升性能或处理连接池。评估选项:选项 A:更新 Lambda 函数的代码,在函数处理程序之外打开数据库连接。增加 Lambda 函数的预置并发数。错误:虽然在处理程序之外打开数据库连接有助于减少延迟(连接重用),但在处理连接池和扩展方面,它不如 RDS Proxy 有效。此外,预置并发有助于冷启动,但不能直接解决数据库连接问题。选项 B:为数据库创建 RDS Proxy 终端节点。将数据库密钥存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预置并发数。正确:此选项使用 RDS Proxy 处理连接池并减少延迟。它还使用预置并发数来确保一致的性能。虽然将密钥存储在 Secrets Manager 中并设置 IAM 权限是额外的步骤,但它们是良好做法,并且不会显著增加解决方案的复杂性。此选项只需对应用程序进行少量更改(仅更新连接字符串)即可满足要求。选项 C:创建自定义参数组。增加 max_connections 参数的值。将自定义参数组与 RDS 数据库实例关联并安排重启。增加 Lambda 函数的预留并发数。错误:增加 max_connections 可能会有所帮助,但它不能解决无服务器应用程序中连接池效率低下的根本原因。预留并发不会提高性能或处理连接池。此解决方案不如使用 RDS Proxy 有效。选项 D:为数据库创建 RDS Proxy 终端节点。将数据库机密存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预留并发。部分正确:此选项使用 RDS Proxy,这很好,但增加预留并发不能提供与预配置并发相同的好处,即减少冷启动和确保一致的性能。预配置并发更适合此用例。最终答案:B. 为数据库创建 RDS Proxy 终端节点。将数据库密钥存储在 AWS Secrets Manager 中。设置所需的 IAM 权限。更新 Lambda 函数以连接到 RDS Proxy 终端节点。增加 Lambda 函数的预置并发数。该解决方案通过使用 RDS Proxy 进行连接池化,最大限度地降低 Lambda 函数的延迟,并通过使用预配置并发确保流量突发期间的稳定性能。它只需对应用程序代码进行少量更改。