李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
03.Kafka的版本号
Leefs
2021-08-19 AM
1855℃
0条
# 03.Kafka的版本号 ### 前言 **版本命名规则:** **四位版本号:**`MajorVer.MinorVer.ReleaseVer.BuildVer` (如 0.7.0.8) + `MajorVer` 表示主版本号,当前还在开发阶段,为 0。 + `MinorVer` 表示副版本号,`ReleaseVer` 表示发布版本号,目前是 7.0。 + `BuildVer` 表示构建编号,以后每次构建都会自动加一,以标识每一个具体的版本。 **三位版本号:**`Major.Minor.Patch`(如2.1.3) + Major表示大版本,通常是一些重大改变,因此彼此之间功能可能会不兼容,目前为2 + Minor表示小版本,通常是一些新功能的增加,目前为1 + Patch表示修订版,主要为修复一些重点Bug而发布的版本,目前为3。 **Kafka版本规则演变** 在1.x之前的版本,基本遵循4位版本号。 在1.x之后,kafka 全面启用了遵循 `Major.Minor.Patch` 的三位版本规则。 ### 一、版本命名规则 #### 1.1 官网地址 https://kafka.apache.org/downloads ![03.Kafka的版本号.jpg](https://lilinchao.com/usr/uploads/2021/08/2809316374.jpg) 目前Apache Kafka已经迭代到2.8版本。 下载的版本中名称`kafka_2.12-2.8.0.tgz`、`kafka_2.13-2.8.0.tgz`分析: + kafka服务端代码完全是由Scala语言编写,2.12指对应的Scala版本。 + kafka版本号是2.8.0 + 前面的 2 表示大版本号,即Major Version; + 中间的 8 表示小版本号或次版本号,即Minor Version; + 最后的 0 表示修订版本号,也就是Patch 号。 *注:Kafka新版客户端代码完全由Java语言编写* ### 二、版本演进 Kafka总共发布了7个大版本,分别是`0.7.x`、`0.8.x`、`0.9.x`、`0.10.x`、`0.11.x`、`1.x`及`2.x`版本。 #### 0.7版本 这是很老的Kafka版本,它只有基本的消息队列功能,连消息副本机制都没有,不建议使用。 #### 0.8版本 **新增了如下几个重要特性:** + `kafka 0.8.0` + 增加了副本机制,至此Kafka成为了一个真正意义上完备的分布式高可靠消息队列解决方案; + `Kafka 0.8.2.0`, + consumer 的消费偏移位置 offset 由原来的保存在 `zookeeper` 改为保存在 `kafka` 本身(`kafka` 定义了一个系统 topic,专门用来存储偏移量的数据); + **引入了新版本Producer API**:新版本Producer API有点不同。 1、连接Kafka方式上,旧版本的生产者及消费者API连接的是Zookeeper,而新版本则连接的是Broker; 2、新版Producer采用异步批量方式发送消息,比之前同步发送消息的性能有所提升。 **新旧版本Producer API如下:** ```scala //旧版本 Producerkafka.javaapi.producer.Producer
//新版本 Producerorg.apache.kafka.clients.producer.KafkaProducer
``` 注:此版本的新版本producer api还不太稳定。 #### 0.9版本 Kafka 0.9 是一个重大的版本迭代,增加了非常多的新特性,主要体现在三个方面: + **新版本Consumer API:**Kafka 0.9.0使用java重写了新版`Consumer API`,使用方式也是从连接`Zookeeper`切到了连接Broker; + **安全方面:**在0.9.0之前,Kafka安全方面的考虑几乎为0。Kafka 0.9.0 在安全认证、授权管理、数据加密等方面都得到了支持,包括支持Kerberos等; + **Kafka Connect**:Kafka 0.9.0 引入了新的组件 Kafka Connect ,用于实现Kafka与其他外部系统之间的数据抽取。 注:此时的新版本Consumer api还不大稳定,而0.9.0版本的Producer API已经比较稳定了; #### 0.10.x版本 + Kafka 0.10 是一个重要的大版本,因为Kafka 0.10.0.0 引入了 Kafka Streams,使得Kafka不再仅是一个消息引擎,而是往一个分布式流处理平台方向发展。 + 0.10 大版本包含两个小版本:0.10.1 和 0.10.2,它们的主要功能变更都是在 Kafka Streams 组件上。 值得一提的是,自 0.10.2.2 版本起,新版本 Consumer API 已经比较稳定了,而且新版本的 Producer API 的性能也得到了提升,因此对于使用 0.10.x 大版本的用户,建议使用或升级到 Kafka 0.10.2.2 版本。 #### 0.11.x版本 Kafka 0.11 是一个里程碑式的大版本,主要有两个大的变更: + 从这个版本开始支持Exactly-Once 语义即精准一次语义,主要是实现了Producer端的消息幂等性,以及事务特性,这对于Kafka流式处理具有非常大的意义; + Kafka 0.11另一个重大变更是Kafka消息格式的重构(对用户是透明的),主要为了实现Producer幂等性与事务特性,重构了投递消息的数据结构。这一点非常值得关注,因为Kafka 0.11之后的消息格式发生了变化,所以我们要特别注意Kafka不同版本间消息格式不兼容的问题。 注:这个版本中各个大功能组件都变得非常稳定了,应该算是目前最主流的版本之一。 #### 1.x版本 Kafka 1.x 更多的是Kafka Streams方面的改进,以及Kafka Connect的改进与功能完善等。但仍有两个重要特性: + 一是Kafka 1.0.0实现了磁盘的故障转移,当Broker的某一块磁盘损坏时数据会自动转移到其他正常的磁盘上,Broker还会正常工作,这在之前版本中则会直接导致Broker宕机,因此Kafka的可用性与可靠性得到了提升; + 二是Kafka 1.1.0开始支持副本跨路径迁移,分区副本可以在同一Broker不同磁盘目录间进行移动,这对于磁盘的负载均衡非常有意义。 #### 2.x版本 + Kafka 2.x 更多的也是`Kafka Streams`、`Connect`方面的性能提升与功能完善,以及安全方面的增强等。 + Kafka 2.1.0开始支持`ZStandard`的压缩方式,提升了消息的压缩比,显著减少了磁盘空间与网络io消耗。 ### 三、Kafka版本建议 1. 遵循一个基本原则,Kafka客户端版本和服务端版本应该保持一致,否则可能会遇到一些问题。 2. 根据是否用到了Kafka的一些新特性来选择,假如要用到Kafka生产端的消息幂等性,那么建议选择Kafka 0.11 或之后的版本。 3. 选择一个自己熟悉且稳定的版本,如果说没有比较熟悉的版本,建议选择一个较新且稳定、使用比较广泛的版本。 *附:* *参考文章链接地址:https://blog.csdn.net/liuxiao723846/article/details/106020738*
标签:
Kafka
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/1390.html
上一篇
【转载】Spring Boot在启动时进行配置文件加解密
下一篇
04.Kafka安装教程
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
ajax
Livy
并发线程
JavaScript
数学
正则表达式
设计模式
Golang基础
国产数据库改造
Flume
哈希表
JavaWeb
并发编程
Stream流
线程池
MyBatis
RSA加解密
人工智能
MyBatisX
Sentinel
Beego
Spark SQL
算法
高并发
Java阻塞队列
Spring
工具
Redis
Linux
VUE
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