1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Kafka 3.0重磅發(fā)布,都更新了些啥?

        共 7909字,需瀏覽 16分鐘

         ·

        2021-10-08 18:07


        Kafka 設(shè)計(jì)之初被用于消息隊(duì)列,自 2011 年由 LinkedIn 開源以來,Kafka 迅速從消息隊(duì)列演變?yōu)槌墒斓氖录魈幚砥脚_(tái)。

        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è)重要的版本更新,其中包括許多新的功能。

        例如:

        • 已棄用對(duì) Java 8 和 Scala 2.12 的支持,對(duì)它們的支持將在 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 請(qǐng)求。

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

        • 能夠在 Kafka Connect 的一次調(diào)用中重新啟動(dòng)連接器的任務(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 更改以及對(duì) KRaft 的改進(jìn)——Apache Kafka 的內(nèi)置共識(shí)機(jī)制將取代 Apache ZooKeeper?。

        雖然 KRaft 尚未被推薦用于生產(chǎn)(已知差距列表),但對(duì) 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 中對(duì) Java 8 的支持

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

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

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


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


        KIP-630:Kafka Raft 快照

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

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

        隨著此狀態(tài)的增長(zhǎng),Kafka Raft Snapshot 提供了一種有效的方式來存儲(chǔ)、加載和復(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)者會(huì)話超時(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 請(qǐng)求以接受多個(gè)組 ID

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

        在 3.0 和 KIP-709 中,fetch 和 AdminClient API 被擴(kuò)展為支持在單個(gè)請(qǐng)求/響應(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 成為可能,它增加了對(duì)通過一個(gè)請(qǐng)求發(fā)現(xiàn)多個(gè)組的協(xié)調(diào)器的支持。

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

        KIP-724:刪除對(duì)消息格式 v0 和 v1 的支持

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

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

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

        此選項(xiàng)將在 Kafka 4.0 中刪除(有關(guān)詳細(xì)信息和棄用 v0 和 v1 消息格式的影響,請(qǐng)參閱 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 對(duì)象的方法,并以 KafkaFuture 向后兼容的方式增強(qiáng)了可用性。

        KIP-466:添加對(duì) List 序列化和反序列化的支持

        KIP-466為泛型列表的序列化和反序列化添加了新的類和方法——這一特性對(duì) 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 允許用戶探測(cè)生動(dòng)活潑的通過詢問哪個(gè)是最近寫入的記錄的偏移量以及它的時(shí)間戳是什么來分區(qū)。


        Kafka Connect


        KIP-745:連接 API 以重新啟動(dòng)連接器和任務(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)。要重新啟動(dòng)整個(gè)連接器,用戶必須單獨(dú)調(diào)用以重新啟動(dòng)連接器實(shí)例和任務(wù)實(shí)例。

        在 3.0 中,KIP-745 使用戶能夠通過一次調(diào)用重新啟動(dòng)所有或僅失敗的連接器 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 來存儲(chǔ)沒有嵌入模式的記錄。

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

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

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

        這是一個(gè)廣泛使用的功能,現(xiàn)在有機(jī)會(huì)發(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 工作器的日志模式中。

        從以前的版本升級(jí)到 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)新方法的任何自定義只讀交互式查詢會(huì)話存儲(chǔ)實(shí)現(xiàn)。

        KIP-622:添加 currentSystemTimeMs 和 currentStreamTimeMs 到 ProcessorContext

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

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

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

        3.0 中取消了對(duì) 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ī)會(huì),Streams 配置屬性的默認(rèn)值 replication.factor 會(huì)從 1 更改為 -1。

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

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

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

        該值 exactly_once 對(duì)應(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)營(yíng)商用戶經(jīng)常感到困惑的原因,因?yàn)樗鼤?huì)緩沖記錄直到寬限期結(jié)束,因此會(huì)增加 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ù)接受逗號(hào)分隔的主題名稱列表,這些名稱對(duì)應(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)建和存儲(chǔ)用于轉(zhuǎn)換消費(fèi)者組偏移量的內(nèi)部主題的位置。

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

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

        更多詳情可查看:https://blogs.apache.org/kafka

        ?關(guān)注公眾號(hào):Java后端編程,回復(fù)下面關(guān)鍵字?

        要Java學(xué)習(xí)完整路線,回復(fù)??路線?

        缺Java入門視頻,回復(fù)?視頻?

        要Java面試經(jīng)驗(yàn),回復(fù)??面試?

        缺Java項(xiàng)目,回復(fù):?項(xiàng)目?

        進(jìn)Java粉絲群:?加群?


        PS:如果覺得我的分享不錯(cuò),歡迎大家隨手點(diǎn)贊、在看。

        (完)




        加我"微信"?獲取一份 最新Java面試題資料

        請(qǐng)備注:666,不然不通過~


        最近好文


        1、GitHub 近兩萬 Star,可一鍵生成前后端代碼

        2、Spring 官方為什么建議構(gòu)造器注入?

        3、10000 字講清楚 Spring Boot 注解原理

        4、13個(gè)優(yōu)秀的 Vue 開源項(xiàng)目及合集推薦

        5、Java項(xiàng)目實(shí)戰(zhàn):利用注解 + 反射消除重復(fù)代碼



        最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
        獲取方式:關(guān)注公眾號(hào)并回復(fù)?java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
        明天見(??ω??)??
        瀏覽 35
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            99精品国产免费久久久久久按摩 | 国产片婬乱18一级毛片视頻 | 黄色a一级片 | 亚洲精品99久久久久中文字幕 | 日本一二三区视频在线 | 亚洲无码图 | 男女免费视频在线观看 | 黄色网址在线观看视频 | 国产蜜臀入口 | 五月婷婷无码 |