KCL不处理来自AWS kinesis流的三个分片中的两个分片的记录

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

我们有一个包含三个碎片的运动流,而我们的运动应用程序具有三个实例。我们可以看到记录已发布到我们所有的三个分片中,但是我们的运动学应用程序只能处理一个分片中的记录。听着另外两个碎片的工人正在不断睡觉。

一个分片的云监视指标,其中传出字节为零enter image description here

[4月28日之前,我们的运动学应用程序能够处理所有三个碎片的记录enter image description here

知道是什么原因造成的?

amazon-kinesis
1个回答
0
投票

Kinesis内部在读取其内部存储上的getRecords api调用上的记录时发生超时。当您的写入率很高时,可能会出现kinesis内部由于超时而无法获取所有新记录的情况。当您写入大量记录但读取速率低于默认的每秒1条时,通常会出现这种情况。 Kinesis guarantees将能够返回所有记录,当您的读取速率> = 1 getRecord / second(最大每秒5次)时,否则,分片迭代器的年龄会不断增加。注意-如果阅读速度较慢,则可以获取所有记录,但是如果分片迭代器使用年限很长,那就是收费。您落后了,您必须增加读取的频率,这将使您能够控制分片迭代器的年龄

分片迭代器年龄是一种度量标准,您可以在其中确定分片/流中的读取量落后于最新记录。如果您的迭代器使用期限为10小时,则表示您当前正在读取10个小时前写入分片的记录。

而且流也不是队列。您不能像在SQS(visibilityTimeout)中那样等待处理完成到检查点。您必须立即检查点,或者根本不需要检查点

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