Kafka踩坑系列之一消费者拉不出数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka踩坑系列之一消费者拉不出数据相关的知识,希望对你有一定的参考价值。
一、Bug背景
因业务需要,我们部署了两个Kafka集群。Kafka集群A的版本号为:0.11.0.1,Kafka集群B的版本号为0.9.0.1。
因两个Kafka集群的版本号不一致,尝试了多种解决方案,发现总有一个集群出不来数据,无法互相兼容。
二、Kafka的客户端版本号必须与服务端版本号一致
- 客户端v0.11.0.1的Maven配置
<
dependency
>
<
groupId
>org.apache.kafka</
groupId
>
<
artifactId
>kafka-clients</
artifactId
>
<
version
>0.11.0.1</
version
>
</
dependency
>
- 客户端v0.9.0.1的Maven配置
<
dependency
>
<
groupId
>org.apache.kafka</
groupId
>
<
artifactId
>kafka-clients</
artifactId
>
<
version
>0.9.0.1</
version
>
</
dependency
>
先尝试使用客户端v0.11.0.1,发现集群B的消费者程序无法拉出数据。再尝试使用客户端v0.9.0.1,发现集群A无法拉取出数据。
显然,同一个Maven工程无法依赖同一个组件不同版本的JAR包。
WTF,先泪奔一会儿。泪奔完还得想办法填这个坑。
首先脑洞一个办法,先从官网下载v0.9.0.1版本的Kafka源码,再修改其包名和groupId,再编译打包。但最终没有选择这个方案。
1. Kafka源码使用Gradle管理,我的本机没有Gradle环境,不想折腾下去了。就是懒!( ╯□╰ )
2. 包名不同,类名相同,很容易混用。说不定未来就坑到自己或同事了!
集群B是个老集群了,上面有很多业务。短期内升级是不可能了,那只能选择将集群A降级为v0.9.0.1。
三、降级前要清空老数据,升级时参考官方文档的数据兼容方案
集群A降级后,消费者程序一直拉不出数据,新建topic也不行。查问题,各种猜测,折腾了一整天仍未解决。。
后来干脆通知我司的运维GG清空所有老数据,再重装Kafka。竟然成功了!
所以,问题出在不同版本的数据不兼容。降级前要清数据,升级前务必参考官方文档。否则坑死你不偿命~
以上是关于Kafka踩坑系列之一消费者拉不出数据的主要内容,如果未能解决你的问题,请参考以下文章
Flink实战系列Flink 1.14.0 消费 kafka 数据自定义反序列化器
SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段