gpt4 book ai didi

amazon-kinesis - 为什么在关闭分片时需要在 Amazon Kinesis 流上设置检查点?

转载 作者:行者123 更新时间:2023-12-05 01:00:49 30 4
gpt4 key购买 nike

将分片拆分为 2 个子分片时,父分片将关闭。当发生这种情况时,期望记录处理器(此处使用 KCL)将检查点,如以下 KCL 源代码所示:

try {
recordProcessor.shutdown(recordProcessorCheckpointer, reason);
String lastCheckpointValue = recordProcessorCheckpointer.getLastCheckpointValue();
if (reason == ShutdownReason.TERMINATE) {
if ((lastCheckpointValue == null)
|| (!lastCheckpointValue.equals(SentinelCheckpoint.SHARD_END.toString()))) {
throw new IllegalArgumentException("Application didn't checkpoint at end of shard "
+ shardInfo.getShardId());
}
}

问题是:
  • 这个检查站是必不可少的吗?
  • 如果记录处理器不检查点并吸收异常会发生什么?

  • 我问的原因是因为在我的用例中,我想确保流中的每条记录都已处理到 s3,现在如果分片关闭,可能还有尚未刷新的项目,因此我想确保他们会反感子碎片的新消费者/ worker ?

    如果我检查点,他们就不会生气。

    有任何想法吗?

    提前谢谢。

    最佳答案

    项目不会在分片之间移动。重新分片后,新记录放入新分片,但旧记录永远不会从父分片转移,也不会再向(现已关闭)父分片添加新记录。即使在父分片关闭后,数据仍会在其正常的 24 小时生命周期中保留在父分片中。您的记录处理器只有在到达父分片数据的末尾后才会关闭。

    http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-using-sdk-java-after-resharding.html

    顺便说一句,您可能知道 SDK API 很困难,而且客户端库也好不到哪里去。试试连接器库,它是一个更好的 API,包括一个 S3 归档应用程序的示例。

    https://github.com/awslabs/amazon-kinesis-connectors

    关于amazon-kinesis - 为什么在关闭分片时需要在 Amazon Kinesis 流上设置检查点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28949142/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com