Apache Kafka 3.0.0釋出

banq發表於2021-09-22

Apache Kafka社群宣佈Apache Kafka 3.0的釋出。Apache Kafka 3.0 是一個多方面的主要版本。Apache Kafka 3.0 引入了各種新功能、突破性的 API 更改以及對 KRaft 的改進——Apache Kafka 的內建共識機制將取代 Apache ZooKeeper 。
雖然 KRaft 尚未被推薦用於生產(已知差距列表),但我們對 KRaft 後設資料和 API 進行了許多改進。Exactly-once 和分割槽重新分配支援值得強調。我們鼓勵您檢視 KRaft 的新功能並在開發環境中試用它。
從 Apache Kafka 3.0 開始,Producer 預設啟用最強的交付保證 ( acks=all, enable.idempotence=true)。這意味著使用者現在預設獲得排序和永續性。
此外,不要錯過 Kafka Connect 任務重啟增強、Kafka Streams 基於時間戳同步的改進以及 MirrorMaker2 更靈活的配置選項。
 
主要變化
  • 在 3.0 中,Apache Kafka 專案的所有元件都已棄用對 Java 8 的支援。這將使使用者有時間在下一個主要版本 (4.0) 之前進行調整,屆時 Java 8 支援將被取消。
  • 對Scala 2.12 的支援在 Apache Kafka 3.0 中也已棄用。與 Java 8 一樣,我們給使用者時間來適應,因為計劃在下一個主要版本 (4.0) 中刪除對 Scala 2.12 的支援。
  • 在 3.0 中引入的一個主要功能是 KRaft 控制器和 KRaft Brokers 能夠為名為 的後設資料主題分割槽生成、複製和載入快照__cluster_metadata。Kafka 叢集使用此主題來儲存和複製有關叢集的後設資料資訊,例如 Broker 配置、主題分割槽分配、領導等。隨著此狀態的增長,Kafka Raft Snapshot 提供了一種有效的方式來儲存、載入和複製此資訊.
  • 自 Kafka Raft Controller 的第一個版本以來的經驗和持續開發表明,需要修改一些後設資料記錄型別,當 Kafka 配置為在沒有 ZooKeeper (ZK) 的情況下執行時使用這些記錄型別。
  • 從 3.0 開始,Kafka Producer 預設開啟冪等性和所有副本的交付確認。這使得預設情況下記錄交付保證更強。
  • Kafka Consumer 的配置屬性的預設值session.timeout.ms從 10 秒增加到 45 秒。這將允許消費者在預設情況下更好地適應瞬時網路故障,並避免在消費者似乎只是暫時離開組時連續重新平衡。
  • 請求 Kafka 消費者組的當前偏移量已經有一段時間了。但是獲取多個消費者組的偏移量需要對每個組進行單獨的請求。在 3.0 和KIP-709 中,fetch 和 AdminClient API 被擴充套件為支援在單個請求/響應中同時讀取多個消費者組的偏移量。
  • 支援可以以有效方式同時應用於多個消費者組的操作在很大程度上取決於客戶端有效發現這些組的協調者的能力。這透過KIP-699成為可能,它增加了對透過一個請求發現多個組的協調器的支援。Kafka 客戶端已更新為在與支援此請求的新 Kafka 代理交談時使用此最佳化。

相關文章