Kafka消费者的偏移量和高级/简单消费者

Kafka的assignsubscribe订阅模式手动提交偏移量 一、前言: 使用Apache Kafka消费者组时,有一个为消费者分配对应分区partition的过程,我们可以使用“自动”subscribe“手动”assign的方式。 KafkaConsumer.subscribe():为consumer自动分配partition,有内部算法保证topic-partition以最优的方式均匀分配给同group下的不同consumer。 KafkaConsu... 阅读详情

Kafka消费者的偏移量和高级/简单消费者

提交和偏移量

提交:更新分区的当前位置称为提交,当前版本(0.10.1.1)用topic ___consumer_offsets 保存提交的偏移量

偏移量:消费者在Kafka追踪到消息在分区里的位置

消费者在崩溃或者有新的消费者加入群组,就会触发再均衡。这是需要读取最后一次偏移量,然后从偏移量指定的地方继续处理。提交的偏移量小于真实的偏移量,消息会被重复处理。大于真实的偏移量,消息会丢失。

Kafka存储偏移量的位置

kafka能灵活地管理offset,可以选择任意存储和格式来保存offset。KafkaOffsetMonitor目前支持以下流行的存储格式。

  • kafka0.8版本以前,offset默认存储在zookeeper中(基于Zookeeper)

  • kafka0.9版本以后,offset默认存储在内部的topic中(基于Kafka内部的topic)即前文说的 ___consumer_offsets这个topic

  • Storm Kafka Spout(默认情况下基于Zookeeper)这个没有验证,不过在目前我使用Storm框架中仍用上一种方法获取数据

KafkaOffsetMonitor每个运行的实例只能支持单一类型的存储格式。

kafka偏移量的相关配置

enable.auto.commit

true(默认):自动提交偏移量,可以通过配置 auto.commit.interval.ms属性来控制提交偏移量的频率。(基于时间间隔)

false:手动控制偏移量。可以在程序逻辑必要的时候提交偏移量,而不是基于时间隔。此时可以进行同步,异步,同步异步组合(参考相应api)。

auto.offset.reset

无法读取偏移量时候读取消息的设置

latest(默认):从最新记录读取数据。

earliest:从起始位置读取数据。


高级/简单消费者

目前,kafka有两类消费者:高级消费者(high-level consumer )和简单消费者( simple consumer )。在简单的消费者中,用户可以指定代理分区和偏移,但没有故障转移/负载均衡的支持。因此,具有要求3和4但不要求组/负载均衡的用户更愿意使用简单的消费者。基本上,高级消费者和简单的消费者有以下的区别。

1.自动/隐藏偏移管理(Offset Management )

2.自动(简单)分区分配

3.Broker 故障转移=>自动重新平衡

4.Consumer 故障转移=>自动重新平衡

如果希望控制偏移管理与其他人保持不变,一种选择是将高级消费者的当前ZK实现暴露给用户并允许他们覆盖; 另一种选择是更改高级使用者API以返回与消息关联的偏移量向量

如果想要控制分区分配,一个选项是更改高级使用者API以允许在创建流时传入此类配置信息; 另一个选项是ad-hoc:只需创建一个单分区主题并将其分配给使用者。

如果只希望自动分区分配更加“智能”并考虑共址,那么有一个选项是将主机/机架信息存储在ZK中,让负载均衡算法在进行计算时读取它们。

使简单的消费者复杂化可能会发生与现有应用程序兼容的风险,更好的操作是修补高级消费者。


参考资料

《Kafka权威指南》个人对这本书的定位是一本很经典很实用的工具书,阅读方法也是遇到相关问题再查询。

http://orchome.com/54比较好和全面的讲解了偏移量。

https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Client+Re-Design官方关于消费组的文档,讲的很细。


分区的问题大致总结了一些,不过具体的分区设置始终要与集群和不同组件结合来看的。

https://blog.csdn.net/jyj1100/article/details/82810970 Kafka分区问题的记录


最近有个关于偏移量问题的小随笔:https://blog.csdn.net/jyj1100/article/details/90736416kafka指定偏移量拉取与偏移量半自动提交

