【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。竟然成功了!

所以,问题出在不同版本的数据不兼容。降级前要清数据,升级前务必参考官方文档。否则坑死你不偿命~

时间: 2024-08-30 09:42:56

【Kafka踩坑系列之一】消费者拉不出数据的相关文章

【Kafka踩坑系列之二】无限循环消费数据

一.Bug背景 业务上线后,发现Kafka的消费者一直在重复拉取同一批数据.被消费的topic配置了10个分区,只有每个分区的第一批数据能够出队,并且无限循环. 因测试环境数据量比较小,一直无法复现问题.只能查生产环境的日志排查. 二.解决问题的思路       初步猜测数据被消费之后,没有正常commit到Kafka服务端,导致Topic分区offset再消费完毕后未进行更新,下次取数据时还是从老offset开始取数据. 检查客户端配置       自动提交已开启(enable.auto.co

H5踩坑系列(一)

提到移动端适配,首先心里可能会问,我们为什么要做移动端的适配,怎么去做移动端端的适配 我们为什么要进行移动端的适配 首先一个页面在pc上边打开,是正常显示的,但是我们用手机打开的时候,由于手机的屏幕尺寸并不能完整的吧页面全部显示出来,就算是手动进行缩放也会出现比如说滚动条,页面布局错乱等等各种五花八门的问题,对于用户的体验非常的不好 于是乎就有了移动端的适配, 移动端适配的目的是在不同尺寸的设备上,页面达到合理的展示(自适应)或者说是能够保持统一效果. 在我们了解移动端适配之前 我们首先要先了解

ReactNative踩坑系列--构建失败

初始化项目后执行react-native run-ios,构建失败: ** BUILD FAILED ** The following commands produced analyzer issues: Analyze /Users/lcz/workspace/APP/temp/node_modules/react-native/ReactCommon/yoga/yoga/YGNodeList.c Analyze /Users/lcz/workspace/APP/temp/node_modul

bootstrap之js插件踩坑系列

<html> <head>     <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">     <!-- 可选的Bootstrap主题文件(一般不用引入) -->     <link rel="stylesheet" href="http://cdn.b

Webpack 踩坑系列之babel 配置

webpack 4.20.2 ,对于babel 配置 正确配置 错误配置 presets 要配置成跟@babel-core,对应的版本 原文地址:https://www.cnblogs.com/ghost-monkey/p/9716051.html

C++(MFC)踩坑之旅 ------- 新建项目弹出“发生一个或多个错误”

结束隔离,回公司上班,把在家办公的程序考回公司的电脑,结果出错了,每当我新建项目时,都会弹出"发生一个或多个错误",点确定后回到新建项目的设置上面,折腾了两天时间才解决,以下是我的解决思路和操作方法: 思路:年前的时候公司电脑没问题,年前年后有差别的地方在于:我在家时所写的程序(MFC)是自己新建了属性配置表, 解决方法:用公司电脑新建属性配置表,我的做法是配置表名字跟在家里一样的,并且配置内容也一样. 结果:成功了. 原文地址:https://www.cnblogs.com/chen

AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读

又开了一个新的坑,笔者工作之后维护着一个 NoSQL 数据库.而笔者维护的数据库正是基于社区版本的 Aerospike打造而来.所以这个踩坑系列的文章属于工作总结型的内容,会将使用开发 Aerospike 的各种问题进行总结梳理,希望能够给予大家启发和帮助.第一篇开山之文,就先从Aerospike 公司在16年数据库顶会 VLDB的一篇论文 <Aerospike: Architecture of a Real Time Operational DBMS>展开,来高屋建瓴的审视一下 Aeropi

kafka与zookeeper管理之kafka-manager踩坑小记

在elk集群搭建过程中,为了极大程度的利用服务器资源,kafka.zookeeper.logstash规划混跑在了同一组服务器上.随着业务量的增加,要频繁增加调整kafka的topic,出现问题时还要去服务器敲命令查看kafka和zookeeper的相关信息,效率低而且不方便,于是就考虑到用kafka的管理工具kafka-manager,安装配好后,整个集群的状态一目了然,而且可以方便的进行topic的操作.消费情况的查询.broker各种状态指标的查询等,非常方便,各种信息一目了然,安装配置过

使用ABP框架踩过的坑系列1

诚如ABP的作者所说:We are creating different applications based on different needs. But implementing common and similar structures over and over again, at least in some level. Authorization, Validation, Exception Handling, Logging, Localization, Database Con