Q78 — AWS SAA-C03 第16章
第 78/100 题 | ← 返回第16章
Q1278. 一家公司在 Amazon EC2 实例上运行一个 Web 应用程序。该应用程序还使用 Amazon DynamoDB 表。该应用程序偶尔会生成 HTTP 500 错误。DynamoDB 表处于按需模式,其他应用程序使用该表没有任何问题。解决方案架构师希望在不中断 Web 应用程序的情况下解决 HTTP 500 错误。哪种解决方案可以满足这些要求?
- A. 配置 DynamoDB 以支持更大的写入请求,从而提高吞吐量。
- B. 启用 DynamoDB Streams 来监控表中的变化。
- C. 配置应用程序以使用指数退避和重试来查询表。 ✓
- D. 配置应用程序以使用强一致性读取。
正确答案: C. 配置应用程序以使用指数退避和重试来查询表。
解析
正确的解决方案必须能够解决由 DynamoDB 限流或瞬时故障导致的偶发性 HTTP 500 错误,同时最大程度地减少对应用程序的干扰。让我们评估一下每个选项:正确答案:C。配置应用程序以使用指数退避和重试来查询表。为什么选项 C 是最好的:处理节流和瞬态故障:当 DynamoDB 限制请求(由于按需模式下的突发容量限制)或遇到瞬时故障时,经常会发生 HTTP 500 错误。指数退避和重试会自动暂停并重试失败的请求,并增加延迟,从而减少重复节流的机会。无需 DynamoDB 配置:与调整写入容量(A)或启用流(B)不同,此解决方案只需要应用程序级别的更改。与按需模式配合使用:按需表会自动扩展,但突发流量高峰仍然可能导致限制。重试有助于平滑突发流量。低风险且无中断:不会影响使用同一个表的其他应用程序(与强一致性读取不同,强一致性读取会增加延迟)。其他选择为何失败:A.配置 DynamoDB 以支持更大的写入请求,从而提高吞吐量。没有必要:按需模式已根据流量自动扩展。对于读取密集型工作负载(可能导致 500 秒延迟),手动增加写入容量无关紧要。不解决重试问题:即使吞吐量更高,瞬时故障(例如网络问题)仍然需要重试。B.启用 DynamoDB Streams 来监控表中的更改。用例不匹配:DynamoDB Streams 用于捕获表更改(例如,用于触发器/分析),而不是用于错误处理。对 500 错误没有影响:不能防止或解决限制/重试。D.配置应用程序以使用强一致性读取。性能下降:强一致性读取会增加延迟和成本(2 倍 RCU 消耗与最终一致性读取相比)。无法修复节流:如果问题是限制(而不是陈旧数据),这不能解决 500 错误。主要比较:要求指数退避 (C)其他选项解决限制/500 错误(重试失败的请求)(A:不必要;B:无关紧要;D:无影响)对应用程序无干扰(仅更改代码)(A:可能无济于事;D:增加延迟)适用于按需模式(自动缩放+重试)(A:手动调整;B:无错误处理)结论:选项 C 是唯一的解决方案:自动重试失败的请求以处理限制。需要最少的更改(无需 DynamoDB 配置)。不会干扰使用该表的其他应用程序。最终答案:C