背景
我們知道在日常非flink場(chǎng)景中消費(fèi)kafka主題時(shí),我們只要指定了消費(fèi)者組,下次程序重新消費(fèi)時(shí)是可以從上次消費(fèi)停止時(shí)的消費(fèi)偏移開始繼續(xù)消費(fèi)的,這得益于kafka的_offset_主題保存的關(guān)于消費(fèi)者組和topic偏移位置的具體偏移信息,那么flink應(yīng)用中重啟flink應(yīng)用時(shí),flink是從topic的什么位置開始消費(fèi)的呢?
flink對(duì)kafka主題消費(fèi)偏移的處理
首先,當(dāng)flink應(yīng)用第一次啟動(dòng)時(shí),flink默認(rèn)會(huì)使用程序中設(shè)置的偏移位置(比如正常是從topic的最新偏移位置)開始消費(fèi)的,那么當(dāng)flink從故障中恢復(fù)過來時(shí),flink又是從topic的什么位置開始消費(fèi)消息的呢?其實(shí)這里要分情況:
情況一:假設(shè)flink中是開啟了檢查點(diǎn)配置的,也就是檢查點(diǎn)中會(huì)保存著故障前的topic消費(fèi)偏移,那么flink從故障中恢復(fù)后會(huì)從檢查點(diǎn)中保存的topic偏移位置開始消費(fèi),記住是從檢查點(diǎn)中保存的消費(fèi)偏移位置開始消費(fèi),不是從崩潰前一刻的消費(fèi)偏移開始消費(fèi)
情況二: flink沒有開啟檢查點(diǎn)的配置,也就是flink沒有保存任何包括kafka 主題的偏移位置之類的狀態(tài)信息,那么重新啟動(dòng)flink時(shí)它的表現(xiàn)和第一次啟動(dòng)flink的表現(xiàn)一樣,也就是由程序中設(shè)置的偏移位置決定(比如正常是從topic的最新偏移位置)開始消費(fèi)文章來源:http://www.zghlxwxcb.cn/news/detail-571970.html
其實(shí),第一種情況讓人容易理解,比較讓人難以理解的是情況二,我們很容易的自以為flink 會(huì)從它上一次消費(fèi)到的偏移位置開始消費(fèi),畢竟kafka的_offset__主題中保存著消費(fèi)者組和各個(gè)topic的消費(fèi)偏移的信息。但是結(jié)論是,flink沒有這么做,他的行為會(huì)和首次啟動(dòng)時(shí)的一樣。文章來源地址http://www.zghlxwxcb.cn/news/detail-571970.html
到了這里,關(guān)于flink如何初始化kafka數(shù)據(jù)源的消費(fèi)偏移的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!