Kafka 2.8.0發(fā)布,與ZooKeeper正式分手!

平時關(guān)注 Kafka 的小伙伴要注意了,2021年4月19日,Kafka 2.8.0正式發(fā)布!
這次升級包括了很多重要的改動,其中最引人矚目的就是kafka通過自我管理的仲裁來替代ZooKeeper,通俗的說,Kafka將不再需要ZooKeeper,正式分手!
其實早在19年,就有人在社區(qū)中提出要移除Kafka對Zookeeper依賴的想法,當時被視為幾乎不可能,但隨著眾人齊心協(xié)力躊躇滿志,竟然真的一步一步逐漸實現(xiàn)了。
2.8.0版本將是第一個不需要ZooKeeper就可以運行Kafka的版本,而這也被稱為Kafka Raft Metadata mode(Kafka Raft 元數(shù)據(jù)模式),或許就是一個會被后人銘記的版本。
可能有一些剛接觸Kafka的小伙伴還不明白這到底代表著什么。
Kafka的一大優(yōu)點就是能夠提供高效率和吞吐量,對先前剛接觸的小伙伴來說,提交日志的底層實現(xiàn)往往是需要學習的第一個任務(wù)。
Kafka 的代碼庫中還有很大一部分是負責在多個集群中安排日志、分配領(lǐng)導權(quán)、處理故障等。這使的 Kafka 成為一個可靠和可信的分布式系統(tǒng)。而ZooKeeper就是分布式代碼工作的關(guān)鍵。在以往的版本中,ZooKeeper 提供了權(quán)威的元數(shù)據(jù)存儲,這些元數(shù)據(jù)存儲了系統(tǒng)中最重要的東西,例如分區(qū)可以存在哪里,哪個組件是主導等等等等。
但不管怎么樣,ZooKeeper 是一個基于一致日志的特殊文件系統(tǒng)/觸發(fā)器API。而Kafka 是一個建立在一致日志之上的發(fā)布/訂閱系統(tǒng)。
這個無法改變的現(xiàn)實使得實際使用中,運維人員需要跨兩個日志實現(xiàn)、兩個網(wǎng)絡(luò)層和兩個安全實現(xiàn)(每個實現(xiàn)都有不同的工具和監(jiān)視鉤子)對通信和性能進行調(diào)優(yōu)、配置、監(jiān)視、保護和評估,這就使得系統(tǒng)變得相當復(fù)雜!
所以和ZooKeeper的友好分手 短期可能會有陣痛,但對于Kafka的長遠發(fā)展利大于弊。
除了和ZooKeeper分開,本次更新還新增了三個功能:
[KAFKA-10500]-添加API以啟動和停止流線程
[KAFKA-10700]-支持使用SASL_SSL偵聽器實現(xiàn)相互TLS身份驗證
[KAFKA-10749]-通過連接速率添加IP限制
而優(yōu)化及修改bug更是多達百個。
一些重要的更新例如:
[KAFKA-5488]-KStream.branch不應(yīng)返回必須通過已知索引訪問的流數(shù)組
[KAFKA-6687]-允許多次閱讀主題
[KAFKA-6943]-如果任何線程崩潰,或者如果所有線程崩潰,可以選擇干凈地關(guān)閉KS
[KAFKA-9023]-生產(chǎn)者網(wǎng)絡(luò)異常響應(yīng)應(yīng)記錄更多信息
[KAFKA-12327]-刪除CompressionType中的MethodHandle用法
[KAFKA-12365]-kip-500代理/控制器不支持塊API(目前)
[KAFKA-12394]-考慮主題id存在和授權(quán)錯誤
[KAFKA-4748]-需要一種方法同時關(guān)閉Streams應(yīng)用程序中的所有工作進程
[KAFKA-10722]-即使不需要,也使用時間戳存儲
[KAFKA-10723]-LogManager在關(guān)閉期間泄漏內(nèi)部線程池活動
如果對具體的更新內(nèi)容感興趣,可以直接登陸官網(wǎng)進行查看:
https://downloads.apache.org/kafka/2.8.0/RELEASE_NOTES.html
大家對這次更新有什么自己的想法呢?歡迎留言進行討論!
往期推薦
