首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片重标度后的Amazon动态复制数据

片重标度后的Amazon动态复制数据
EN

Stack Overflow用户
提问于 2018-11-07 01:32:50
回答 1查看 598关注 0票数 0

我们有以下情况:

  • 最初的10个碎片在流中,阅读器正在运行。
  • 我们通过控制台重新划分到20个碎片,我们的应用程序没有适当的逻辑来处理碎片终止。应用程序无法使用来自新碎片的数据。
  • 重新刻度到10个碎片,没有效果,消费者重新启动没有帮助
  • 3-4小时后,我们在处理器中部署了一个具有有效关闭代码的修复程序: @Override public void shutdown(ShutdownInput shutdownInput) { if(ShutdownReason.TERMINATE.equals(shutdownInput.getShutdownReason())) { try { shutdownInput.getCheckpointer().checkpoint(); } catch (InvalidStateException | ShutdownException e) { log.error("Checkpoint failed", e); } } }

因此,我们已经看到数据开始在处理器中流动。在后台表中,checkpoint字段的值被更新为SHARD_END。(但checkpointSubSequenceNumber=0和以前一样)。

大约24小时后,我们看到了数据,这是一天前开始通过我们的处理器再次(我确信)。GetRecords.IteratorAgeMilliseconds去了80M+。发送的数据一天前就已经被处理了(签入日志/等)。

,我们是不是搞砸了正确的关机碎片?,我们会在24小时后伪造收到这些数据吗?对这种行为有什么解释吗?

是的,租约表现在有30条记录: 20条用于碎片,10-29用于checkpoint=SHARD_END,10条用于后面的碎片。我已经删除了以前存在的0-10个碎片的10个记录,同时试图强制重新启动处理。我担心的是,lease_counter正在成长为死碎片。在这段时间里,作家并没有停下来。

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 22:44:21

因此,问题是:在正常记录处理之后没有检查点。默认情况下我们有最新的检查点。在我们开始使用reshard之前,我们从未想过可能会丢失一些数据(例如,在部署期间,如果在新实例启动之前将现有实例放下)。

关闭()时没有检查点。

AWS为v1和v2客户端提供了文档,但只描述了v1中的所有内容。因此,也要注意并检查v1的文档(这个https://github.com/aws-samples/amazon-kinesis-learning/blob/master/src/com/amazonaws/services/kinesis/samples/stocktrades/processor/StockTradeRecordProcessor.java解释得差不多了)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53182535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档