kafka offset入门理解

offset是什么?

对于每一个topic, Kafka集群都会维持一个分区日志
在这里插入图片描述
每个分区都是有序且顺序不可变的记录集,并且不断地追加到结构化的log文件。分区中的每一个记录都会分配一个id号来表示顺序,我们称之为offset,offset用来唯一的标识分区中每一条记录。

offset有什么用?

消费者在消费数据时,发生宕机后,再次重新启动后,消费的数据需要从宕机位置开始读取

  • 如果从头读取,有一部分消息一定出现了重复消费
  • 如果从宕机时的消费位置读取,就不会出现重复消费
    因此kafka设计了offset可以用于处理这种情况

如何维护offset的数值?

有两种方式,

  • 自动提交,设置enable.auto.commit=true,更新的频率根据参数【auto.commit.interval.ms】来定。这种方式也被称为【at most once】,fetch到消息后就可以更新offset,无论是否消费成功。默认就是true

  • 手动提交,设置enable.auto.commit=false,这种方式称为【at least once】。fetch到消息后,等消费完成再调用方法【consumer.commitSync()】,手动更新offset;如果消费失败,则offset也不会更新,此条消息会被重复消费一次

offset实体在什么位置?

0.9.0版本以前.这些数值维护在zookeeper中,但是zk不适合大量写入.后来做了改动
0.9.0 版本以后,数据维护在kafka的_consumer_offsets主题下.
内部结构包括
groupid:topicName_partition offset

如何利用API操作offset?

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值