神馬操作!Kafka 竟然宣佈棄用 Java 8

Kafka 3.0.0 釋出了:

神馬操作!Kafka 竟然宣佈棄用 Java 8

主要更新如下:

The deprecation of support for Java 8 and Scala 2.12

Kafka Raft support for snapshots of the metadata topic and other improvements in the self-managed quorum

Stronger delivery guarantees for the Kafka producer enabled by default

Deprecation of message formats v0 and v1

Optimizations in OffsetFetch and FindCoordinator requests

More flexible Mirror Maker 2 configuration and deprecation of Mirror Maker 1

Ability to restart a connector‘s tasks on a single call in Kafka Connect

Connector log contexts and connector client overrides are now enabled by default

Enhanced semantics for timestamp synchronization in Kafka Streams

Revamped public API for Stream’s TaskId

Default serde becomes null in Kafka

第一條就是宣佈棄用對 Java 8 和 Scala 2.12 的支援!!!

在 Kafka 3。0。0 中,Kafka 專案中的所有元件都已棄用對 Java 8、Scala 2。12 的支援,宣佈棄用,但 3。0。0 還能用,這次宣佈只是給使用者一個調整的時間,到了 Kafka 4。0,Java 8、Scala 2。12 將將正式取消支援。

其實,其他一些中介軟體也早有停止對 Java 8 的支援,選擇 Java 11 作為最低支援版本,但 Kafka,這可能是自 Java 17 釋出以來,也就是近半月時間,官宣棄用 Java 8 打響的第一槍。。

Java 8 雖然有點老了,但依然是現在市場上用的最多的版本,雖然有些中介軟體不再支援 Java 8 了,但實際開發工作並不受影響,Java 8+ 系列教程我也寫了一堆了,關注公眾號Java技術棧在選單欄中進行閱讀吧。

Kafka 目前支援的 Java 版本如下:

神馬操作!Kafka 竟然宣佈棄用 Java 8

從官網看,Kafka 目前支援兩個 LTS 版本(

Java 8 和 Java 11

如果啟用 TLS,那麼 Java 11 的效能將得到顯著提升,所以官方也強烈推薦大家使用 Java 11。

Java 11 是比 Java 8 更新一代的長期支援版本,它還包括許多其他的效能改進,比如:

G1 垃圾收集器、CRC32C、字串壓縮、Thread-Local 握手機制

等等,另外從安全的角度考慮,建議使用較為新一點的安全版本,防止老版本的安全漏洞。

現在隨著 Java 17 的釋出及免費,Java 17 還是史上最快的 JDK,相信在不久的時間,Kafka 對於 Java 17 的支援也會安排上。在多個 Java 版本上進行開發、編譯和測試,對於 Kafka 團隊來說肯定是一筆不小的維護成本,所以,Kafka 還有什麼理由繼續保留 Java 8 呢?

Java 11/ Java 17 可能是更香的選擇!

此外,Kafka 3.0 還改進了 KRaft 共識演算法(Raft 的變種)

這個 Kafka 內建的 KRaft 共識機制,是用來取代 Apache ZooKeeper 的,早在很久之前(Kafka 2。8。0) Kafka 就宣佈替換 Zookeeper 了:

神馬操作!Kafka 竟然宣佈棄用 Java 8

不過到現在還不是很成熟,目前還不建議用在生產環境,官方也只是建議在開發環境進行試用。

Kafka 一向以效能著稱,還要額外維護一個重量級的 Zookeeper 元件,確實也沒有必要,所以就自己搞出了 KRaft 機制,讓自己變得更輕量,也可以帶來更優的效能。

所以,在未來的版本中,Zookeeper 也會消失在 Kafka 的長河裡……

總結下,可能大家覺得,很多知識,還沒開始學,就要被淘汰了,永遠跟不上技術的步伐。。。

是的,很多東西,我們雖然不學,但也要知道,也就是技術的廣度,如果現在面試官問你 Kafka 的領導選舉機制是怎樣的,你還只會說 Zookeeper,而不知道 KRaft 機制的存在,那面試官可能就覺得你對技術的敏銳能力不高了。

所以說,我們不能每天重複著重複 CRUD 搬磚勞動,有時間,閒下來,也要時刻保持對技術的渴望,不但要追求深度,也要追求廣度,這樣不僅是在職場,還是在面試戰場,都能讓你遊刃有餘。