第022题 - sap

凯撒大帝和闰年

图片来源和版权:Classical Numismatic Group, Inc. Wikimedia

说明:公元前46年,凯撒大帝改革了历法系统。在亚历山大天文学家Sosigenes的建议下,儒略历每四年包含一次闰日,以解释地球一年略多于365天的事实。用现代术语来说,地球绕太阳运行一周所需的时间为365.24219个平太阳日。因此,如果历法的一年只有365天,那么每4年约差1天,最终7月(以凯撒本人的名字命名)将出现在北半球的冬季。通过采用每四年增加一天的闰年制度,儒略历和太阳年的差异就能降低很多。1582年,格列高利十三世进一步微调,提出以00结尾的年份不应出现闰日,除非能被400整除的公历。这一公历系统在现代广泛使用。当然,地月系统中的潮汐摩擦会减慢地球的自转速度,并逐渐使一天每世纪延长约1.4毫秒。这意味着大约400万年后,像今天这样的闰日将不再必要。这枚罗马银币为第纳尔,描绘了凯撒大帝(左)和罗马爱神维纳斯。

sap022-202412030048550

问题翻译 (Question Translation)

English: A software company has deployed an application that consumes a REST API by using Amazon API Gateway, AWS Lambda functions, and an Amazon DynamoDB table. The application is showing an increase in the number of errors during PUT requests. Most of the PUT calls come from a small number of clients that are authenticated with specific API keys. A solutions architect has identified that a large number of the PUT requests originate from one client. The API is noncritical, and clients can tolerate retries of unsuccessful calls. However, the errors are displayed to customers and are causing damage to the API’s reputation. What should the solutions architect recommend to improve the customer experience?

中文翻译: 一家软件公司已经部署了一个应用程序,该程序使用 Amazon API Gateway、AWS Lambda 函数和 Amazon DynamoDB 表来消耗 REST API。在 PUT 请求中,应用程序的错误数量正在增加。大多数 PUT 调用来自少数经过特定 API 密钥身份验证的客户端。一位解决方案架构师发现大量 PUT 请求来自一个客户端。该 API 是非关键的,客户端可以容忍对未成功调用的重试。但是,错误被显示给客户,并且正在损害 API 的声誉。解决方案架构师应该推荐什么来改善客户体验?

选项分析 (Answer Analysis)

选项 A

Implement retry logic with exponential backoff and irregular variation in the client application. Ensure that the errors are caught and handled with descriptive error messages. 在客户端应用程序中实施带有指数退避和不规则变化的重试逻辑。确保捕获错误并用描述性错误消息处理它们。

分析:

  • 优点:
    • 指数退避可以有效降低重试次数,以减轻负载并避免过度请求。
    • 提供描述性错误消息可以帮助客户了解问题。

**不适用:**由于无法修改客户的代码,此选项不可行。


选项 B

Implement API throttling through a usage plan at the API Gateway level. Ensure that the client application handles code 429 replies without error. 通过 API Gateway 级别的使用计划实施 API 限流。确保客户端应用程序能够处理 429 状态码的回复而不出错。

分析:

  • 优点:
    • 限流可以有效控制来自单个客户端的请求量,减少错误。
    • 能够保护 API 的稳定性。

**适用性:**此选项不会修改客户代码且能有效减少错误。


选项 C

Turn on API caching to enhance responsiveness for the production stage. Run 10-minute load tests. Verify that the cache capacity is appropriate for the workload. 开启 API 缓存以提高生产阶段的响应能力。运行 10 分钟的负载测试。验证缓存容量是否适合负载。

分析:

  • 优点:
    • API 缓存可提高响应速度和减少对后端服务的请求。

缺点:

  • 然而,对于 PUT 请求,缓存不会帮助提高成功率,因为 PUT 请求通常会对数据进行修改,而不是仅仅获取数据。

**不适用:**不符合当前的需求场景。


选项 D

Implement reserved concurrency at the Lambda function level to provide the resources that are needed during sudden increases in traffic. 在 Lambda 函数级别实施保留并发,以提供在流量激增时所需的资源。

分析:

  • 优点:
    • 保留并发确保 Lambda 函数在流量高峰期间能得到所需的资源。

缺点:

  • 但是,如果实际问题来自于特定客户端的请求而不是并发限制,那么此方案可能无法解决问题。

**不适用:**可能未能针对具体问题进行优化。


最佳答案 (Correct Answer)

答案:B


详细解析 (Detailed Explanation)

1. 为什么选择 B?

  • 有效控制:
    • 通过限流机制,可以有效地减少特定客户端发起的请求数量,从而减少错误的发生率,并保护 API 的稳定性。

2. 为什么不选择其他选项?

  • **A (重试逻辑):**由于无法修改客户的代码,因此不可行。
  • **C (API 缓存):**不适合 PUT 请求,不会改善错误问题。
  • **D (保留并发):**虽然可以确保资源,但不能有效解决请求失败的问题。

总结 (Summary)

选择 B 是当前状况下最佳的解决方案,能够有效降低错误率并改善客户体验。

如果还有其他问题,请继续询问,我将会以相同格式进行回复!