lambda 函数如何知道已获取哪条 Kinesis 记录?

问题描述 投票:0回答:1

我有一个 lambda 函数,它消耗来自 Kinesis 流的事件。

当 lambda 到流的分片中获取记录时,它如何知道哪些记录已经被获取以避免重复记录?

amazon-web-services aws-lambda amazon-kinesis
1个回答
0
投票

在 AWS Lambda 中,当处理来自 Kinesis 流的记录时,Lambda 服务会自动管理处理状态。成功处理的每条记录都会得到确认,这意味着 Lambda 知道它已被处理并且不会重试。 Lambda 使用检查点和迭代器的组合来跟踪它在处理流时停止的位置。

以下是其工作原理的总体概述:

  1. 迭代器:当 Lambda 从 Kinesis 流中读取记录时,它使用迭代器来指示它在流中的位置。该迭代器指向流中的特定位置。

  2. 检查点:成功处理记录后,Lambda 会在流中已处理记录的位置设置检查点。此检查点由 Lambda 在内部完成,开发人员无法直接看到或配置。

  3. 重试:如果 Lambda 函数无法处理记录(例如由于错误或超时),Lambda 将自动重试处理该记录。它通过使用流中的检查点位置来重新读取从该点开始的记录来实现此目的。

  4. 并发:Lambda 可以同时处理 Kinesis 流的多个分片。每个分片都有自己的迭代器和检查点,因此 Lambda 可以同时处理来自多个分片的记录而不会产生干扰。

  5. 缩放:Lambda 根据传入的记录流自动缩放。随着记录传入速率的增加,Lambda 可以自动启动更多实例来处理负载,每个实例都有自己的一组迭代器和检查点。

总体而言,Lambda 在处理 Kinesis 流中的记录时消除了管理状态的大部分复杂性,使开发人员能够专注于为每条记录编写处理逻辑,而无需担心管理迭代器或检查点本身。

© www.soinside.com 2019 - 2024. All rights reserved.