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