消费者偏移量_consumer_offsets相关解析

news2024/12/23 11:43:38

1.概述

__consumer_offsets 是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一就是保存 consumer 提交的位移。

__consumer_offsets 的每条消息格式大致如图所示:

在这里插入图片描述

可以想象成一个 KV 格式的消息,key 就是一个三元组:group.id+topic+分区号,而 value 就是 offset 的值。

考虑到一个 kafka 集群中可能有很多consumerconsumer group,如果这些 consumer 同时提交位移,则必将加重 __consumer_offsets 的写入负载,因此 kafka 默认为该 topic 创建了50个分区,并且对每个 group.id做哈希求模运算Math.abs(groupID.hashCode()) % numPartitions, 从而将负载分散到不同的 _consumer_offsets分区上。

一般情况下,当集群中第一次有消费者消费消息时会自动创建__consumer_offsets,它的副本因子受 offsets.topic.replication.factor 参数的约束,默认值为3(注意:该参数的使用限制在0.11.0.0版本发生变化),分区数可以通过 offsets.topic.num.partitions 参数设置,默认值为50。

2.消费者消费topic

消费者组:hy-group topic:hy1-test-topic

bin/kafka-console-consumer.sh --bootstrap-server  hadoop102:9092,hadoop103:9092,hadoop104:9092 --group hy-group --topic hy1-test-topic

3.生产者生产消息

bin/kafka-console-producer.sh --broker-list  hadoop102:9092,hadoop103:9092,hadoop104:9092   --topic hy1-test-topic

在这里插入图片描述

4.查看指定消费组的消费位置offset

bin/kafka-consumer-groups.sh --bootstrap-server hadoop102:9092,hadoop103:9092,hadoop104:9092 --describe --group hy-group

在这里插入图片描述

从上图中可以看出:

  • 每个partition 对应的消费者id; 因为只开了一个消费者; 该消费者同时消费3个partition;
  • CURRENT-OFFSET: 当前消费组消费到的偏移量
  • LOG-END-OFFSET: 日志最后的偏移量
  • CURRENT-OFFSET = LOG-END-OFFSET 说明当前消费组已经全部消费了;

此时关闭消费者之后, 再发送几条消息看看:

partition-0 partition-1 partition-2LOG-END-OFFSET: 日志最后的偏移量分别增加了1; 但是CURRENT-OFFSET: 当前消费组消费到的偏移量 保持不变;因为没有被消费。

重新打开一个消费者组,继续消费,此时偏移量也更新啦。
在这里插入图片描述

在这里插入图片描述

5.从头开始消费 --from-beginning

如果用新的消费组去消费一个Topic,那么默认该消费组的offset会是最新的; 即历史的不会消费。

开启新的消费者组

bin/kafka-console-consumer.sh --bootstrap-server   hadoop102:9092,hadoop103:9092,hadoop104:9092 --group hy-group1  --topic hy1-test-topic

查看消费情况

bin/kafka-consumer-groups.sh --bootstrap-server  hadoop102:9092,hadoop103:9092,hadoop104:9092  --describe --group hy-group1

在这里插入图片描述

可以看到CURRENT-OFFSET = LOG-END-OFFSET 。 如何让新的消费组/者 从头开始消费呢? 加上参数 --from-beginning

# 从头开始消费
bin/kafka-console-consumer.sh --bootstrap-server   hadoop102:9092,hadoop103:9092,hadoop104:9092 --group hy-group1  --topic hy1-test-topic --from-beginning

6.如何确认 consume_group 在哪个__consumer_offsets-?

Math.abs(groupID.hashCode()) % numPartitions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成都睿趣科技:抖音开通橱窗带货需要钱吗

随着社交媒体和电子商务的蓬勃发展,抖音作为一种流行的短视频平台,也推出了自己的“抖音橱窗”功能,让内容创作者能够通过视频展示和销售产品,从而实现商业化。那么,抖音橱窗带货是否需要费用呢? 首先,要开…

现代数据架构-湖仓一体

当前的数据架构已经从数据库、数据仓库,发展到了数据湖、湖仓一体架构,本篇文章从头梳理了一下数据行业发展的脉络。 上世纪,最早出现了关系型数据库,也就是DBMS,有商业的Oracle、 IBM的DB2、Sybase、Informix、 微软…

关于坐标的旋转变换和坐标系的旋转变换

不管是坐标的旋转变换还是坐标系下的旋转变换,只和旋转的顺时针和逆时针有关。然坐标系间的顺时针和逆时针是根据当前坐标系在目标坐标系下的相对位置确定。 一。逆时针旋转belta角度的公式 二。顺时针旋转belta角度的公式 三。坐标的旋转变换 1.坐标的旋转变换相…

