Q52 — AWS SAA-C03 第17章

第 52/89 题 | ← 返回第17章

Q1352. 一家公司使用 Amazon Kinesis Data Streams 和 AWS Lambda 函数处理流数据。这些流数据来自连接到互联网的设备。该公司正面临扩展性问题,需要实施分片级控制和自定义检查点机制。哪种解决方案能在满足这些要求的同时,将延迟降到最低?

正确答案: C. 在运行于 AWS Fargate 上的 Amazon ECS 容器中运行 Lambda 函数代码。修改代码以使用 Kinesis 客户端库 (KCL)。

解析

正确答案是 C。在运行于 AWS Fargate 上的 Amazon ECS 容器中运行 Lambda 函数代码。修改代码以使用 Kinesis 客户端库 (KCL)。解释:要求如下:分片级控制(能够管理每个分片的数据处理方式)。自定义检查点(手动控制流中的进度跟踪)。最低延迟(处理流式数据时的延迟最小)。为什么选项 C 正确:Kinesis客户端库(KCL)提供:分片级控制:KCL 允许应用程序处理来自各个分片的数据,从而实现对并行性和负载分配的细粒度控制。自定义检查点:KCL 允许您手动提交检查点(而不是依赖 Lambda 的自动检查点机制),从而确保精确一次处理语义。低延迟:在 AWS Fargate(无服务器容器)中运行基于 KCL 的应用程序,避免了 Lambda 冷启动的开销,并提供稳定的性能。其他选项错误的原因:A. 将 Kinesis 数据流连接到 Amazon Kinesis Data Firehose S3 Lambda(S3 事件通知)错误:高延迟:Firehose 会先将数据分批处理,然后再将其发送到 S3,从而引入延迟。缺乏分片级控制:Firehose 抽象化了分片管理。无需自定义检查点:Firehose 会自动处理检查点。B. 在 Kinesis 和 Lambda 之间使用 SQS 标准队列错误:无法进行分片级控制:SQS 将消息与 Kinesis 分片解耦,导致分片上下文丢失。无法进行自定义检查点:Lambda 的 SQS 集成会自动处理检查点。延迟更高:引入了额外的跳转(Kinesis、SQS 和 Lambda)。D. 在 Kinesis 和 Lambda 之间使用 SQS FIFO 队列(并配置并发)错误:无法进行分片级控制:FIFO 队列不保留分片信息。无法自定义检查点:Lambda 的 SQS 集成会自动处理检查点。延迟较高:FIFO 队列强制执行顺序,会增加延迟(即使比 Firehose 的延迟小)。关键考虑因素:Lambda 的局限性:Lambda 自动进行检查点设置(无需自定义控制)。没有直接的分片级处理(Lambda 从分片读取数据,但不能管理分片)。冷启动可能会引入延迟。KCL的优势:以长时间运行的进程运行(无需冷启动)。对分片分配和检查点进行显式控制。最适合低延迟、精确一次处理需求。正确架构(选项 C):Kinesis Data Streams (KCL) 应用程序在 Fargate 上运行KCL 工作进程处理来自分配分片的数据。自定义检查点确保手动跟踪进度。Fargate 提供可扩展、低延迟的执行。结论:选项C是唯一满足所有要求的方案:分片级控制(通过 KCL)。自定义检查点(手动 KCL 检查点)。延迟最低(Fargate 避免了 Lambda 冷启动)。其他选项由于延迟较高、缺乏分片控制或没有自定义检查点而失败。