记录一次Flink消费Kafka空转,无法拉取消息,checkpoint也能成功,但是位置点却不提交的异常处理

文章讲述了在使用Flink消费Kafka消息时遇到的空转问题,即Flink能正常运行但无法接收到消息。经过一系列排查,发现是由于使用的Kafka客户端版本(0.8)与线上Kafka集群版本(2.3.0)不匹配导致。尽管checkpoint正常,但没有错误日志帮助定位问题,最终通过对比同事的代码找到问题所在。作者提醒同行注意版本兼容性问题,并指出这种问题在排查时的困难性。
摘要由CSDN通过智能技术生成

起因

        新起了一个业务,用flink消费实时集市kafka消息,在测试环境跑的好好的,验证也过了,然后上线。

        刚上线的当天也好好的,晚上突然在某个点,就拉取不到消息了,上游一直有消息下来,但flink就是没接收到消息,而且checkpoint也能成功,但是消息的位置点却并没有提交,flink处于空转状态,日志也没有任何报错。

经过

         根据以往经验,先怀疑某个消息有问题,无法消费。于是通过重置位置点跳过一段offset重启flink,但是效果依然如此。

        然后重新申请消费组并重启flink,虽然可以消费一段时间,但是依然会卡到某个点就处于空转的状态。日志依然没有任何有效提示,checkpoint继续。。。。。

        然后又检查了集群,看cpu核数,内存等,都没有问题,完全是富足的。

        崩溃了,于是询问其他消费这个topic的同事,看看是否他们的消费也是如此,经询问,他们的没有任何问题,消息消费顺畅。

        啊,难道是智子在搞我?

        于是,我直接对比与同事的代码,终于在maven依赖中看到了我们的不同,他们用的kafka clients版本是2.3.0的,我的版本却是0.8的,终于真相大白。

        公司统一封装了一个kafka消费基础包他们里面依赖的0.8,but线上的kafka集群却是2.3的,同事们之前已经遇到这个坑,没想到被我再踩了一次,多么痛的领悟!

结果

        flink空转不是flink的问题,而是kafka客户端版本与集群版本不匹配导致的,然而最要命的是在flink空转无法消费时,看不到任何报错信息,都没有排查的方向。你就报个错,或者说直接启动不起来也好啊,关键它还可以消费一段时间。这就不好排查了。

        它山之石,可以攻错,今天写下此文,希望为后来的同行提供一个排查问题的方向,虽然这个问题是一个看起来很傻逼的问题,但是一旦遇到了,就真的是遇到了!尤其当人家给你封装个什么jar包,你完全不会考虑有版本的问题。

        当然为啥版本不匹配导致这种bug,还没来得及研究。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值