Kafka Consumer auto.offset.reset 理解

这篇具有很好参考价值的文章主要介绍了Kafka Consumer auto.offset.reset 理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先来一下 kafka 官网对于 auto.offset.reset 的解释:
autooffsetreset,mq,kafka,分布式
上面的描述挺准确的,但如果没有相关背景会感觉很懵逼。网上也有很多文章讲这个东西并给了很多例子,看了之后总感觉没有理解清楚。

先来看一下怎么查看消费者 group 的 offset 情况:
每个 consumer group 会为每个消费的 partition 保存 offsets,这些 offsets 被保存在 kafka 的内部 topic:__consumer_offsets。
假设有一个 group:demo-consumer-group 和一个 topic:demo-topic,并且只有一个分区,先向其中发送两条消息。

运行 kafka 的管理脚本:

bin/kafka-consumer-groups.sh --describe --bootstrap-server 127.0.0.1:9092 --group demo-consumer-group

autooffsetreset,mq,kafka,分布式
重点:下面的描述都是针对一个消费者 group 的,不同消费者 group 的 CURRENT-OFFSET、LOG-END-OFFSET、LAG 将会重新计算。

这个 partition 有两条消息,所以 LOG-END-OFFSET 是 2。
当有消费者 A 来消费这个分区的时候,auto.offset.reset 被设置成 latest,因为还没有正确设置 offset,这个消费者不会消费之前的消息,从 CURRENT-OFFSET 可以看出来。LAG 表示当前消费者还剩多少消息没有消费。

这里有个数据丢失的场景, 当这个消费者 A 收到第三条消息的时候,如果处理失败没有提交 offset,LOG-END-OFFSET 变成了 3,但是 CURRENT-OFFSET 还是未设置。这个时候发生重平衡,消费者 B 被分配到来消费这个分区的消息,消费者 B 也是消费不到第三个消息的。

当消费者正常消费消息后,CURRENT-OFFSET 将会被设置,即使消费者停了也是有这个记录的。当有新的消费者重新启动开始消费的时候,如果 CURRENT-OFFSET 有值,auto.offset.reset 设置成什么已经不重要了,都将会从 CURRENT-OFFSET 的下一个 offset 进行消费。

所以 auto.offset.reset 这个配置的设置是跟 CURRENT-OFFSET 是有关系的,如果 CURRENT-OFFSET 没有设置值,那 earliest 就从这个 partition 从头到尾开始消费,latest 不会消费消息,如果 CURRENT-OFFSET 有值,就是 CURRENT-OFFSET 指向的下一个 offset 开始消费。

有了这个知识点,应该可以看懂这篇博客了:
Kafka auto.offset.reset值详解

所以当新开一个 消费者组的时候如果使用了 earliest 的话,会消费那个 partition 之前的所有消息,那就需要考虑数据的容量和消费资源是否足够的影响了。

参考:
Kafka Consumer Auto Offset Reset文章来源地址https://www.toymoban.com/news/detail-541025.html

到了这里,关于Kafka Consumer auto.offset.reset 理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka中Consumer源码解读

    本课程的核心技术点如下: 1、consumer初始化 2、如何选举Consumer Leader 3、Consumer Leader是如何制定分区方案 4、Consumer如何拉取数据 5、Consumer的自动偏移量提交 从KafkaConsumer的构造方法出发,我们跟踪到核心实现方法 这个方法的前面代码部分都是一些配置,我们分析源码要抓核心

    2024年02月09日
    浏览(27)
  • 简单聊聊Kafka的Consumer

    我们知道消息队列一般有两种实现方式,(1)Push(推模式) (2)Pull(拉模式),那么 Kafka Consumer 究竟采用哪种方式进行消费的呢? 其实 Kafka Consumer 采用的是主动拉取 Broker 数据进行消费的即 Pull 模式 。这两种方式各有优劣,我们来分析一下: 1)、为什么不采用Push模式?**如果是选择

    2024年01月15日
    浏览(27)
  • kafka之消费者(Consumer)

    1、kafka消费者消费方式         kafka 的消费者(Consumer)采用 pull 的方式主动从 broker 中拉取数据,这种不足之处会有:当 broker 中没有消息时,消费者会不断循环取数据,一直返回空数据。 2、消费者组 Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组

    2024年01月20日
    浏览(32)
  • Kafka整理-Consumer(消费者)

    在Apache Kafka中,消费者(Consumer)是负责从Kafka的主题(Topics)读取数据的客户端应用程序。Kafka消费者的主要特点和工作原理如下: 1、订阅主题: 消费者可以订阅一个或多个Kafka主题,并从中读取数据。 2、消费者群组(Consumer Groups): 消费者可以组成消费者群组。在一个

    2024年04月10日
    浏览(40)
  • Kafka 的 Consumer Group 解读

    作为一份笔记,本文再次梳理一下 Kafka 的 Consumer Group。我们知道,一个 Topic 往往会有多个 Partition,一条消息只会被写到一个 Kafka 的 Partition 中,那 Consumer 是怎么消费 Message 的呢? Consumer Group 又从中起到了什么作用呢? 首先,我们必须要非常清楚地明确一点: Consumer Group

    2024年01月20日
    浏览(28)
  • SpringBoot中使用Kafka报错:Failed to construct kafka consumer

    在SpringBoot项目中使用了Kafka,在启动的过程中报错 原因在报错中很清晰了,消费者反序列化使用的类错误 把spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.IntegerSerializer 改为 spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.IntegerDeserializer 就好了

    2024年02月11日
    浏览(33)
  • kafka查询offset&生产者offset计算&消费offset计算

    1、简介 ​ kafka的介绍:略…(有兴趣的同学可自行Google,这与本文无关 ^ _ ^) 2、需求背景 ​ 对kafka做监控,需要获取到kafka接收到消息的offset和被消费者消费掉消息的offset,编写接口将数值交给prometheus,直接观察判断kafka的消费性能如何。(如何自定义prometheus的监控指标后续

    2023年04月25日
    浏览(71)
  • kafka—offset偏移量

    offset定义 :消费者再消费的过程中通过offset来记录消费数据的具体位置 offset存放的位置 :从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic(系统主题)中,名为__consumer_offsets,即offset维护在系统主题中 说明:__consumer_offsets 主题里面采用 key 和 value 的方式存储数

    2024年02月05日
    浏览(59)
  • Kafka之offset位移

    offset :在 Apache Kafka 中,offset 是一个用来唯一标识消息在分区中位置的数字。每个分区中的消息都会被分配一个唯一的 offset 值,用来表示该消息在该分区中的位置。消费者可以通过记录自己消费的最后一个 offset 值来跟踪自己消费消息的进度,确保不会漏掉消息或者重复消

    2024年04月10日
    浏览(32)
  • kafka-consumer-groups.sh

    通过 kafka-consumer-groups.sh 脚本查看或变更消费组的信息。 查看消费者组信息 查看指定消费者组的消费位移 消费组一共有 Dead 、Empty 、PreparingRebalance 、CompletingRebalance 、Stable 这几种状态,正常情况下, 一个具有消费者成员的消费组的状态为Stable 。可以通过 state 参数来查看消

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包