Q81 — AWS SAA-C03 第16章

第 81/100 题 | ← 返回第16章

Q1281. 一家公司提供一项生成事件数据的服务。该公司希望使用 AWS 在收到事件数据时对其进行处理。数据写入时必须遵循特定的顺序,并且在整个处理过程中必须保持该顺序。该公司希望实施一种能够最大程度降低运营开销的解决方案。解决方案架构师应如何实现这一目标?

正确答案: A. 创建一个 Amazon Simple Queue Service (Amazon SQS) FIFO 队列来保存消息。设置一个 AWS Lambda 函数来处理来自该队列的消息。

解析

正确的解决方案必须确保事件数据按照接收的准确顺序进行处理,同时最大限度地降低运营开销。让我们评估一下每个选项:正确答案:A. 创建一个 Amazon Simple Queue Service (Amazon SQS) FIFO 队列来保存消息。设置一个 AWS Lambda 函数来处理来自该队列的消息。为什么选项 A 是最佳选择:严格的消息排序:SQS FIFO 队列保证先进先出 (FIFO) 传送,确保消息按照发送的准确顺序进行处理。无服务器且低开销:AWS Lambda 会自动随队列扩展,并且不需要基础设施管理(与 EC2 或 ECS 不同)。内置重试和死信队列(DLQ):如果处理失败,Lambda 会重试该消息(默认可配置最多重试 2 次),并且失败的消息可以移动到 DLQ 进行分析。无需其他组件:与基于 SNS 的解决方案(B、D)不同,此方法不需要额外的订阅或主题配置。其他选择为何失败:B. 创建一个 Amazon SNS 主题,用于传递包含待处理负载的通知。将 AWS Lambda 函数配置为订阅者。无订购保证:SNS 会并行向多个订阅者(如果已配置)发送消息,如果同时发生多个调用,Lambda 可能会乱序处理这些消息。C. 创建一个 Amazon SQS 标准队列来保存消息。设置一个 AWS Lambda 函数来独立处理来自该队列的消息。标准队列排序不保证:SQS 标准队列提供至少一次传送,但不保证顺序,因此不适合顺序处理。D.创建一个 Amazon SNS 主题,用于传递包含待处理负载的通知。将 Amazon SQS 队列配置为订阅者。SNS+SQS默认不保证顺序:虽然 SNS 可以散布到 SQS 队列,但多个消费者(例如 Lambda 或 EC2)可能会无序处理消息,除非使用 FIFO 队列(这需要 SNS FIFO 主题,而不是标准 SNS)。主要比较:要求SQS FIFO + Lambda (A)其他选项维护消息顺序(FIFO 保证)(B:SNS 并行;C:标准 SQS;D:SNS+SQS 无顺序)低运营开销(无服务器,自动扩展)(B/D:SNS 增加了复杂性;C:无顺序)内置重试逻辑(Lambda 重试失败的消息)(B/D:需要手动重试处理;C:无需重试顺序)结论:选项 A 是唯一的解决方案:保证消息排序(FIFO 队列)。最大限度地减少运营开销(无服务器 Lambda 处理)。妥善处理故障(重试和 DLQ 支持)。最终答案:A