AWS SAA 题库

点击卡片任意位置翻面查看正确答案与解析,也可以用键盘 切换题目。

第 254 / 1018 题单选题

一个公司拥有一个电子商务结账工作流,将订单写入数据库并调用服务来处理支付。用户在结账过程中遇到超时问题。当用户重新提交结账表单时,会为相同期望的交易创建多个唯一订单。 解决方案架构师应该如何重构这个工作流以防止创建多个订单?

  • A. 配置 Web 应用程序发送订单消息到 Amazon Kinesis Data Firehose。设置支付服务从 Kinesis Data Firehose 检索消息并处理订单。
  • B. 在 AWS CloudTrail 中创建规则,根据记录的应用程序路径请求调用 AWS Lambda 函数。使用 Lambda 查询数据库,调用支付服务,并传递订单信息。
  • C. 将订单存储在数据库中。发送包含订单号的消息到 Amazon Simple Notification Service (Amazon SNS)。设置支付服务轮询 Amazon SNS,检索消息并处理订单。
  • D. 将订单存储在数据库中。发送包含订单号的消息到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。设置支付服务检索消息并处理订单。从队列中删除消息。
第 254 / 1018 题正确答案 D
  • D. 将订单存储在数据库中。发送包含订单号的消息到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列。设置支付服务检索消息并处理订单。从队列中删除消息。

解析

在这种情况下,最适合的选择是 D。将订单存储在数据库中,然后将包含订单号的消息发送到 Amazon SQS FIFO 队列。支付服务可以按顺序处理这些订单消息。FIFO 队列确保按顺序处理消息,防止重复订单的创建。支付服务接收消息后,处理订单并删除消息,确保每个订单只会被处理一次,解决了重复订单的问题。

AI 解析

该题核心在于实现消息处理的幂等性,防止网络超时引发的重复提交。Amazon SQS FIFO队列通过消息去重ID(基于订单号)和严格一次处理机制,确保同一订单号的消息仅被消费一次。数据库存储订单后发送队列消息,支付服务处理时自动过滤重复请求,处理完成后删除队列消息,从系统设计层面消除重复订单的产生可能。其他方案或缺少消息去重机制(如Kinesis、SNS),或未直接关联订单处理流程(如CloudTrail)。