Q69 — AWS SAA-C03 第17章
第 69/89 题 | ← 返回第17章
Q1369. 一家活动公司在 Amazon EKS 上部署了一个 Web 应用程序。该应用程序使用 Amazon DynamoDB 表。该公司为该 DynamoDB 表预置了 1,000 个读取容量单位 (RCU) 和 500 个写入容量单位 (WCU)。该应用程序对该表执行最终一致性读取操作。该应用程序的流量通常较低,但偶尔会显著增长。在这些流量突然增加期间,DynamoDB 会返回限流错误。结果是,最终用户会看到错误页面。解决方案架构师应该如何减少这些错误?
- A. 将 DynamoDB 表更改为使用按需容量模式。 ✓
- B. 创建 DynamoDB 只读副本,以横向扩展读取流量。
- C. 购买 DynamoDB 预留容量 1,000 RCU 和 500 WCU。
- D. 配置应用程序以对 DynamoDB 查询使用强一致性读取。
正确答案: A. 将 DynamoDB 表更改为使用按需容量模式。
解析
正确答案是 A. 将 DynamoDB 表更改为使用按需容量模式。解释:尽管该公司为其 DynamoDB 表配置了 1000 个 RCU 和 500 个 WCU,但在突发流量高峰期间仍会出现限流错误。这表明其配置的容量不足以应对不可预测的工作负载,从而导致用户体验不佳(出现错误页面)。为什么方案 A 是最佳选择:按需容量模式DynamoDB 会根据流量自动扩展读/写容量,无需手动进行容量规划。在流量突然激增期间不会进行限流(除非流量超过 DynamoDB 的内部突发限制,而这些限制非常高)。适用于不可预测的工作负载,经济高效。按请求付费(低流量期间不会浪费容量)。消除节流错误由于该应用程序使用最终一致性读取(消耗的 RCU 是强一致性读取的一半),按需模式即使在高峰期也能确保足够的容量。其他选项为何错误:B. 创建 DynamoDB 只读副本以水平扩展读取流量 DynamoDB 不支持只读副本(与 RDS 不同)。全局表可以跨区域复制数据,但它们用于灾难恢复/多区域访问,而不是读取扩展。DynamoDB Accelerator (DAX) 可以缓存读取操作,但无法解决容量不足导致的限速问题。C. 购买 1000 个 RCU 和 500 个 WCU 的 DynamoDB 预留容量。预留容量可以为可预测的工作负载节省成本,但无法应对突发高峰(如果流量超过预置容量,仍然会受到限速)。如果大部分时间交通流量都很低,那就是浪费钱。D. 配置应用程序以对 DynamoDB 查询使用强一致性读取会加剧问题。强一致性读取会消耗 2 倍的 RCU(与最终一致性相比),从而增加被限制的可能性。没有解决根本原因(高峰期容量不足)。应对不可预测的 DynamoDB 工作负载的最佳实践:使用按需容量模式,让 DynamoDB 自动扩展。如果使用配置模式,则实现自动扩展(但其扩展速度会有所延迟,因此仍可能出现限速)。优化查询(使用批量操作、投影、DAX 缓存)。除非绝对必要,否则避免强一致性读取(它们会使 RCU 消耗翻倍)。结论:方案 A 是最有效、最简单的解决方案,因为它:通过自动扩展容量消除限速。无需人工干预(与预置模式下的自动扩展不同)。对于不可预测的流量来说,成本效益高(只需为实际使用的资源付费)。避免选择选项 B、C 和 D(它们要么不能解决问题,要么会使问题变得更糟)。