AWS Lambda和Kinesis客户端库(KCL)

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

为什么我发现与AWS Lambda一起使用KCL的例子很少。https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html

它确实提供了一种很好的实现,可以跟踪您在流上的位置(检查点)。

我想使用KCL作为消费者。我的设置是带有多个分片的流。在每个分片上都消耗Lambda。我想在Lambda中使用KCL来跟踪迭代器在分片上的位置。

为什么我找不到在Lambda中使用KCL的人。这是什么问题?

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

我不为AWS工作,所以显然我不知道为什么没有文档的确切原因,但这是我的想法。

首先,要运行KCL,需要运行JVM。这意味着您只能使用Java在Lambda中执行此操作,因为(据我目前的了解),无法将其他SDK,运行时等导入Lambda。您在安装时选择了一个运行时。因此,他们已经只为Java lambda创建文档。

现在出于更多技术原因。您需要考虑lambda在做什么,然后再考虑KCL在做什么。

让我们从Lambda开始。 Lambda是临时设计的。他们可以(并且将)全天不断旋转和下降。当然,您可以设置一个变暖方案,以使lambda停留下来,但是它们仍然具有短暂的特性,这完全不受您的控制。换句话说,AWS控制lambda何时以及是否保持活动状态,以及确切的方法不会发布。因此,您只能尝试保持温暖。

KCL做什么?

  • 连接到流
  • 枚举分片
  • 与其他工作人员的分片关联(如果有)
  • 为它管理的每个分片实例化记录处理器
  • 从流中提取数据记录
  • 将记录推送到相应的记录处理器
  • 检查点处理的记录
  • 当工作程序实例计数更改时,使分片工作人员关联平衡
  • 拆分或合并分片时,使分片-工人之间保持平衡

阅读完此列表后,现在让我们回到lambda的短暂性质。这意味着,每当lambda上升或下降时,所有这些工作都需要发生。这包括分片和工作程序之间的完全重新平衡,从流中提取数据记录,设置检查点等。您还需要确保旋转的Lambda不会超过分片的数量。一文不值(最好不要使用,也不要在最坏的情况下注册为工作人员,这可能会导致丢失消息。请考虑这种情况下的重新平衡。)

好的,从技术上讲,您可以将其取下吗?如果您使用Java并竭尽所能来保暖lambda,那么从技术上讲,这是有可能的。但是回到您的问题。 为什么没有文档?我永远不想说“从不”,但是总的来说,Lambdas具有短暂的特性,并不是KCL的最佳用例。而且,如果您不深入了解KCL的工作原理,您可能会错过一些东西,从而导致重新平衡问题,并有可能导致消息丢失。

如果这里有任何不正确的地方,请告诉我,以便我进行更新。谢谢,希望对您有所帮助。

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