kafka-版本变更相关

从0.11开始记录吧

和其他中间件相比,kafka版本间差异和特性更显著,已经安装好的版本号也不好查(没有 -version命令可查),

另外还有个scala版本号,很容易把人搞懵逼

1、版本命名规则

以目前我们正在用的这个版本号为例:kafka_2.12-2.2.1,2.12表示scala的版本号,横杠后面的2.2.1才是真正的程序员需要关心的版本号

1.x之前遵循4位版本号,例如:0.10.0.0,0.11.0.3

1.x之后全部改成菜场通用的 Major.Minor.Patch 三位版本规则,

Major表示大版本,通常是一些重大改变,所以功能可能会有部分不兼容;

Minor表示小版本,通常是一些新功能的增加;

Patch表示修订版,主要为修复一些重点Bug而发布的版本。

2、版本差异

  • 0.10.x

Kafka的一个重要的大版本,引入了 Kafka Streams,定位是除了作为消息引擎外,正式升级成分布式流处理平台,我们没用到

0.10.2.2 解决了一些重要bug,Consumer API比较稳定,Producer API性能得到提升,是推荐的稳定版本

  • 0.11.x

是一个里程碑式的大版本,主要有两个大的变更:消息格式变化(重构),producer幂等性和事务API

事务API主要为kafka-streams服务,没用过;producer幂等性,关注晚了,应该先尝尝鲜,也就是Exactly-Once 语义

各个组件非常稳定,如果没打算使用streams,这个版本算是目前最主流的,推荐是0.11.0.3

  • 1.x

主要是Kafka Streams,Connect方面的改进。有两个重磅特性:

可靠性提升:

1.0.0实现了磁盘的故障转移,当Broker的某一块磁盘损坏时数据会自动转移到其他正常的磁盘上,Broker还会正常工作,这在之前版本中则会直接导致Broker宕机

磁盘负载均衡提升:

1.1.0开始支持副本跨路径迁移,分区副本可以在同一Broker不同磁盘目录间进行移动,对磁盘的负载均衡非常有意义

  • 2.x

Streams、Connect方面的性能提升与功能完善,以及安全方面的增强,一个重要特性:

2.1.0开始支持ZStandard的压缩方式,提升了消息的压缩比,显著减少了磁盘空间与网络io消耗

推荐是2.2.1

后记

推荐版本,不需要streams功能,只做消息引擎,0.10.2.2 ,0.11.0.3即可;否则直接用2.2.1吧

客户端和服务端版本要一致,一般没人使用scala API,那pom中引入时artifactId就用kafka-clients足够了,因为不了解这个,之前跨部门消费别个的KAFKA集群踩过坑

结果发现我的是0.10,别人的服务端是0.11

版本间kafka自身集群提升的特性可能没法关系到程序员编码,但是得有大概的印象,避免排查问题时完全是闭眼玩家

原文地址:https://www.cnblogs.com/yb38156/p/14609907.html