KAFKA __consumer_offsets 清理 KAFKA 的TOPIC __consumer_offsets 的清理 生产环境因kafka日志据量过大,导致磁盘空间占用满了,通过查看发现kafka的日志储存目录kafkadata占用90%的存储。 再进一步查找,发现目录下好多__consumer_offsets 生成的储存文件,每个文件1GB。 查找了一下kafka配置,发现kafka对部分topic的清理策略做了特殊处理,所以导致我们自己配置的清理策略未生效。 查看现有的__consumer_offsets 清理策略 ./kafka-con 阅读详情

相关推荐

一次kafka集群重启引发的线上问题

1. 背景 在某次运维发现线上的kafka server集群的默认配置的size太小,不能满足业务发送据的要求,导致业务阻塞,于是,更改了kafka server的某项参的size大小之后,并重启了线上kafka server集群。 在重启集群之后,线上实时业务消费kafka topic的消费者开始报错,在消费端的错误信息为: 消费方的error错误信息为: "Container exception": org.apache.kafka.common.errors.TimeoutException:

timchen525的专栏 7905

kafka-9-python操作kafka偏移量的处理

CMD>conda activate python36 CMD>pip install kafka 1 consumer.py from kafka import KafkaConsumer global false, null, true false = null = true = '' consumer = KafkaConsumer(bootstrap_servers=['IP:9092'], auto_offset_reset='latest', group_id="group1")

qq_20466211的博客 4893

kafka offset __consumer_offsets_ 原理/Compact 整理

我们在kafka的log文件中发现了还有很多以__consumer_offsets_的文件夹;总共50个; 由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsetstopic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 __consumer_offsets是 kafka 自行创建的,普通的 topic 相同。它存在的目的之一...

Top5软件工程硕士,先后在京东、字节从事多年Java后端开发、实时和离线大数据开发 3621

Kafka __consumer_offsets 占用磁盘空间过大处理

kafka 位移分区清理策略

Li Nan 的博客 3575

kafka问题集(二):__consumer_offsets topic的分区中有一个分区据很多,多达1T

仅个人实践中所遇到的问题,若有不对的,欢迎交流! 一、场景描述   kafka集群中有几台突然挂了,后台日志显示设备空间满了,消息无法写入__consumer_offsets topic的分区中了。查看kafka据目录下各个文件的大小,发现__consumer_offsets topic分区中有一个分区__consumer_offsets-5据很多,多达1T,而其他分区只有4KB,相差...

weixin_30254435的博客 767

kafka同步异步消费消息偏移量(四)

1. 消费者位置(consumer position) 因为kafka服务端不保存消息的状态,所以消费端需要自己去做很多事情。我们每次调用poll()方法他总是返回已经保存在生产者队列中还未被消费者消费的消息消息在每一个分区中都是顺序的,那么必然可以通过一个偏移量去确定每一条消息的位置。 偏移量在消费消息的过程中处于重要的作用。如果是自动提交消息,那么poll()方法会去在每次获取消息的时候...

rickiyang的博客 1万+

据面试必备:Kafka消费者订阅Topic机制及消费模式详解

Kafka消费者订阅Topic是其消费据的首要步骤,消费者可以通过多种方式订阅Topic,下面详细介绍订阅机制。

qq_58299462的博客 3980

Kafka偏移量管理全攻略:从基础概念到高级操作实战

Kafka偏移量管理全攻略:从基础概念到高级操作实战

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1562

kafka消费者

转载地址:https://www.cnblogs.com/sodawoods-blogs/p/8969774.html                   https://blog.csdn.net/qq_35349490/article/details/79790625                   https://blog.csdn.net/qq_35349490/article/d...

learn_tech的博客 4752

kafka消费者详细介绍(超级详细)

Kafka 消费者是一个从 Kafka 主题(Topic)中读取消息的客户端应用程序。消费者可以使用 Kafka 提供的 API 来消费分布式系统中的消息Kafka 支持不同的消费模型,包括单消费者消费者组。订阅主题:消费者可以订阅一个或多个主题。拉取消息消费者通过拉取方式(poll()方法)从 Kafka 代理(Broker)获取消息。处理消息消费者接收到消息后,可以对其进行处理,如业务逻辑操作。提交偏移量消费者在处理消息后,提交当前消息偏移量,表示已经处理过该消息

王多鱼的梦想 3805

Apache Kafka 3.1消费者偏移量重置:earliest与latest策略

