Flink 源码分析之 - 如何保存 offset

本文详细介绍了在启用了Checkpointing的Flink中,如何在检查点完成后将offset提交给Kafka或ZooKeeper。主要涉及FlinkKafkaConsumerBase的notifyCheckpointComplete方法及其调用链,包括offset的提交流程,以及在offset提交过程中可能出现的情况和处理方式。
摘要由CSDN通过智能技术生成

Flink对Offset的管理,有两种方式:

1.Checkpointing disabled 完全依赖于kafka自身的API

2.Checkpointing enabled 当checkpoint做完的时候,会将offset提交给kafka or zk

本文只针对于第二种,Checkpointing enabled



FlinkKafkaConsumerBase中的 notifyCheckpointComplete

 

@Override

//当checkpoint完成的时候,此方法会被调用

public final void notifyCheckpointComplete(long checkpointId) throws Exception {

if (!running) {

LOG.debug("notifyCheckpointComplete() called on closed source");

return;

}

final AbstractFetcher<?, ?> fetcher = this.kafkaFetcher;

if (fetcher == null) {

LOG.debug("notifyCheckpointComplete() called on uninitialized source");

return;

}

if (offsetCommitMode == OffsetCommitMode.ON_CHECKPOINTS) {

// only one commit operation must be in progress

if (LOG.isDebugEnabled()) {

LOG.debug("Committing offsets to Kafka/ZooKeeper for checkpoint " + checkpointId);

}

try {

final int posInMap = pendingOffsetsToCommit.indexOf(checkpointId);

if (posInMap == -1) {

LOG.warn("Received confirmation for unk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值