老司机6517 2021-08-16 14:10 采纳率: 0%
浏览 92

kafka异步提交偏移量的问题

关于kafka异步提交偏移量,一直有一个疑问:
就是消费者在一次拉取后,拉取到偏移量为N到N+10的十条消息,并进行消费,之后采用异步提交偏移量N+11。因为是异步提交,kafka客户端继续进行了下一拉取,如果这时候异步提交偏移量是在第二次拉取之后才成功的,那么kafka客户端的第二次拉取不是依然会从偏移量为N的地方拉取消息从而导致重复消费么?

  • 写回答

3条回答 默认 最新

  • CSDN专家-微编程 2021-08-17 09:31
    关注

    由于consumer在消费过程中可能会出现断电宕机等故障,consumer恢复后,需要从故障前的位置的继续消费,所以consumer需要实时记录自己消费到了哪个offset,以便故障恢复后继续消费
    Kafka 0.9版本之前,consumer默认将offset保存在Zookeeper中,从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为 _consumer_offsets

    在这里我们要引入一个叫做hw水位线的概念,注释:leader就是主机,follower就是从机(kafka配置在集群中)

    全称 high watermarker 水位线。
    ISR列表中,每个写入对应分区中leader副本的数据,follower会拉取数据期望与leader数据进行同步数据和offset,此刻因为网络延迟,会导致不同的follower拉取的速度不一样,在高并发场景下follower通常会滞后于leader,那么ISR内部offset最低的那个值就是HW。
    作用:
    消费者只能消费HW这个offset以下的数据。

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 8月16日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问