Q24 — AWS SAA-C03 第12章

第 24/100 题 | ← 返回第12章

Q824.解决方案架构师正在设计一个支付处理应用程序,该应用程序在跨多个可用区的私有子网中的 AWS Lambda 上运行.该应用程序使用多个 Lambda 函数,每天处理数百万笔交易.该架构必须确保应用程序不会处理重复支付.哪种解决方案可以满足这些要求?

正确答案: C. 使用 Lambda 检索所有到期付款.将到期付款发布到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列.配置另一个 Lambda 函数来轮询 FIFO 队列并处理到期付款.

解析

满足要求的解决方案是选项 C:使用 Lambda 检索所有到期付款.将到期付款发布到 Amazon Simple Queue Service (Amazon SQS) FIFO 队列.配置另一个 Lambda 函数来轮询 FIFO 队列并处理到期付款.通过使用 Amazon SQS FIFO 队列,您可以确保消息(到期付款)按照接收顺序进行处理. FIFO(先进先出)队列保证了消息处理的顺序,这对于防止重复支付非常重要.初始 Lambda 函数检索到期付款,然后将其发布到 SQS FIFO 队列.第二个 Lambda 函数配置为轮询 FIFO 队列并处理到期付款.第二个 Lambda 函数可以处理付款. 更新必要的记录并执行任何所需的操作.选项 A 建议使用带有事件通知的 Amazon S3 存储桶来调用另一个 Lambda 函数.虽然这种方法可行,但它无法提供与 SQS FIFO 队列相同级别的排序保证. S3 存储桶中事件的顺序无法保证,这可能会导致处理重复付款.选项 B 建议使用 Amazon SQS 标准队列.虽然 SQS 标准队列可靠且可扩展,但它们不提供 SQS FIFO 队列所提供的严格排序保证.使用标准队列可能会导致无序处理,从而可能导致重复付款处理.选项 D 建议将到期付款存储在 Amazon DynamoDB 表中并配置流以调用另一个 Lambda 函数.虽然 DynamoDB 流可用于捕获表中的更改并对其做出反应,但它们不提供与 SQS FIFO 队列相同级别的排序保证.如果使用没有额外逻辑来防止重复的流,则可以处理重复支付.因此,选项 C 是最合适的解决方案,因为它使用 SQS FIFO 队列来确保处理顺序并防止在 AWS Lambda 上运行的支付处理应用程序中出现重复支付.