Kafka2.6.0釋出——效能大幅提升

獨孤風發表於2020-08-11

近日Kafka2.6版本釋出,距離2.5.0釋出只過去了不到四個月的時間。

Kafka 2.6.0包含許多重要的新功能。以下是一些重要更改的摘要:

  • 預設情況下,已為Java 11或更高版本啟用TLSv1.3
  • 效能顯著提高,尤其是當代理具有大量分割槽時
  • 擴充套件Kafka Streams的應用程式更便捷
  • Kafka Streams支援更改時發出
  • 新的metrics可提供更好的運營洞察力
  • 配置為進行連線時,Kafka Connect可以自動建立Topic
  • 改進了Kafka Connect中接收器聯結器的錯誤報告選項
  • Kafka Connect中的新過濾器和有條件地應用SMT
  • “ client.dns.lookup”配置的預設值現在為“ use_all_dns_ips”。
  • 將Zookeeper升級到3.5.8

新功能

  • 新增KStream#repartition操作
  • 使SSL上下文/引擎配置可擴充套件
  • 預設情況下啟用TLSv1.3,並禁用某些較舊的協議
  • 有條件地應用SMT
  • 向流指標新增任務級活動程式比率
  • 重構主迴圈以一次處理一個任務的多個記錄

改善

  • 增強了TransformerSupplier / ProcessorSupplier
  • 清理任務管理
  • 將“ onAssignment”流與“ partitionsAssigned”任務建立合併
  • 公開磁碟讀寫指標
  • 允許消費者明確觸發重新平衡
  • 將gradle更新為6.0+
  • 支援Java 14
  • 將預設版本切換到Scala 2.13
  • -改進“ matchingAcls”的效能
  • 控制檯生產者支援client.id的設定

升級指南:

如果要從2.1.x之前的版本升級,請參閱以下注釋,以瞭解用於儲存使用者偏移量的架構的更改。將inter.broker.protocol.version更改為最新版本後,將無法降級到2.1之前的版本。

對於滾動升級:

  1. 在所有代理上更新server.properties並新增以下屬性。CURRENT_KAFKA_VERSION指的是您要升級的版本。CURRENT_MESSAGE_FORMAT_VERSION是指當前使用的訊息格式版本。如果以前覆蓋了訊息格式版本,則應保留其當前值。或者,如果要從0.11.0.x之前的版本升級,則應將CURRENT_MESSAGE_FORMAT_VERSION設定為與CURRENT_KAFKA_VERSION相匹配。

    • inter.broker.protocol.version = CURRENT_KAFKA_VERSION(例如2.52.4等)
    • log.message.format.version = CURRENT_MESSAGE_FORMAT_VERSION
  2. 如果要從0.11.0.x或更高版本升級,並且尚未覆蓋訊息格式,則只需要覆蓋代理間協議版本。

    • inter.broker.protocol.version = CURRENT_KAFKA_VERSION(例如2.52.4等)
  3. 一次升級一個代理:關閉代理,更新程式碼,然後重新啟動。完成此操作後,代理將執行最新版本,並且您可以驗證叢集的行為和效能是否符合預期。如果有任何問題,此時仍然可以降級。

  4. 驗證叢集的行為和效能後,請通過編輯協議版本inter.broker.protocol.version並將其設定為來更改協議版本 2.6

  5. 逐一重新啟動代理,以使新協議版本生效。代理開始使用最新的協議版本後,將無法再將群集降級到較舊的版本。

  6. 如果您已按照上述說明覆蓋了訊息格式版本,則需要再次滾動重啟以將其升級到最新版本。一旦所有(或大多數)使用者都升級到0.11.0或更高版本,則在每個代理上將log.message.format.version更改為2.6,然後逐一重新啟動它們。請注意,不再維護的較舊的Scala客戶端不支援0.11中引入的訊息格式,為避免轉換成本必須使用較新的Java客戶端。

2.6.0注意點

Kafka Streams新增了一種新的處理模式(需要Broker 2.5或更高版本),該模式使用完全一次的保證提高了應用程式的可伸縮性。

預設情況下,Java 11或更高版本已啟用TLSv1.3。如果客戶端和伺服器均支援TLSv1.3,則將協商該協議,否則將回退至TLSv1.2。

預設情況下,Java 11或更高版本已啟用TLSv1.3。如果客戶端和伺服器均支援TLSv1.3,則將協商該協議,否則將回退至TLSv1.2。

NotLeaderForPartitionException已棄用,並已替換為NotLeaderOrFollowerException。如果代理不是副本,則獲取請求和僅用於領導者或跟隨者的其他請求將返回NOT_LEADER_OR_FOLLOWER(6)而不是REPLICA_NOT_AVAILABLE(9),以確保重新分配期間的此暫時錯誤由所有客戶端作為可重試的異常進行處理。

更多Flink,Kafka,Spark等相關技術博文,科技資訊,歡迎關注實時流式計算 公眾號後臺回覆 “電子書” 下載300頁Flink實戰電子書

相關文章