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

所以,問題出在不同版本的數據不兼容。降級前要清數據,升級前務必參考官方文檔。否則坑死你不償命~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM