Q13 — AWS SAA-C03 第16章

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

Q1213. 一家公司正在构建一款无服务器应用程序,用于处理来自移动应用的大量数据。该应用程序使用 AWS Lambda 函数处理数据,并将数据存储在 Amazon DynamoDB 表中。公司需要确保应用程序能够从故障中恢复并继续处理数据而不会丢失任何记录。哪种解决方案可以满足这些要求?

正确答案: A. 配置 Lambda 函数,使其使用带有 Amazon Simple Queue Service (Amazon SQS) 队列的死信队列。配置 Lambda 以重试死信队列中的失败记录。通过实施指数退避算法来使用重试机制。

解析

为了确保无服务器应用程序能够从故障中恢复并继续处理数据而不丢失任何记录,最合适的解决方案是:A. 配置 Lambda 函数,使其使用带有 Amazon Simple Queue Service (Amazon SQS) 队列的死信队列。配置 Lambda 以重试死信队列中的失败记录。通过实施指数退避算法来使用重试机制。分析:使用 Amazon SQS 的死信队列 (DLQ):故障处理:当 Lambda 函数无法处理记录时,该记录会被发送到死信队列 (DLQ)。Amazon SQS 是一项完全托管的消息队列服务,可用作 DLQ 来存储这些失败的记录。消息保留:SQS 会将消息保留一段可配置的时间(最多 14 天),以便您稍后重试处理这些记录。采用指数退避算法的重试机制:指数退避:实施指数退避重试算法有助于避免系统因快速连续的重复尝试而过载。这种方法会以指数方式增加重试之间的延迟,使系统有时间从瞬时故障中恢复。可靠性:通过将 DLQ 与 SQS 和指数退避重试机制相结合,您可以确保应用程序能够从故障中恢复并继续处理数据,而不会丢失任何记录。为什么其他选择不适合:B.配置 Lambda 函数以从 Amazon Data Firehose 读取记录并在发生故障时重播记录:Firehose 设计:Amazon Kinesis Data Firehose 旨在将流数据传输到 Amazon S3、Amazon Redshift 或 Amazon Elasticsearch Service 等目标。它不适用于在 Lambda 函数处理失败时重放记录。缺乏直接重试机制:Firehose 不提供在 Lambda 处理上下文中重试失败记录的内置机制。C.使用 Amazon OpenSearch Service 存储失败记录并从那里重试:不合适的用例:Amazon OpenSearch 服务(原名 Elasticsearch)主要用于搜索和分析,而不是用于存储和重试 Lambda 函数的失败记录。复杂性:使用 OpenSearch 实现重试机制会给解决方案增加不必要的复杂性,这不符合此服务的预期用例。D. 使用 Amazon Simple Notification Service (Amazon SNS) 存储失败记录并从 SNS 主题重试:SNS 设计:Amazon SNS 是一项完全托管的消息传递服务,适用于应用程序到应用程序 (A2A) 和应用程序到个人 (A2P) 通信。它不适用于存储和重试 Lambda 函数的失败记录。缺乏重试消息保留:SNS 主题不会为重试目的保留消息;它们旨在立即传递给订阅者。总之,选项 A 通过使用 Amazon SQS 的死信队列并实施指数退避重试机制,为处理无服务器应用程序中的故障提供了一种强大而可靠的解决方案。