Kafka 版本該怎麼選擇總結

買了極客時間胡夕老師的課,上面講到kafka各版本之間的差異,在這裏總結一下,時機應用的時候該如何去選擇kafka版本。

Kafka 版本命名

kafka版本已經更新到2.5了

我們看下kafka版本號的組成kafka_2.12-2.5.0.tgz前面的2.12表示的是kafka開發語言Scala的版本,後面的2.5.0纔是kafka版本。

作爲Javaer Scala我們都熟悉,JVM系的語言。設計上很有優勢,以至於java的很多新特性都跟Scala靠攏,比如Lambda表達式,函數式編程等。現在kafka客戶端都用java語言開發了。據說是kafka團隊進了一批javaer的原因。

言歸正傳,kafka_2.12-2.5.0.tgz我們說2.5.0是kafka版本號,前面的2表示大版本號(Minor Version),5表示修訂版本號(Patch)

Kafka 版本演進

Kafka 目前總共演進了 7 個大版本,分別是 0.7、0.8、0.9、0.10、0.11、1.0 和 2.0,其中的小版本和 Patch 版本很多。哪些版本引入了哪些重大的功能改進?

0.7 版本

上古版本,沒接觸過,也沒用過,相信現在也很少有人在用了。因爲它只提供了消息隊列的功能,連副本都沒有。所以對古老的東西我們心存敬意就好了。

0.8版本

引入了副本機制,這是kafka變成真正的高可用分佈式消息隊列解決方案。消費者,生產者用的還是老API,老API有個特徵就是需要指定Zookeeper地址,而非broker地址。生產者API用的是同步消息機制,可見吞吐量肯定很一般。雖然也支持了異步方式,但會導致消息的丟失。

0.8.2.0:引入了新版本 Producer API,即需要指定 Broker 地址的 Producer。

0.8.2.2:建議使用該版本老的消費者API,因爲比較穩定。不建議使用改版本新的生產者API,我們不但要對古老的東西表示敬畏,還要對新的東西保持懷疑,因爲新代表着不穩定,代表着BUG。

0.9版本

2015 年 11 月更新了重量級版本0.9.0.0.

  1. 加了基礎的安全認證 / 權限功能
  2. 用 Java 重寫了新版本消費者 API
  3. 引入了 Kafka Connect 組件用於實現高性能的數據抽取

建議:

  1. 使用該版本新的Producer API,因爲已經迭代的比較穩定了
  2. 不建議使用該版本新的Consumer API,因爲還不穩定。

0.10版本

這是一個里程碑式的版本發佈,因爲該版本引入了 Kafka Streams,kafka成爲了真正的分佈式流處理平臺。

0.10 大版本包含兩個小版本:0.10.1 和 0.10.2,這兩個版本的更新都在kafka Streams上,如果當做消息引擎,並沒有做什麼改變。

建議:

0.10.2.2版本我們終於等來了穩定的新Consumer API,而且Producer API也修復了一些影響性能的bug。所以強烈建議升級該版本的新Consumer API和Producer API。

0.11版本

2017 年 6 月發佈了0.11版本,該版本有兩個重量級更新:

  1. 提供冪等性 Producer API 以及事務(Transaction) API
  2. 對 Kafka 消息格式做了重構。

這兩個更新,我覺得第一個更加讓人振奮一點。畢竟 Producer 實現冪等性以及支持事務都是 Kafka 實現流處理結果正確性的基石。沒有它們,Kafka Streams 在做流處理時無法向批處理那樣保證結果的正確性。同樣是新的,事務 API 有一些 Bug,不算十分穩定。另外事務 API 主要是爲 Kafka Streams 應用服務的,實際使用場景中用戶利用事務 API 自行編寫程序的成功案例並不多見。

第二個改變。由於消息格式的改變,引起消息格式轉換帶來的性能問題,所以要謹慎選擇該版本。如果選擇該版本建議選擇0.11.0.3版本,因爲該版本的消息引擎功能已經非常完善了。

1.0 和 2.0 版本

兩個大版本主要還是 Kafka Streams 的各種改進,在消息引擎方面並未引入太多的重大功能特性。

總結:要對古老版本心存敬意,敬而遠之。對新版本不要做測試bug的小白鼠。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章