AWS Kinesis流检查点

5
我有一个应用程序,能够处理重复的Kinesis流记录。我们正在考虑如何处理失败的方法。以下是一个提出的方案:
如果在processRecords期间捕获了异常,则应用程序不会进行检查点。通过这样做,记录将再次发送,并随着下一批记录一起,间接执行重试。
所以我的问题是,在对Kinesis流进行检查点时,是否希望应用程序始终定期进行检查点?操纵检查点机制被认为是反模式吗?
谢谢
1个回答

12

我首先想澄清一些关于检查点的问题,这可能会改变你的看法。除非我严重误解了你的问题,否则它不是“操纵”检查点机制,而是“使用它的预期目的”。

  • 检查点实质上是一种机制,允许您从上一个检查点位置重新启动流处理(而不是在最早可用记录或“现在”处开始)。
  • 跳过检查点并不意味着记录将自动在下一批次中重试 - 您需要通过从错误之前的某个流位置重新启动记录处理器来处理异常(通常是“最后一个检查点”)。

总体而言,目标是使用Kinesis驱动有用的处理 - 通常重新处理重复记录并不有用(只会花费您的钱,支付给AWS)。检查点通常意味着减少浪费时间和金钱重新处理重复记录。

您可以基于时间(每X秒),基于记录(每Y条记录),每个批次,从不检查点,或者任何您想要的方式进行检查点 - 这完全取决于在故障情况下您能容忍多少浪费。

注意:请记住,检查点机制支持DynamoDB表格,因此进行过多的检查点会有一些小成本(确保您具有足够的表格吞吐量)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接