1.概述
Flink 的 Checkpoint 是用来实现容错性的机制,通过定期保存任务的状态,以便在发生故障时能够从最近一次的 Checkpoint 恢复任务的状态。Checkpoints 通常会保存一份任务的快照,并在需要时用于恢复。
关于 Checkpoint 导致下游 Kafka 数据增多的情况,有一些可能的原因:
-
Exactly-Once 语义
: Flink 支持 Exactly-Once 语义,这意味着在进行 Checkpoint 时,Flink 会确保每个事件都被处理一次且仅一次。为了实现这一目标,Flink 需要确保在发生故障时,可以从最近一次的 Checkpoint 恢复到一致状态。这可能导致一些数据的重放,从而在下游 Kafka 中看到数据的增多。 -
异步提交 Checkpoint
: Flink 允许异步提交 Checkpoint,这意味着在进行 Checkpoint 时,任务可以继续处理新的数据,而不需要等待所有数据都被确认。这样可能导致在发生故障时,一些数据需要重播,因为它们可能在 Checkpoint