内容简介:这是很老的Kafka版本,它只有基本的消息队列功能,连消息副本机制都没有,不建议使用。0.8.x版本两个重要特性,一个是Kafka 0.8.0增加了副本机制,另一个是Kafka 0.8.2.0引入了新版本Producer API。新旧版本Producer API如下:
前段时间有一个同事问到: Kafka 0.8.2 只能使用Zookeeper连接吗? 虽然仍有一部分Kafka的老用户在使用 0.8.x 版本,但 Kafka 0.8.x 确实是比较老的版本了。 如果不是对Kafka非常熟悉,很容易忽略各个版本之间的差异,也不会清楚某个版本的特点及使用方式。 本文我们就一起学习下Kafka的历史版本演进,增加我们对Kafka的了解,对于Kafka的技术选型也具有指导意义 。
一、Kafka概述
Kafka是目前主流的分布式消息引擎及流处理平台,经常用做企业的消息总线、实时数据管道,有的还把它当做存储系统来使用。 早期Kafka的定位是一个高吞吐的分布式消息系统,但随着版本的不断迭代,目前已经发展成为一个分布式流处理平台 了 。
Kafka遵循生产者消费者模式,生产者发送消息到Broker中某一个Topic的具体分区里,消费者从一个或多个分区中拉取数据进行消费。 目前Kafka主要提供了四套核心的API,Producer API、Consumer API、Streams API与Connector API。 随着Kafka不同版本的发布,API的支持也有所不同,具体也可参考下面的介绍 。
二、Kafka版本规则
在 Kafka 1.0.0之前基本遵循4位版本号,比如Kafka 0.8.2.0、Kafka 0.11.0.3等。 而从1.0.0开始Kafka就告别了4位版本号,遵循 Major.Minor.Patch 的版本规则,其中Major表示大版本,通常是一些重大改变,因此彼此之间功能可能会不兼容; Minor表示小版本,通常是一些新功能的增加; 最后Patch表示修订版,主要为修复一些重点Bug而发布的版本。 比如Kafka 2.1.1,大版本就是2,小版本是1,Patch版本为1,是为 修复 Bug发布的第1个版本 。
三、Kafka版本演进
Kafka总共发布了7个大版本,分别是0.7.x、0.8.x、0.9.x、0.10.x、0.11.x、1.x及2.x版本。 截止目前,最新版本是Kafka 2.4.0,也是最新稳定版本。
0.7.x版本
这是很老的Kafka版本,它只有基本的消息队列功能,连消息副本机制都没有,不建议使用。
0.8.x版本
两个重要特性,一个是Kafka 0.8.0增加了副本机制,另一个是Kafka 0.8.2.0引入了新版本Producer API。新旧版本Producer API如下:
//旧版本Producer kafka.javaapi.producer.Producer<K,V> //新版本Producer org.apache.kafka.clients.producer.KafkaProducer<K,V>
与旧版本相比,新版本Producer API有点不同,一是连接Kafka方式上,旧版本的生产者及消费者API连接的是Zookeeper,而新版本则连接的是Broker;二是新版Producer采用异步方式发送消息,比之前同步发送消息的性能有所提升。但此时的新版Producer API尚不稳定,不建议生产使用。
0.9.x版本
Kafka 0.9 是一个重大的版本迭代,增加了非常多的新特性,主要体现在三个方面:
-
安全方面 : 在0.9.0之前,Kafka安全方面的考虑几乎为0。Kafka 0.9.0 在安全认证、授权管理、数据加密等方面都得到了支持,包括支 持Kerberos等。
-
新版本Consumer API : Kafka 0.9.0 重写并提供了新版消费端API,使用方式也是从连接Zookeeper切到了连接Broker,但是此时新版Consumer API也不太稳定、存在不少Bug,生产使用可能会比较痛苦;而0.9.0版本的Producer API已经比较稳定了,生产使用问题不大 。
-
Kafka Connect :Kafka 0.9.0 引入了新的组件 Kafka Connect ,用于实现Kafka与其他外部系统之间的数据抽取。
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 是一个里程碑式的大版本,主要有两个大的变更,一是 Ka f ka 从这个版本开始支持 Exactly-Once 语义 即 精准一次语义 ,主要是实现了P roducer端的消息幂等性,以及事务特性,这对于Kafka 流式处理具有非常大的意义。
另 一个重大变更是 Kafka消息格式 的重构 ,Kafka 0.11主要为了实现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版本建议
-
遵循一个基本原则,Kafka客户端版本和服务端版本应该保持一致,否则可能会遇到一些问题。
-
根据是否用到了Kafka的一些新特性来选择,假如要用到Kafka生产端的消息幂等性,那么建议选择Kafka 0.11 或之后的版本。
-
选择一个自己熟悉且稳定的版本,如果说没有比较熟悉的版本,建议选择一个较新且稳定、使用比较广泛的版本。
主要参考:
1. https://www.cnblogs.com/huxi2b/
2. http://kafka.apache.org/downloads 及相关的Release记录
本文重点总结了Kafka的各版本演进,及关键特性,希望对Kafka使用者有比较好的参考意义。
往期文章精选:
如果您喜欢这篇文章,点【在看】与转发都是一种鼓励,期待得到您的认可 ❥(^_-)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Master Switch
Tim Wu / Knopf / 2010-11-2 / USD 27.95
In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!