微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Kinesis,KCL中流中的最新位置如何工作?

如何解决在Kinesis,KCL中流中的最新位置如何工作?

我们正在基于Kinesis / DynamoDB流构建服务,并且关于检查点的行为存在以下问题。

我们有一个以以下配置withInitialPositionInStream (InitialPositionInStream.LATEST)开头的工作程序,并且KCL应用程序的名称始终相同。

我们通过重新打开和关闭工作程序观察到的是,它没有从流的末尾开始消耗,因为我们有一个滞后指标,我们看到当打开工作程序时,消耗滞后是小时,因为它们是我们目前生成的消息,因此我们希望它少于1秒。

  • 这是预期的行为吗?
  • 我们误解了LATEST的工作原理吗?

非常感谢您。

解决方法

作为InitialPositionInStream状态的文档,

用于指定流中新应用程序应从其开始的位置。 在初始应用程序引导期间(当分片或其父级不存在检查点时)将使用此方法。

因此,它仅在最初的新应用程序引导期间使用,对于LATEST,它在最近的数据记录之后开始。但是仅当分片或其父级不存在检查点时。

因此,如果您先关闭工作人员然后再将其重新打开,则预计它不再从LATEST开始,而是从分片的最后一个检查点序列号开始。

KCL不会自动检查站,因此,如果您的工作人员开始时有几个小时的滞后时间,则可能意味着您的检查站太少了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。