<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Kafka 3.0重磅發(fā)布,棄用 Java 8 的支持!

          共 7789字,需瀏覽 16分鐘

           ·

          2021-10-02 04:55


          Apache Kafka 是一個(gè)分布式開源流平臺,被廣泛應(yīng)用于各大互聯(lián)網(wǎng)公司。Kafka 設(shè)計(jì)之初被用于消息隊(duì)列,自 2011 年由 LinkedIn 開源以來,Kafka 迅速從消息隊(duì)列演變?yōu)槌墒斓氖录魈幚砥脚_。

          Kafka 具有四個(gè)核心 API,借助這些 API,Kafka 可以用于以下兩大類應(yīng)用:
          • 建立實(shí)時(shí)流數(shù)據(jù)管道,可靠地進(jìn)行數(shù)據(jù)傳輸,在系統(tǒng)或應(yīng)用程序之間獲取數(shù)據(jù)。

          • 構(gòu)建實(shí)時(shí)流媒體應(yīng)用程序,以改變系統(tǒng)或應(yīng)用程序之間的數(shù)據(jù)或?qū)?shù)據(jù)流做出反應(yīng)。
          近日,Apache Kafka 3.0.0 正式發(fā)布,這是一個(gè)重要的版本更新,其中包括許多新的功能。

          例如:
          • 已棄用對 Java 8 和 Scala 2.12 的支持,對它們的支持將在 4.0 版本中徹底移除,以讓開發(fā)者有時(shí)間進(jìn)行調(diào)整。

          • Kafka Raft 支持元數(shù)據(jù)主題的快照,以及 self-managed quorum 方面的其他改進(jìn)。

          • 廢棄了消息格式 v0 和 v1。

          • 默認(rèn)情況下為 Kafka Producer 啟用更強(qiáng)的交付保證。

          • 優(yōu)化了 OffsetFetch 和 FindCoordinator 請求。

          • 更靈活的 MirrorMaker 2 配置和 MirrorMaker 1 的棄用。

          • 能夠在 Kafka Connect 的一次調(diào)用中重新啟動連接器的任務(wù)。

          • 連接器日志上下文和連接器客戶端覆蓋現(xiàn)在是默認(rèn)啟用的。

          • 增強(qiáng)了 Kafka Streams 中時(shí)間戳同步的語義。

          • 修改了 Stream 的 TaskId 的公共 API。

          • 在 Kafka Streams 中,默認(rèn)的 serde 變成了 null,還有一些其他的配置變化。


          接下來,我們來看看新版本具體在哪些地方進(jìn)行了更新。根據(jù)官方資料介紹,Apache Kafka 3.0 引入了各種新功能、突破性的 API 更改以及對 KRaft 的改進(jìn)——Apache Kafka 的內(nèi)置共識機(jī)制將取代 Apache ZooKeeper?。

          雖然 KRaft 尚未被推薦用于生產(chǎn)(已知差距列表),但對 KRaft 元數(shù)據(jù)和 API 進(jìn)行了許多改進(jìn)。Exactly-once 和分區(qū)重新分配支持值得強(qiáng)調(diào)。鼓勵(lì)大家查看 KRaft 的新功能并在開發(fā)環(huán)境中試用它。

          從 Apache Kafka 3.0 開始,生產(chǎn)者默認(rèn)啟用最強(qiáng)的交付保證(acks=all, enable.idempotence=true)。這意味著用戶現(xiàn)在默認(rèn)獲得排序和持久性。

          此外,不要錯(cuò)過 Kafka Connect 任務(wù)重啟增強(qiáng)、KStreams 基于時(shí)間戳同步的改進(jìn)以及 MirrorMaker2 更靈活的配置選項(xiàng)。


          常規(guī)變化



          ①KIP-750(第一部分):棄用 Kafka 中對 Java 8 的支持


          在 3.0 中,Apache Kafka 項(xiàng)目的所有組件都已棄用對 Java 8 的支持。這將使用戶有時(shí)間在下一個(gè)主要版本(4.0)之前進(jìn)行調(diào)整,屆時(shí) Java 8 支持將被取消。


          ②KIP-751(第一部分):棄用 Kafka 中對 Scala 2.12 的支持


          對 Scala 2.12 的支持在 Apache Kafka 3.0 中也已棄用。與 Java 8 一樣,我們給用戶時(shí)間來適應(yīng),因?yàn)橛?jì)劃在下一個(gè)主要版本(4.0)中刪除對 Scala 2.12 的支持。


          Kafka 代理、生產(chǎn)者、消費(fèi)者和管理客戶端



          ①KIP-630:Kafka Raft 快照


          我們在 3.0 中引入的一個(gè)主要功能是 KRaft 控制器和 KRaft 代理能夠?yàn)槊麨?nbsp;__cluster_metadata 的元數(shù)據(jù)主題分區(qū)生成、復(fù)制和加載快照。

          Kafka 集群使用此主題來存儲和復(fù)制有關(guān)集群的元數(shù)據(jù)信息,如代理配置、主題分區(qū)分配、領(lǐng)導(dǎo)等。

          隨著此狀態(tài)的增長,Kafka Raft Snapshot 提供了一種有效的方式來存儲、加載和復(fù)制此信息。

          ②KIP-746:修改 KRaft 元數(shù)據(jù)記錄


          自第一版 Kafka Raft 控制器以來的經(jīng)驗(yàn)和持續(xù)開發(fā)表明,需要修改一些元數(shù)據(jù)記錄類型,當(dāng) Kafka 被配置為在沒有 ZooKeeper(ZK)的情況下運(yùn)行時(shí)使用這些記錄類型。

          ③KIP-730:KRaft 模式下的生產(chǎn)者 ID 生成


          在 3.0 和 KIP-730 中,Kafka 控制器現(xiàn)在完全接管了生成 Kafka 生產(chǎn)者 ID 的責(zé)任。

          控制器在 ZK 和 KRaft 模式下都這樣做。這讓我們更接近橋接版本,這將允許用戶從使用 ZK 的 Kafka 部署過渡到使用 KRaft 的新部署。

          ④KIP-679:Producer 將默認(rèn)啟用最強(qiáng)的交付保證


          從 3.0 開始,Kafka 生產(chǎn)者默認(rèn)開啟冪等性和所有副本的交付確認(rèn)。這使得默認(rèn)情況下記錄交付保證更強(qiáng)。

          ⑤KIP-735:增加默認(rèn)消費(fèi)者會話超時(shí)


          Kafka Consumer 的配置屬性的默認(rèn)值 session.timeout.ms 從 10 秒增加到 45 秒。

          這將允許消費(fèi)者在默認(rèn)情況下更好地適應(yīng)暫時(shí)的網(wǎng)絡(luò)故障,并在消費(fèi)者似乎只是暫時(shí)離開組時(shí)避免連續(xù)重新平衡。

          ⑥KIP-709:擴(kuò)展 OffsetFetch 請求以接受多個(gè)組 ID


          請求 Kafka 消費(fèi)者組的當(dāng)前偏移量已經(jīng)有一段時(shí)間了。但是獲取多個(gè)消費(fèi)者組的偏移量需要對每個(gè)組進(jìn)行單獨(dú)的請求。

          在 3.0 和 KIP-709 中,fetch 和 AdminClient API 被擴(kuò)展為支持在單個(gè)請求/響應(yīng)中同時(shí)讀取多個(gè)消費(fèi)者組的偏移量。

          ⑦KIP-699:更新 FindCoordinator 以一次解析多個(gè) Coordinator


          支持可以以有效方式同時(shí)應(yīng)用于多個(gè)消費(fèi)者組的操作在很大程度上取決于客戶端有效發(fā)現(xiàn)這些組的協(xié)調(diào)者的能力。

          這通過 KIP-699 成為可能,它增加了對通過一個(gè)請求發(fā)現(xiàn)多個(gè)組的協(xié)調(diào)器的支持。

          Kafka 客戶端已更新為在與支持此請求的新 Kafka 代理交談時(shí)使用此優(yōu)化。

          ⑧KIP-724:刪除對消息格式 v0 和 v1 的支持


          自 2017 年 6 月隨 Kafka 0.11.0 推出四年以來,消息格式 v2 一直是默認(rèn)消息格式。

          因此,在橋下流過足夠多的水(或溪流)后,3.0 的主要版本為我們提供了棄用舊消息格式(即 v0 和 v1)的好機(jī)會。

          這些格式今天很少使用。在 3.0 中,如果用戶將代理配置為使用消息格式 v0 或 v1,他們將收到警告。

          此選項(xiàng)將在 Kafka 4.0 中刪除(有關(guān)詳細(xì)信息和棄用 v0 和 v1 消息格式的影響,請參閱 KIP-724)。

          ⑨KIP-707:KafkaFuture 的未來


          當(dāng) KafkaFuture 引入該類型以促進(jìn) Kafka AdminClient 的實(shí)現(xiàn)時(shí),Java 8 之前的版本仍在廣泛使用,并且 Kafka 正式支持 Java 7。

          快進(jìn)幾年后,現(xiàn)在 Kafka 運(yùn)行在支持CompletionStage和 CompletableFuture 類類型的 Java 版本上。

          使用 KIP-707,KafkaFuture 添加了一種返回 CompletionStage 對象的方法,并以 KafkaFuture 向后兼容的方式增強(qiáng)了可用性。

          ⑩KIP-466:添加對 List<T> 序列化和反序列化的支持


          KIP-466為泛型列表的序列化和反序列化添加了新的類和方法——這一特性對 Kafka 客戶端和 Kafka Streams 都非常有用。

          ?KIP-734:改進(jìn) AdminClient.listOffsets 以返回時(shí)間戳和具有最大時(shí)間戳的記錄的偏移量


          用戶列出 Kafka 主題/分區(qū)偏移量的功能已得到擴(kuò)展。使用 KIP-734,用戶現(xiàn)在可以要求 AdminClient 返回主題/分區(qū)中具有最高時(shí)間戳的記錄的偏移量和時(shí)間戳。

          這是不是與什么的 AdminClient 收益已經(jīng)為最新的偏移,這是下一個(gè)記錄的偏移,在主題/分區(qū)寫入混淆。

          這個(gè)擴(kuò)展現(xiàn)有 ListOffsets API 允許用戶探測生動活潑的通過詢問哪個(gè)是最近寫入的記錄的偏移量以及它的時(shí)間戳是什么來分區(qū)。


          Kafka Connect



          ①KIP-745:連接 API 以重新啟動連接器和任務(wù)


          在 Kafka Connect 中,連接器在運(yùn)行時(shí)表示為一組Connector類實(shí)例和一個(gè)或多個(gè)Task類實(shí)例,并且通過 Connect REST API 可用的連接器上的大多數(shù)操作都可以應(yīng)用于整個(gè)組。

          從一開始,一個(gè)值得注意的例外 restart 是 Connector 和 Task 實(shí)例的端點(diǎn)。要重新啟動整個(gè)連接器,用戶必須單獨(dú)調(diào)用以重新啟動連接器實(shí)例和任務(wù)實(shí)例。

          在 3.0 中,KIP-745 使用戶能夠通過一次調(diào)用重新啟動所有或僅失敗的連接器 Connector 和 Task 實(shí)例。此功能是附加功能,restartREST API 的先前行為保持不變。

          ②KIP-738:刪除 Connect 的內(nèi)部轉(zhuǎn)換器屬性


          在之前的主版本(Apache Kafka 2.0)中棄用它們之后,internal.key.converter 并 internal.value.converter 在 Connect 工作器的配置中作為配置屬性和前綴被刪除。

          展望未來,內(nèi)部 Connect 主題將專門使用 JsonConverter 來存儲沒有嵌入模式的記錄。

          任何使用不同轉(zhuǎn)換器的現(xiàn)有 Connect 集群都必須將其內(nèi)部主題移植到新格式(有關(guān)升級路徑的詳細(xì)信息,請參閱 KIP-738)。

          ③KIP-722:默認(rèn)啟用連接器客戶端覆蓋


          從 Apache Kafka 2.3.0 開始,可以配置連接器工作器以允許連接器配置覆蓋連接器使用的 Kafka 客戶端屬性。

          這是一個(gè)廣泛使用的功能,現(xiàn)在有機(jī)會發(fā)布一個(gè)主要版本,默認(rèn)啟用覆蓋連接器客戶端屬性的功能(默認(rèn) connector.client.config.override.policy 設(shè)置為 All)。

          ④KIP-721:在連接 Log4j 配置中啟用連接器日志上下文


          另一個(gè)在 2.3.0 中引入但到目前為止尚未默認(rèn)啟用的功能是連接器日志上下文。這在 3.0 中發(fā)生了變化,連接器上下文默認(rèn)添加 log4j 到 Connect 工作器的日志模式中。

          從以前的版本升級到 3.0 將 log4j 通過在適當(dāng)?shù)那闆r下添加連接器上下文來更改導(dǎo)出的日志行的格式。


          Kafka Streams



          ①KIP-695:進(jìn)一步改進(jìn) Kafka Streams 時(shí)間戳同步


          KIP-695 增強(qiáng)了 Streams 任務(wù)如何選擇獲取記錄的語義,并擴(kuò)展了配置屬性的含義和可用值 max.task.idle.ms。

          此更改需要 Kafka 消費(fèi)者 API 中的一種新方法,currentLag 如果本地已知且無需聯(lián)系 Kafka Broker,則能夠返回特定分區(qū)的消費(fèi)者滯后。

          ②KIP-715:在流中公開提交的偏移量


          3.0 開始,三個(gè)新的方法添加到 TaskMetadata 接口:committedOffsets,endOffsets 和 timeCurrentIdlingStarted。這些方法可以允許 Streams 應(yīng)用程序跟蹤其任務(wù)的進(jìn)度和運(yùn)行狀況。

          ③KIP-740:清理公共 API TaskId


          KIP-740 代表了 TaskId 該類的重大革新。有幾種方法和所有內(nèi)部字段已被棄用,新的 subtopology() 和 partition() 干將替換舊 topicGroupId 和 partition 字段(參見 KIP-744 的相關(guān)變化和修正 KIP-740)。

          ④KIP-744:遷移 TaskMetadata,并 ThreadMetadata 與內(nèi)部實(shí)現(xiàn)的接口


          KIP-744 將 KIP-740 提出的更改更進(jìn)一步,并將實(shí)現(xiàn)與許多類的公共 API 分開。

          為了實(shí)現(xiàn)這一點(diǎn),引入了新的接口 TaskMetadata、ThreadMetadata 和 StreamsMetadata,而棄用了具有相同名稱的現(xiàn)有類。

          ⑤KIP-666:添加 Instant 基于方法到 ReadOnlySessionStore


          交互式查詢 API 擴(kuò)展了 ReadOnlySessionStore 和 SessionStore 接口中的一組新方法,這些方法接受 Instant 數(shù)據(jù)類型的參數(shù)。此更改將影響需要實(shí)現(xiàn)新方法的任何自定義只讀交互式查詢會話存儲實(shí)現(xiàn)。

          ⑥KIP-622:添加 currentSystemTimeMs 和 currentStreamTimeMs 到 ProcessorContext


          該 ProcessorContext 增加在 3.0 兩個(gè)新的方法,currentSystemTimeMs 和 currentStreamTimeMs。

          新方法使用戶能夠分別查詢緩存的系統(tǒng)時(shí)間和流時(shí)間,并且可以在生產(chǎn)和測試代碼中以統(tǒng)一的方式使用它們。

          ⑦KIP-743:刪除 0.10.0-2.4Streams 內(nèi)置指標(biāo)版本配置的配置值


          3.0 中取消了對 Streams 中內(nèi)置指標(biāo)的舊指標(biāo)結(jié)構(gòu)的支持。KIP-743 正在 0.10.0-2.4 從配置屬性中刪除該值 built.in.metrics.version。

          這 latest 是目前此屬性的唯一有效值(自 2.5 以來一直是默認(rèn)值)。

          ⑧KIP-741:將默認(rèn) SerDe 更改為 null


          刪除了默認(rèn) SerDe 屬性的先前默認(rèn)值。流過去默認(rèn)為 ByteArraySerde。

          用 3.0 開始,沒有缺省,和用戶需要任一組其的 SerDes 根據(jù)需要在 API 中或通過設(shè)置默認(rèn) DEFAULT_KEY_SERDE_CLASS_CONFIG 和 DEFAULT_VALUE_SERDE_CLASS_CONFIG 在它們的流配置。

          先前的默認(rèn)值幾乎總是不適用于實(shí)際應(yīng)用程序,并且造成的混亂多于方便。

          ⑨KIP-733:更改 Kafka Streams 默認(rèn)復(fù)制因子配置


          有了主要版本的機(jī)會,Streams 配置屬性的默認(rèn)值replication.factor會從 1 更改為 -1。

          這將允許新的 Streams 應(yīng)用程序使用在 Kafka 代理中定義的默認(rèn)復(fù)制因子,因此在它們轉(zhuǎn)移到生產(chǎn)時(shí)不需要設(shè)置此配置值。請注意,新的默認(rèn)值需要 Kafka Brokers 2.5 或更高版本。

          ⑩KIP-732:棄用 eos-alpha 并用 eos-v2 替換 eos-beta


          在 3.0 中不推薦使用的另一個(gè) Streams 配置值是 exactly_once 作為屬性的值 processing.guarantee。

          該值 exactly_once 對應(yīng)于 Exactly Once Semantics (EOS) 的原始實(shí)現(xiàn),可用于連接到 Kafka 集群版本 0.11.0 或更高版本的任何 Streams 應(yīng)用程序。

          此 EOS 的第一實(shí)現(xiàn)已經(jīng)通過流第二實(shí)施 EOS 的,這是由值表示取代 exactly_once_beta 在 processing.guarantee 性質(zhì)。

          展望未來,該名稱 exactly_once_beta 也已棄用并替換為新名稱 exactly_once_v2。

          在下一個(gè)主要版本(4.0)中,exactly_once 和 exactly_once_beta 都將被刪除,exactly_once_v2 作為 EOS 交付保證的唯一選項(xiàng)。

          ?KIP-725:優(yōu)化 WindowedSerializer 和 WindowedDeserializer 的配置


          配置屬性 default.windowed.key.serde.inner 和 default.windowed.value.serde.inner 已棄用。

          取而代之的是 windowed.inner.class.serde 供消費(fèi)者客戶端使用的單個(gè)新屬性。

          建議 Kafka Streams 用戶通過將其傳遞到 SerDe 構(gòu)造函數(shù)來配置他們的窗口化 SerDe,然后在拓?fù)渲惺褂盟娜魏蔚胤教峁?SerDe。

          ?KIP-633:棄用 Streams 中寬限期的 24 小時(shí)默認(rèn)值


          在 Kafka Streams 中,允許窗口操作根據(jù)稱為寬限期的配置屬性處理窗口外的記錄。

          以前,這個(gè)配置是可選的,很容易錯(cuò)過,導(dǎo)致默認(rèn)為 24 小時(shí)。這是 Suppression 運(yùn)營商用戶經(jīng)常感到困惑的原因,因?yàn)樗鼤彌_記錄直到寬限期結(jié)束,因此會增加 24 小時(shí)的延遲。

          在 3.0 中,Windows 類通過工廠方法得到增強(qiáng),這些工廠方法要求它們使用自定義寬限期或根本沒有寬限期來構(gòu)造。已棄用默認(rèn)寬限期為 24 小時(shí)的舊工廠方法,以及與 grace() 已設(shè)置此配置的新工廠方法不兼容的相應(yīng) API。

          ?KIP-623:internal-topics 為流應(yīng)用程序重置工具添加“ ”選項(xiàng)


          通過 kafka-streams-application-reset 添加新的命令行參數(shù),應(yīng)用程序重置工具的 Streams 使用變得更加靈活:--internal-topics。

          新參數(shù)接受逗號分隔的主題名稱列表,這些名稱對應(yīng)于可以使用此應(yīng)用程序工具安排刪除的內(nèi)部主題。

          將此新參數(shù)與現(xiàn)有參數(shù)相結(jié)合,--dry-run 允許用戶在實(shí)際執(zhí)行刪除操作之前確認(rèn)將刪除哪些主題并在必要時(shí)指定它們的子集。


          MirrorMaker


          ①KIP-720:棄用 MirrorMaker v1


          在 3.0 中,不推薦使用 MirrorMaker 的第一個(gè)版本。展望未來,新功能的開發(fā)和重大改進(jìn)將集中在 MirrorMaker 2(MM2)上。

          ②KIP-716:允許使用 MirrorMaker2 配置偏移同步主題的位置


          在 3.0 中,用戶現(xiàn)在可以配置 MirrorMaker2 創(chuàng)建和存儲用于轉(zhuǎn)換消費(fèi)者組偏移量的內(nèi)部主題的位置。

          這將允許 MirrorMaker2 的用戶將源 Kafka 集群維護(hù)為嚴(yán)格只讀的集群,并使用不同的 Kafka 集群來存儲偏移記錄(即目標(biāo) Kafka 集群,甚至是源和目標(biāo)集群之外的第三個(gè)集群)。

          Apache Kafka 3.0 是 Apache Kafka 項(xiàng)目向前邁出的重要一步。


          1. Java17,有史以來最快 JDK

          2. Kafka 面試必備知識點(diǎn),加分項(xiàng)

          3. 用 Java 開發(fā)一個(gè)打飛機(jī)小游戲(附完整源碼)

          4. IDEA 配置注釋模板

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九一视频在线观看久久网 | 日本有码第1页 | 黄色在线免费一级视频 | 国产最新视频 | 一区二区三区韩国av夜夜骚 |