一文了解企业如何实现文件自动化实时同步

在当今的数字化时代,数据是企业的核心资产,也是企业竞争力的重要体现。数据的传输、共享、协作、备份等都需要依赖文件同步技术,实现数据在不同平台和设备之间的一致性和可用性。文件同步是指将一个或多个文件夹中的内容复制或更新到另一个或…

网络安全攻防:软件逆向之反汇编

网络安全是当今社会中一个非常重要的问题,而软件逆向工程是网络安全攻防中常用的一种技术手段。在软件逆向工程中,反汇编是一种基础而重要的技术。通过反汇编,我们可以将二进制程序转换为汇编语言,从而更好地理解程序的执行流程和…

在伦敦银投资中,技术是万能的?

一般进行伦敦银投资的投资者都会学习很多技术分析的方法,技术分析是一种还很适合普通投资者使用的市场分析工具,但是在伦敦银投资中,技术分析的作用不是万能的,其实技术分析还是有很多各种各样的缺点,如果投资者迷信技…

前缀和实例5(连续数组)

题目: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0…

Exception in thread “main“ java.sql.SQLException: No suitable driver

详细报错信息如下: Exception in thread "main" java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverC…

js遍历对象属性的方法

在 JavaScript 中,有许多方法可以遍历对象的属性,但在性能上并没有显著的差异。对于大多数用例,使用 for-in 循环或 Object.keys() 方法是最常见的。 然而,如果你正在寻找微优化,并希望遍历大量对象,可以考…

数字孪生需要自建3D模型?搞懂Blender建模要点,看这篇文章就够了!

1. Blender的基础介绍 关于城市大师的建模软件,一般推荐使用Blender。一是因为Blender是开源免费的,不会有经济负担,二是因为我们软件有针对Blender的插件,对其进行了一定程度上的补充。 【温馨提示】如果使用的是3Dmax或者maya…

Zabbix“专家坐诊”第205期问答汇总

问题一 Q:Zabbix6.0安装出错,未找到zabbix-server的配置文件。 A:Find / -name zabbix-server.conf,试一下 Q:找到了。 Q:配置好了,虚拟化平台监控还是不行。 A:因为虚拟化监控用的…

PL/SQL+cpolar公网访问内网Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

python生成Markdown文件

我们使用的库是markdown_strings pip install markdown_strings程序如下: from markdown_strings import header, table, code_blockwith open("mark_down.md", w, encoding"utf8") as file:file.write(header("一级目录", 1) &qu…

python抓取网页视频

1. 喜马拉雅音频 1-1 喜马拉雅 import requests import json import time import random import hashliburl https://www.ximalaya.com/revision/play/v1/audio?id46103875&ptype1headers { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3…

法线贴图的原理和作用

在上一篇文章中详细介绍了位移贴图的相关知识,在本章中我们继续讲述法线贴图的相关概念,文章后面继续用GLTF 编辑器 来演示下法线贴图的模型渲染效果。 1、什么是法线贴图 法线贴图(Normal Map)是一种纹理映射技术,用…

DAY04_瑞吉外卖——文件上传下载菜品新增菜品分页查询菜品修改

目录 1. 文件上传下载1.1 上传介绍1.1.1 概述1.1.2 前端介绍1.1.3 服务端介绍 1.2 下载介绍1.3 上传代码实现1.3.1 前端代码1.3.2 服务端实现1.3.3 测试 1.4 下载代码实现1.4.1 前端代码1.4.2 服务端代码1.4.3 测试 2. 菜品新增2.1 需求分析2.2 数据模型2.3 准备工作2.4 前端页…

golang工程——底层原理【defer、panic、recover、interface】

defer 延时性 不管defer函数后的执行路径如何,最终都将被执行。在Go语言中,defer一般被用于资源的释放及异常panic的处理。保证函数在任意路径执行结束后都能够关闭资源。defer是一种优雅的关闭资源的方式,能减少大量冗余的代码并避免由于忘…

Python 标准库之pathlib,路径操作

背景 pathlib 标准库是在 Python3.4 引入,到现在最近版 3.11 已更新了好几个版本,主要是用于路径操作,相比之前的路径操作方法 os.path 有一些优势,有兴趣的同学可以学习下 **官方文档:**https://docs.python.org/zh-…

应用架构的演进:亚马逊的微服务实践

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…

RS232,485,422的定义及区别

计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。 由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。串口按电气标准及协议来划分,包括RS232、RS422、R…