当前位置:   article > 正文

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

flink不消费也不报错

起因

        新起了一个业务,用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,还没来得及研究。

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/381396
推荐阅读
相关标签
  

闽ICP备14008679号