KafkaManager對offset的兩種管理方式

OffsetManager主要提供對offset的保存和讀取,每一個broker都有一個OffsetManager實例,kafka管理topic的偏移量有2種方式:緩存

一、ZookeeperOffsetManager:調用zookeeper來存儲和接收offset日誌

Consumer offset:
/consumers/[groupId]/offsets/[topic]/[partitionId] /offset numberkafka

二、DefaultOffsetManager:提供消費者offsets內置的offset管理,即把偏移量提交至kafka內部,主要由offsets.storage參數決定,默認爲zookeeper。也就是說若是配置offsets.storage= kafka,則kafka會把這種offsetcommit請求轉變爲一種Producer,保存至topic爲「__consumer_offsets」的log裏面。it

offsets是怎麼保存到DefaultOffsetManager?io

除了將offset做爲logs保存到磁盤上,DefaultOffsetManager維護了一張能快速服務於offset抓取請求的consumer offsets表.
broker在offsets表(緩存)中包含僅僅是」offsets topic」的partitions中屬於leader partition對應的條目(存儲的是offset).
(即這些partitions的replicas只會在他們本身的logs中有offset信息,並不會對應offset表中的條目). zookeeper

offsets topic的logs的segment大小相比正常的topics設置的很低,默認」offsets.topic.segment.bytes」=10MB.
這樣LogCleaner會更快地選出未清理的segments,結果就是可以更頻繁地清理. 一樣log的大小設置的越小也有助於
減小讀取logs的時間,在把讀取出來的logs信息放到offsets緩存中也更快(好比重啓kafka時會從新加載日誌文件). 配置

相關文章
相關標籤/搜索