AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

理解Kafka offset

來源: 責編: 時間:2023-09-25 10:37:47 323觀看
導讀日常開發中,相信大家都對 Kafka 有所耳聞,Kafka 作為一個分布式的流處理平臺,一般用來存儲和傳輸大量的消息數據。在 Kafka 中有三個重要概念,分別是 topic、partition 和 offset。topic 是 kafka 中的消息以主題為單位進

日常開發中,相信大家都對 Kafka 有所耳聞,Kafka 作為一個分布式的流處理平臺,一般用來存儲和傳輸大量的消息數據。在 Kafka 中有三個重要概念,分別是 topic、partition 和 offset。Ix628資訊網——每日最新資訊28at.com

  • topic 是 kafka 中的消息以主題為單位進行歸類的邏輯概念,生產者負責將消息發送到特定的主題,消費者負責訂閱主題并進行消費。
  • partition 是 topic 的物理概念,每個 topic 可以細分為多個 partition,每個 partition 只屬于單個 topic,并且包含不同的消息,partition 用于提高 topic 的存儲和消費的性能和可擴展性,可以將 topic 分散在多個 broker 上,并支持多個 consumer 并行消費。
  • offset 是 partition 中每條消息的唯一標識,是一個單調遞增且不變的值,由 kafka 自動維護,offset 用于定位和記錄消息在 partition 中的位置和消費進度,保證 partition 內的消息有序。

本文將給大家介紹 offset 的相關概念,大綱如下Ix628資訊網——每日最新資訊28at.com

  • offset 的作用和意義
  • offset 的存儲和管理
  • offset 的提交和重置
  • offset 的消費和保證

offset 的作用和意義

圖片Ix628資訊網——每日最新資訊28at.com

offset 是 Kafka 為每條消息分配的一個唯一的編號,它表示消息在分區中的順序位置。offset 是從 0 開始的,每當有新的消息寫入分區時,offset 就會加 1。offset 是不可變的,即使消息被刪除或過期,offset 也不會改變或重用。Ix628資訊網——每日最新資訊28at.com

offset 的作用主要有兩個:Ix628資訊網——每日最新資訊28at.com

  • 一是用來定位消息。通過指定 offset,消費者可以準確地找到分區中的某條消息,或者從某個位置開始消費消息。
  • 二是用來記錄消費進度。消費者在消費完一條消息后,需要提交 offset 來告訴 Kafka broker 自己消費到哪里了。這樣,如果消費者發生故障或重啟,它可以根據保存的 offset 來恢復消費狀態。

offset 的存儲和管理

offset 的存儲和管理主要涉及到兩個方面:生產者端和消費者端。Ix628資訊網——每日最新資訊28at.com

生產者端

生產者在向 Kafka 發送消息時,可以指定一個分區鍵(Partition Key),Kafka 會根據這個鍵和分區算法來決定消息應該發送到哪個分區。如果沒有指定分區鍵,Kafka 會采用輪詢或隨機的方式來選擇分區。生產者也可以自定義分區算法。Ix628資訊網——每日最新資訊28at.com

當消息被寫入到分區后,Kafka broker 會為消息分配一個 offset,并返回給生產者。生產者可以根據返回的 offset 來確認消息是否成功寫入,并進行重試或其他處理。Ix628資訊網——每日最新資訊28at.com

消費者端

消費者在消費 Kafka 消息時,需要維護一個當前消費的 offset 值,以及一個已提交的 offset 值。當前消費的 offset 值表示消費者正在消費的消息的位置,已提交的 offset 值表示消費者已經確認消費過的消息的位置。Ix628資訊網——每日最新資訊28at.com

消費者在消費完一條消息后,需要提交 offset 來更新已提交的 offset 值。提交 offset 的方式有兩種:自動提交和手動提交。Ix628資訊網——每日最新資訊28at.com

  • 自動提交:Kafka 提供了一個配置參數 enable.auto.commit,默認為 true,表示開啟自動提交功能。自動提交功能會在后臺定期(由 auto.commit.interval.ms 參數控制)將當前消費的 offset 值提交給 Kafka broker。
  • 手動提交:如果 enable.auto.commit 設置為 false,則表示關閉自動提交功能,此時消費者需要手動調用 commitSync 或 commitAsync 方法來提交 offset。手動提交功能可以讓消費者更靈活地控制何時以及如何提交 offset。

無論是自動提交還是手動提交,offset 的實際存儲位置都是在 Kafka 的一個內置主題中:__consumer_offsets。這個主題有 50 個分區(可配置),每個分區存儲一部分消費組(Consumer Group)的 offset 信息。Kafka broker 會根據消費組 ID 和主題名來計算出一個哈希值,并將其映射到 __consumer_offsets 主題的某個分區上。Ix628資訊網——每日最新資訊28at.com

__consumer_offsets 主題是 Kafka 0.9.0 版本引入的新特性,之前的版本是將 offset 存儲在 Zookeeper 中。但是 Zookeeper 不適合大量寫入,因此后來改為存儲在 Kafka 自身中,提高了性能和可靠性。Ix628資訊網——每日最新資訊28at.com

offset 的提交和重置

提交 offset 是消費者在消費完一條消息后,將當前消費的 offset 值更新到 Kafka broker 中的操作。提交 offset 的目的是為了記錄消費進度,以便在消費者發生故障或重啟時,能夠從上次消費的位置繼續消費。Ix628資訊網——每日最新資訊28at.com

重置 offset 是消費者在啟動或運行過程中,將當前消費的 offset 值修改為其他值的操作。重置 offset 的目的是為了調整消費位置,以便在需要重新消費或跳過某些消息時,能夠實現這個需求。Ix628資訊網——每日最新資訊28at.com

提交 offset

提交 offset 的方式有兩種:自動提交和手動提交。前面已經介紹過這兩種方式的區別和用法,這里不再贅述。需要注意的是,無論是自動提交還是手動提交,都不保證提交成功。因為 Kafka broker 可能發生故障或網絡延遲,導致提交失敗或延遲。因此,消費者需要處理提交失敗或延遲的情況。Ix628資訊網——每日最新資訊28at.com

  • 提交失敗:如果提交失敗,消費者可以選擇重試或放棄。重試的話,可能會導致多次提交同一個 offset 值,但是不會影響正確性,因為 Kafka broker 會忽略重復的 offset 值。放棄的話,可能會導致下次啟動時重新消費已經消費過的消息,但是不會影響完整性,因為 Kafka 消息是冪等的。
  • 提交延遲:如果提交延遲,消費者可以選擇等待或繼續。等待的話,可能會導致消費速度變慢,或者超過 session.timeout.ms 參數設置的時間而被認為已經死亡。繼續的話,可能會導致下次啟動時漏掉一些沒有提交成功的消息。

重置 offset

重置 offset 的方式有兩種:手動重置和自動重置。手動重置是指消費者主動調用 seek 或 seekToBeginning 或 seekToEnd 方法來修改當前消費的 offset 值。自動重置是指消費者在啟動時根據 auto.offset.reset 參數來決定從哪個位置開始消費。Ix628資訊網——每日最新資訊28at.com

  • 手動重置:手動重置可以讓消費者精確地控制從哪個位置開始消費。例如,如果想要重新消費某個分區的所有消息,可以調用 seekToBeginning 方法將 offset 設置為 0;如果想要跳過某個分區的所有消息,可以調用 seekToEnd 方法將 offset 設置為最大值;如果想要從某個具體的位置開始消費,可以調用 seek 方法將 offset 設置為任意值。
  • 自動重置:自動重置可以讓消費者在啟動時根據 auto.offset.reset 參數來決定從哪個位置開始消費。auto.offset.reset 參數有三個可選值:earliest, latest 和 none。earliest 表示從最早的可用消息開始消費;latest 表示從最新的可用消息開始消費;none 表示如果沒有可用的 offset,則拋出異常。

offset 的消費和保證

offset 的消費和保證主要涉及到兩個方面:順序性和一致性。Ix628資訊網——每日最新資訊28at.com

順序性

順序性是指 Kafka 消息是否按照發送和接收的順序進行處理。Kafka 只保證分區內的順序性,即同一個分區內的消息按照 offset 的順序進行發送和接收。但是不保證主題內或跨主題的順序性,即不同分區內的消息可能會亂序發送和接收。因此,如果需要保證主題內或跨主題的順序性,需要在生產者和消費者端進行額外的處理,例如使用同一個分區鍵或同一個消費組。Ix628資訊網——每日最新資訊28at.com

一致性

一致性是指 Kafka 消息是否能夠被正確地發送和接收,不會出現丟失或重復的情況。Kafka 提供了三種不同級別的一致性保證:最多一次(At most once),最少一次(At least once)和精確一次(Exactly once)。Ix628資訊網——每日最新資訊28at.com

  • 最多一次:最多一次是指 Kafka 消息只會被發送或接收一次或零次,不會出現重復的情況,但是可能會出現丟失的情況。這種保證的實現方式是在生產者端關閉重試功能,在消費者端在消費消息之前提交 offset。這種保證適用于對消息丟失不敏感的場景,例如日志收集或監控。
  • 最少一次:最少一次是指 Kafka 消息只會被發送或接收一次或多次,不會出現丟失的情況,但是可能會出現重復的情況。這種保證的實現方式是在生產者端開啟重試功能,在消費者端在消費消息之后提交 offset。這種保證適用于對消息重復不敏感的場景,例如計數或累加。
  • 精確一次:精確一次是指 Kafka 消息只會被發送或接收一次,不會出現丟失或重復的情況。這種保證的實現方式是在生產者端和消費者端使用事務功能,在消費者端使用冪等功能。這種保證適用于對消息丟失和重復都敏感的場景,例如轉賬或支付。

本文鏈接:http://www.tebozhan.com/showinfo-26-11244-0.html理解Kafka offset

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: CSS Mask 與切圖藝術

下一篇: 不可變模式篇:非常抓狂,這特么到底是哪里不對?

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 6月iOS設備性能榜:M2穩居榜首 A系列只能等一手3nm來救

    沒有新品發布,自然iOS設備性能榜的上榜設備就沒有什么更替,僅僅只有跑分變化而產生的排名變動,畢竟蘋果新品的發布節奏就是這樣的,一年下來也就幾個移動端新品,不會像安卓廠商,一
  • 28個SpringBoot項目中常用注解,日常開發、求職面試不再懵圈

    前言在使用SpringBoot開發中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
Top