kafka内部topic __consumer_offsets(一)

kafka __consumer_offsets

介绍

kafka在0.10.x版本后默认将消费者组的位移提交到自带的topic__consumer_offsets里面,当有消费者第一次消费kafka数据时就会自动创建,它的副本数不受集群配置的topic副本数限制,分区数默认50(可以配置),默认压缩策略为compact

结构

在这里插入图片描述

key

  • version : 版本字段,不同kafka版本的version不同
  • group : 对应消费者组的groupid,这条消息要发送到__consumer_offset的哪个分区,是由这个字段决定的
  • topic : 主题名称
  • partition : 主题的分区

value

  • version : 版本字段,不同kafka版本的version不同
  • offset : 这个groupid消费这个topic到哪个位置了
  • metadata : 自定义元数据信息
  • commit_timestamp : 提交到kafka的时间
  • expire_timestamp : 过期时间, 当数据过期时会有一个定时任务去清理过期的消息

计算消息提交到__consumer_offsets哪个分区的算法

  • java
Math.abs("test".hashCode()) % 50;//48, 表示test这个groupid的offset记录提交到了__consumer_offset的48号分区里

查看__consumer_offsets的数据

//kafka0.11以后
kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 25 --broker-list localhost:9092 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter"
//kafka0.11以前
kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 25 --broker-list localhost:9092 --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter"

总结

__consumer_offsets这个topic官方建议不要随便修改它,如遇特殊情况:如1. 某个分区量过大。2. 数据不会自动清理。等问题 那么就需要人工处理了,至于怎么处理,在下个文章分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值