前言

下面叙述的概念我曾去官网查询无果,于是查询了大量的技术帖子进行汇总。这个结论是目前普遍接受的解释!
参考贴链接
参考贴链接

特别注意

  • 下面讨论的是基于offset连续,且无压缩的情况!每个offset都只有一个消息,且连续!
    下面讨论的是基于offset连续,且无压缩的情况!每个offset都只有一个消息,且连续!
    下面讨论的是基于offset连续,且无压缩的情况!每个offset都只有一个消息,且连续!

重要的事说三遍(后面的offset+1 中的1基于连续!!!!)

offset(偏移量)

kafka中关于HW,LEO,offset之间的关系官方的解释是每一个offset就是一个消息!
这里面会发现offset不连续,其实是进行了压缩,例如79到86.如果指定offset来消费消息,那么从79到86指定是等价的!这里就不展开说了,有兴趣自己查阅文档!

kafka中关于HW,LEO,offset之间的关系

HW(High Watermark高水位)

  • HW我在官方文档里没有查到其定义,但是看了很多技术帖子发现,这个是在ISR副本中定义的。
  • ISR(in-sync replica )分区所有副本中offset最小的副本他最后一条消息后的待写位置。也是该副本的LEO!
  • HW之前的消息是不能被customer消费的,即消费者可见的message的offset是HW-1

LEO(Log End Offset 日志结束位)

  • ISR分区副本最后一条消息的待写位!即每个副本最大offset+1=LEO

在offset最小的那个副本中 LEO=HW!

相关文章: