Flink 至少一次无检查点处理

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

在没有检查点的情况下从 kafka 消费时是否可以实现至少一次处理保证? 接收器接受重复的消息。 这里唯一的要求是不丢失数据。 就像当消费者从 kafka 轮询记录并且在没有完全处理的情况下失败时,那么应该重播该记录。 有没有一种方法可以在不启用检查点的情况下实现?

手动提交偏移量可能是一种方法,但不确定是否还有其他更好的方法来做到这一点。

从 flink 文档中找到这个:

只有当源参与快照机制时,Flink 才能保证一次状态更新为用户定义的状态源 flink 文档:https://nightlies.apache.org/flink/flink-docs-release-1.2/dev/connectors /guarantees.html这是否意味着我们可以在没有检查点的情况下至少实现一次?我没有找到至少一次处理的任何具体要求。

apache-kafka apache-flink streaming
2个回答
0
投票
不,Flink 的所有处理保证(除了 NONE 之外)都依赖于检查点和保存点的快照机制。


0
投票
不是开箱即用的解决方案 - 如果源数据和接收器数据之间存在良好的相关性,您可以持续验证 Kafka 主题偏移量和接收器事件的数量,并在通过更改偏移量建立间隙时从源重新传输事件配置。

https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/connectors/datastream/kafka/#starting-offset

https://medium.com/@mitch_datorios/first-time-kafka-flink-integration-stream-processing-insights-b55e0a4858dd

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