这篇文章主要介绍了kafka-consumer-offset位移问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇kafka-consumer-offset位移问题怎么解决文章都会有所收获,下面我们一起来看看吧。_consumer_offsets主题里面采用key和 value的方式存储数据。key是 group.id+topic+分区号,value 就是当前offset的值。每隔一段时间,kafka 内部会对这个topic进行compact(压缩),也就是每个group.id+topic+分区号就保留最新数据。Kafka0.9版本之前,consumer黑认将offset保存在Zookeeper中。0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为_consumer_offsets。将offset信息存储在zk中的不足:如果将offset信息存储在zk中,那么所有的consumer都会访问zk,会消耗大量的网络资源,消费速度慢。思想:_consumer_offsets为Kafka中的 topic,那就可以通过消费者进行消费。在配置文件 config/consumer.properties中添加配置exclude.internal.topics = false,默认是 true,表示不能消费系统主题。为了查看该系统主题数据,所以该参数修改为fals免费云主机域名e。修改以后执行分发命令:xsync consumer.properties。采用命令行方式,创建一个新的topic。启动生产者往atguigu生产数据。启动消费者消费atguigu数据。注意:指定消费者组名称,更好观察数据存储位置(key是 group.id+topic+分区号)。查看消费者消费主题_consumer_offsets。为了使我们能够专注于自己的业务逻辑,Kafka提供了自动提交offset的功能。自动提交offset的相关参数:enable.auto.commit:是否开启自动提交offset功能,默认是trueauto.commit.interval.ms:自动提交offset的时间间隔,默认是5s消费者配置代码:虽然自动提交offset十分简单便利,但由于其是基于时间提交的,开发人员难以把握offset提交的时机。因此Kafka还提供了手动提交offset的API。手动提交offset的方法有两种:分别是commitSync(同步提交)和commitAsync(异步提交)。两者的相同点是,都会将本次提交的一批数据最高的偏移量提交;不同点是,同步提交阻塞当前线程,一直到提交成功,并且会自动失败重试(由不可控因素导致,也会出现提交失败);而异步提交则没有失败重试机制,故有可能提交失败。commitSync
(同步提交):必须等待offset提交完毕,再去消费下一批数据。commitAsync
(异步提交):发送完提交offset请求后,就开始消费下一批数据了3.2.1 同步提交3.2.2 异步提交(生产常用)auto.offset.reset = earliest | latest | none 默认是latest。当Kafka 中没有初始偏移量(消费者组第一次消费)或服务器上不再存在当前偏移量时(例如该数据已被删除),该怎么办?earliest
:自动将偏移量重置为最早的偏移量,–from-beginning。latest
(默认值):自动将偏移量重置为最新偏移量。none
:如果未找到消费者组的先前偏移量,则向消费者抛出异常。任意指定offset位移开始消费。需求:在生产环境中,会遇到最近消费的几个小时数据异常,想重新按照时间消费。例如要求按照时间消费前一天的数据,怎么处理?场景1:重复消费。自动提交offset引起。场景1:漏消费。设置offset为手动提交,当offset被提交时,数据还在内存中未落盘,此时刚好消费者线程被kill掉,那么offset已经提交,但是数据未处理,导致这部分内存中的数据丢失。如果想完成Consumer端的精准一次性消费,那么需要Kafka消费端将消费过程和提交offset过程做原子绑定。此时我们需要将Kafka的offset保存到支持事务的自定义介质(比如MySQL)。这部分知识会在后续项目部分涉及。方案1:如果是Kafka消费能力不足,则可以考虑增加Topic的分区数,并且同时提升消费组的消费者数量,消费者数=分区数。(两者缺一不可)方案2:如果是下游的数据处理不及时:提高每批次拉取的数量。批次拉取数据过少(拉取数据/处理时间
关于“kafka-consumer-offset位移问题怎么解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“kafka-consumer-offset位移问题怎么解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
本篇内容主要讲解“vue怎么将二维数组转化为一维数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么将二维数组转化为一维数组”吧!数组嵌套数据,导致免费云主机域名循环不方便,想着将二维数组合并成一维数据,方…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。