kafka consumer消費者 offset groupID詳解


kafka consumer:消費者可以從多個broker中讀取數據。消費者可以消費多個topic中的數據。

因為Kafka的broker是無狀態的,所以consumer必須使用partition offset來記錄消費了多少數據。如果一個consumer指定了一個topic的offset,意味着該consumer已經消費了該offset之前的所有數據。consumer可以通過指定offset,從topic的指定位置開始消費數據。consumer的offset存儲在Zookeeper中。

offset:用來保存消費進度。offset表示在當前topic,當前groupID下消費到的位置。offset為earliest並不代表offset=1.在不進行過期配置的情況下,kafka消息默認7天時間就會過期。過期后其offset也就隨之發生變化,使得用數字進行配置的消費進度並不准確。

1) earliest:自動重置到最早的offset。

2) latest:看上去重置到最晚的offset。

3) none:如果邊更早的offset也沒有的話,就拋出異常給consumer,告訴consumer在整個consumer group中都沒有發現有這樣的offset。

groupID:
一個字符串用來指示一組consumer所在的組。相同的groupID表示在一個組里。相同的groupID消費記錄offset時,記錄的是同一個offset

所以,此處需要注意,(1)如果多個地方都使用相同的groupid,可能造成個別消費者消費不到的情況(2)如果單個消費者消費能力不足的話,可以啟動多個相同groupid的consumer消費,處理相同的邏輯。但是,多線程的時候,需要增加每個groupid下的partition分區數量,便於每個線程穩定讀取固定的partition,提高消費能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM