溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kafka核心中的偏移量機制Offset是怎么樣的

發(fā)布時間:2021-12-15 10:22:54 來源:億速云 閱讀:450 作者:柒染 欄目:云計算

這篇文章給大家介紹Kafka核心中的偏移量機制Offset是怎么樣的,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

    Kafka是由LinkIn開源的實時數(shù)據(jù)處理框架,目前已經(jīng)更新到2.3版本。不同于一般的消息中間件,Kafka通過數(shù)據(jù)持久化和磁盤讀寫獲得了極高的吞吐量,并可以不依賴Storm,SparkStreaming的流處理平臺,自己進行實時的流處理。

Kakfa的Offset機制是其最核心機制之一,由于API對于部分功能的實現(xiàn),我們有時并沒有手動去設(shè)置Offset,那么Kafka到底有幾個Offset呢?

一、生產(chǎn)者Offset

首先,我們先來看生產(chǎn)者的offset,我們知道Kafka是通過生產(chǎn)者將消息發(fā)送給某一個topic,消費者再消費這個topic的消息,當(dāng)然可能有多個生產(chǎn)者,多個消費者,還可能有消費者組的概念,這個稍后在討論。

當(dāng)生產(chǎn)者將消息發(fā)送給某一個topic時,要看有多少個分區(qū),因為kafka是通過分區(qū)機制實現(xiàn)分布式的。


Kafka核心中的偏移量機制Offset是怎么樣的

圖  生產(chǎn)者offset

通過此圖可以清晰的看到生產(chǎn)者的offset原理,不管是多少個生產(chǎn)者,還是我們規(guī)定了他們會寫入哪一個分區(qū),但只要他們寫入的時候,一定是每一個分區(qū)都有一個offset,這個offset就是生產(chǎn)者的offset,同時也是這個分區(qū)的最新最大的offset。

有些時候我們在開發(fā)生產(chǎn)者代碼時并沒有指定某一個分區(qū)的offset,可能是我們使用的單分區(qū),或者默認(rèn)均勻的寫入多個分區(qū),這個工作kafka幫我們完成了。

二、消費者Offset

再來看消費者端offset,要稍微復(fù)雜一些。

Kafka核心中的偏移量機制Offset是怎么樣的

圖 消費者offset

這是某一個分區(qū)的offset情況,我們已經(jīng)知道生產(chǎn)者寫入的offset是最新最大的值也就是12,而當(dāng)Consumer A進行消費時,他從0開始消費,一直消費到了9,他的offset就記錄在了9,Consumer B就紀(jì)錄在了11。等下一次他們再來消費時,他們可以選擇接著上一次的位置消費,當(dāng)然也可以選擇從頭消費,或者跳到最近的記錄并從“現(xiàn)在”開始消費。

這樣即使有多個分區(qū),消費者也能靈活使用。

Kafka核心中的偏移量機制Offset是怎么樣的

圖 消費者組

消費者組的概念其實并不影響對offset的理解,上面的情況Consumer A,Consumer B如果是同組就不能同時消費一個分區(qū)的消息,不同組的消費者可以同時消費一個分區(qū)的消息。

還有一種offset的說法,就是consumer消費未提交時,本地是有另外一個offset的,這個offset不一定與集群中記錄的offset一致。

所以,kafka每一個topic分區(qū)和生產(chǎn)者,消費者不同,是有多個offset的。

offset是指某一個分區(qū)的偏移量。

topic partition offset 這三個唯一確定一條消息。

生產(chǎn)者的offset其實就是最新的offset。

消費者的offset是他自己維護的,他可以選擇分區(qū)最開始,最新,也可以記住他消費到哪了。

消費者組是為了不同組的消費者可以同時消費一個分區(qū)的消息。

關(guān)于Kafka核心中的偏移量機制Offset是怎么樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI