关于偏移量和EXACTLY_ONCE的疑问
来源:11-9 Flink对接Kafka数据分析结果入Redis

小欧的哈士奇
2021-12-05
老师,我按照您课上的做法,配置了enable.auto.commit=false之后,到kafka上通过 ./kafka-consumer-groups.sh 看偏移量,发现偏移量还是提交了,请问是没有生效吗?而且似乎课上的做法,恢复redis后重启flink,并没有指定从哪里恢复state,所以能够重新消费到那四条数据,只是存粹的因为这四条数据的漂移量还没提交到zookeepr吗?如果是的话,提交offset的周期内的数据应该都会重复消费吧?而不是sink失败的数据才会消费,那应该就不算验证了EXACTLY_ONCE吧?反复尝试了好久,麻烦老师帮忙看一下哈
写回答
1回答
-
Michael_PK
2021-12-06
1)恢复redis后重启flink,因为配置了chk,默认自动就会从chk中去恢复的,因为offset是作为operatorstate自动存储了
2)enable.auto.commit=false这个参数为false,因为是不会提交offset的,你用命令应该是看不到的,你这个在详细测试下,看看是哪里的问题
3)EXACTLY_ONCE完整语义要三个方面都OK才行,a是数据源比如kafka,这个是通过offset来保证,b是transformation,这个flink自己就能处理,c是sink,sink就是通过类似upsert的方式来完成的。只要kafka的offsetOK就OK,offset是flink自动管理到state中
00
相似问题