你是否曾遇到过Kafka消费者启动后收不到消息的情况?或者新消费者组无法获取历史据?这很可能与消费者偏移量重置策略有关。本文将深入解析Apache Kafka 3.1中两种最常用的偏移量重置策略——`earliest``latest`,帮助你解决消息消费的起点难题。读完本文后,你将能够: - 理解消费者偏移量(Offset)的基本概念 - 掌握`earliest``latest`策略的工作...

gitblog_01157的博客 1265

Python 操作 Kafka,生产者消费者代码 Demo

技术博客: https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。 所用 Python 依赖包:kafka-python 1.3.3 生产者: # -*- coding:utf-8 -*- from kafka import KafkaProducer # 此处ip可以是多个['0.0.0.1:9...

AlwaysBeta 的专栏 3903

Kafka生产者消费者据管道的核心引擎与智能终端

生产者与消费者作为Kafka据管道的“双轮驱动”,其设计哲学体现了吞吐、可靠性与灵活性的完美平衡。无论是直接使用原生API构建基础据流,还是通过Connect、Streams实现高阶功能,理解其核心机制都是驾驭实时据洪流的关键。随着云原生与Serverless架构的演进,生产者消费者将持续进化,成为连接字世界不可或缺的神经末梢。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1015

Spring Boot Kafka消费者实战:KafkaConsumer配置与应用

Kafka监听器是Kafka消费端的一个核心组件,它负责在接收到消息时执行用户的业务逻辑。Kafka监听器通常通过监听器容器配置来启动,并且可以根据开发者的需要以注解式或编程式的方式来实现。在这一章节中,我们将深入了解如何定义实现Kafka监听器,并探究其内部工作原理。编程式监听器是通过直接操作实例来实现的。这种方式提供了更高的灵活性,但需要更多的代码编写。

weixin_35734408的博客 1112

Apache Kafka消费者实战指南

消费组(Consumer Group)是Kafka消费者的一种组织形式,它允许多个消费者实例共同消费同一个主题(Topic)的消息,实现负载均衡高可用性。在消费组中,每个分区只能被消费组中的一个消费者消费,这样能够有效地进行水平扩展,同时保证消息的有序消费。每个消费者都属于一个消费组,当一个新的消息被发布到主题时,Kafka的分区器会根据特定的策略将消息分配给消费组中的某个分区,然后该分区的消息就由对应的消费者来消费。如果消费组中有多台机器上的消费者实例,那么消息就可以在这些实例之间进行负载均衡。

weixin_32102617的博客 1197

【弄nèng - Kafka】应用篇(四) —— Springboot整合Kafka(自动,手动提交偏移量

文章目录一. 简介二. 自动提交偏移量三. 手动提交偏移量3.1 引入依赖3.2 Kafka配置3.2.1 生产者3.2.2 消费者2.2.3 测试源码地址项目推荐 该篇博客实现Springboot整合kafka ,自动,手动提交偏移量 更多高级用法请看下篇博客 一. 简介 kafka概念相关的介绍请看官方文档其他博文 官方中文文档 kafka入门介绍 二. 自动提交偏移量 自动提交偏移量就...

司马缸砸缸了 6022

Kafka-Python消费者终极指南:从零基础到高级配置

Apache Kafka作为当今最流行的分布式流处理平台,其Python客户端kafka-python为开发者提供了强大的消息消费能力。本文将从基础使用到高级配置,全面解析KafkaConsumer的核心功能最佳实践。📈 ## 快速入门:创建你的第一个消费者 kafka-python消费者使用起来非常简单,只需几行代码即可开始消费消息: ```python from kafka impo

gitblog_01163的博客 861

解决Laravel-Kafka常见问题:消费者组重平衡与偏移量管理

在Laravel应用中集成Kafka时,消费者组重平衡与偏移量管理是确保消息处理可靠性效率的核心环节。本文将详细介绍如何在Laravel-Kafka中应对这些常见挑战,帮助开发者构建稳定的消息消费系统。 ## 消费者组重平衡:理解与配置 Kafka消费者组通过共享相同的group id实现分区的公平分配,每个分区仅由组内一个消费者处理。当消费者量变化时,Kafka会自动触发重平衡机制重新分

gitblog_01112的博客 807
上一篇: 使KafKa每次读取消息到最新发送消息的解决方案
下一篇: OpenTSDB的/ API / PUT(opentsdb的输入的api)简介
jyj019
博客等级 码龄9年 86粉丝 60原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值