最近遇到了 kafka server 和 kafka-client 的兼容性问题。研发环境用的 kafka 集群是 2.0.0,而程序使用的 kafka-client 版本是 0.10.1.1,发现生产消息报错。将 kafka 集群的消息格式修改成了 0.10.2 后,问题解决。遂记录下 kafka 版本兼容的问题。
kafka 的消息格式有三种,详情参考 一文看懂Kafka消息格式的演变 。
在Kafka 0.10.2.0之前,Kafka服务器端和客户端版本之间的兼容性是“单向”的,即高版本的broker可以处理低版本client的请求。反过来,低版本的broker不能处理高版本client的请求。由于升级client要远比升级broker简单得多,因此这个限制给很多用户带来了麻烦,甚至有很多人都不愿意去升级broker版本——毕竟无downtime的情况下正确升级Kafka服务器是个不小的挑战。自0.10.2.0版本开始,社区对这个问题进行了优化,0.10.2.0之后用户可以简单地升级client端代码到这个版本就可以很容易地实现与低版本Kafka服务器的交互了。
详情参考