Q72 — AWS SAA-C03 第13章
第 72/100 题 | ← 返回第13章
Q972. 一家公司在 AWS 上托管其订单处理系统.该架构由前端和后端组成.前端包括 Auto-Scaling 组中的应用程序负载均衡器 (ALB) 和 Amazon EC2 实例.后端包括 EC2 实例和 Amazon RDS MySQL 数据库.为了防止订单不完整或丢失,公司希望确保订单状态始终得到保存.公司希望确保每个订单最终都将被处理,即使在停机或暂停之后.每个订单都必须处理一次.哪种解决方案可以满足这些要求?
- A. 为后端创建一个 Auto Scaling 组和一个 ALB.在第二个可用区中为 RDS 数据库创建一个只读副本.更新后端 RDS 终端节点.
- B. 为后端创建一个 Auto Scaling 组和一个 ALB.在 RDS 数据库前面创建一个 Amazon RDS 代理.更新后端 EC2 实例以使用 Amazon RDS 代理终端节点.
- C. 为后端创建一个 Auto Scaling 组.配置后端 EC2 实例以使用来自 Amazon Simple Queue Service (Amazon SQS) FlFO 队列的消息.为 SQS 队列配置一个死信队列 (DLQ). ✓
- D. 创建一个 AWS Lambda 函数来替换后端 EC2 实例.将函数订阅到 Amazon Simple Notification Service (Amazon SNS) 主题.配置前端以将订单发送到 SNS 主题.
正确答案: C. 为后端创建一个 Auto Scaling 组.配置后端 EC2 实例以使用来自 Amazon Simple Queue Service (Amazon SQS) FlFO 队列的消息.为 SQS 队列配置一个死信队列 (DLQ).
解析
正确答案是:C. 为后端创建一个 Auto Scaling 组.配置后端 EC2 实例以使用来自 Amazon Simple Queue Service (Amazon SQS) FIFO 队列的消息.为 SQS 队列配置死信队列 (DLQ).解释:A. 为后端创建一个 Auto Scaling 组和一个 ALB.在第二个可用区中为 RDS 数据库创建一个只读副本.更新后端 RDS 终端节点.- 此解决方案无法满足确保每个订单仅处理一次的要求.只读副本可能不会立即收到更新,并且订单可能会被处理多次.B. 为后端创建一个 Auto Scaling 组和一个 ALB.在 RDS 数据库前面创建一个 Amazon RDS 代理.更新后端 EC2 实例以使用 Amazon RDS 代理终端节点.- 该解决方案也不能满足确保每个订单只处理一次的要求.RDS 代理不保证一次性处理.C. 为后端创建一个 Auto Scaling 组.配置后端 EC2 实例以使用来自 Amazon Simple Queue Service (Amazon SQS) FIFO 队列的消息.为 SQS 队列配置死信队列 (DLQ).- 这是正确的解决方案.通过使用 SQS FIFO 队列,您可以确保每个订单都只处理一次.死信队列将捕获任何未能处理的订单,让您可以调查并重新处理它们.D.创建一个 AWS Lambda 函数来替换后端 EC2 实例.将函数订阅到 Amazon Simple Notification Service (Amazon SNS) 主题.配置前端以将订单发送到 SNS 主题.- 此解决方案无法满足确保每个订单都只处理一次的要求.SNS 主题无法保证只处理一次,并且 Lambda 函数可能会针对同一订单被调用多次.综上所述,正确的方案是选项C,使用SQS FIFO队列和死信队列,保证每个订单都只处理一次,不会丢失订单.