kafka offset的作用?consumer消费的offset保存在哪

offset是一个连续的用于定位被追加到分区的每一个消息的序列号。

一个消费组消费partition,需要保存offset记录消费到哪,这样保证一个partition内部消费的顺序性,以前保存在zk中,由于zk的写性能不好,以前的解决方法都是consumer每隔一分钟上报一次。这里zk的性能严重影响了消费的速度,而且很容易出现重复消费。

在0.10版本后,kafka把这个offset的保存,从zk总剥离,保存在一个名叫__consumeroffsets topic的topic中。写进消息的key由groupid、topic、partition组成,value是偏移量offset。topic配置的清理策略是compact。总是保留最新的key,其余删掉。一般情况下,每个key的offset都是缓存在内存中,查询的时候不用遍历partition,如果没有缓存,第一次就会遍历partition建立缓存,然后查询返回。


标签: 、面试
  • 回复
隐藏