Kafka坑之一:Lag与HW、LEO

先说结论:kafka的消息滞后(Lag)是指已消费的偏移量(ConsumerOffset)与水位线(HW)之间的消息差,并非分区(partition)中已消费的偏移量(ConsumerOffset)与当前分区的最高日志位移(LOG-END-OFFSET简称LEO)之间的差,也就是说,并不是生产者所见的offset与已消费的offset的差。

一方面,对kafka来说,HW是其备份和恢复的关键,kafka是根据HW来判断数据是否丢失和恢复数据,而HW与LEO之间的数据有可能会丢失,因此这部分未同步的数据实际上相当于是无效数据,这部分数据实际只对生产者有意义(已经产出的意义,生产者可以通过kafka ack的设置,记录产出的数据位置,以帮助恢复HW与LEO之间的数据,恢复方法也只是重新生产这部分数据,如果无法重新生产,则数据丢失)。

另一方面,leader收到消息更新自己的LEO,follower从再从leader处同步消息,这个时间差决定了leader和follower之间存在消息差,同时也决定了HW和各个partiton的LEO之间存在的消息差,消费者在消费消息时对LEO是无察觉的,HW决定了消费者能消费到的最大offset,而LEO仅由kafka管理。因此对消费者来说,LEO也是无意义的。

在kafka有查看消费组详情的命令:kafka-consumer-groups.sh --bootstrap-server ip:port --group groupid --describe,通过这个命令可以根据groupid查看LAG、CURRENT-OFFSET、LOG-END-OFFSET等信息,LAG是消息滞后量,CURRENT-OFFSET是指已消费的偏移量(ConsumerOffset),而此处LOG-END-OFFSET却不是partition最高日志位移LEO,而是水位线HW!!!LAG即是HW与已消费的偏移量(ConsumerOffset)的差!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值