Kafka - 消费者程序仅消费一半分区消息的问题

news2024/11/25 8:02:38
1. 问题描述

修改安全服务状态有时逻辑正常有时候逻辑不正常,排查incident服务的日志发现消息可以正常发送到 kafka topic ,但是incident-cron 服务有时候有拉取消息的日志有时候没有日志。

kafka 生产者可以将消息正常发送到 kafka topic ,利用 kafka 消费者命令也可以正常消费消息,但是 incident-cron 消费者程序只能消费一半的分区的消息。

2. 分析问题
2.1 是否存在kafka 分区消息积压问题

利用 Python 脚本手动往 kafka topic 发送消息,发现 incident-cron 程序有时候有拉取消息的日志有时候没有。似乎跟分区有关,于是尝试指定消息发送的分区,结果配置的10个分区中,incident-cron程序只有一半分区有拉取消息的日志,另一半的分区没有。初步考虑是否存在消息积压的问题,于是后台利用命令查看 kafka 消费者组的情况,结果为kafka的每个分区都没有积压消息。

./kafka-consumer-groups.sh --bootstrap-server 10.64.32.11:9092 --describe --command-config ./jaas.conf --group  test1113 
2.2 是否存在消费者组内有多个消费者程序消费消息的问题

kafka 的一个分区只能被同一个消费者组内的一个消费者消费,不同的消费者不能同时消费同一个分区的消息,如果分区的消息被消费者组中的一个消费者消费了,另一个消费者就不会消费。

因此,考虑当前消费者所在的消费者组内是否配置了多个消费者,导致发送到topic中的消息没有被当前消费者消费,而是被其他消费者消费了。

查看消费者组偏移量,消费者情况,消费者所在的broker,以及每个消费者消费的分区:

./kafka-consumer-groups.sh --bootstrap-server 10.64.32.11:9092 --describe --command-config ./jaas.conf --group  test1113 
I have no name!@kafka-0:/opt/bitnami/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server 10.64.32.11:9092 --describe --command-config ./jaas.conf --group incident-cron-incident-service-status

GROUP                                 TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                                                           HOST            CLIENT-ID
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 6          1209410         1209410         0               consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807 /10.65.197.47   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 7          1300214         1300214         0               consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807 /10.65.197.47   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 8          1298494         1298494         0               consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807 /10.65.197.47   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 9          1300379         1300379         0               consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807 /10.65.197.47   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 5          1299554         1299554         0               consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807 /10.65.197.47   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 4          1212035         1212035         0               consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a /10.65.197.48   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 1          1298821         1298821         0               consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a /10.65.197.48   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 0          1209955         1209955         0               consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a /10.65.197.48   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 2          1296901         1296901         0               consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a /10.65.197.48   consumer-incident-cron-incident-service-status-1
incident-cron-incident-service-status platform_INCIDENT_SERVICE_SYNC 3          1300180         1300180         0               consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a /10.65.197.48   consumer-incident-cron-incident-service-status-1

输出信息结果分析:所有的消费者都属于同一个消费者组 incident-cron-incident-service-status

  • 第一组消费者(consumer-incident-cron-incident-service-status-1-4bbd6640-b95c-4e21-9236-ded434896807)消费了分区 6、7、8、9 和 5。
  • 第二组消费者(consumer-incident-cron-incident-service-status-1-4a5e86cd-f141-402e-bad1-05d301e08f0a)消费了分区 4、1、0、2 和 3。

该消费者组内有两个消费者,分别消费不同的分区,导致有一半分区的消息没有被 inciden-cron 消费者程序消费。

查看incident-cron 程序部署在哪些租户,结果发现有2个租户【platform 和 test0001】,也就证实了有2个消费者程序,有一半分区的消息没有被 platform 租户侧的 inciden-cron 消费者程序消费。而是被 test00001租户侧的 inciden-cron 消费者程序消费了。

[root@master01 ~]# kubectl get pods --all-namespaces -o wide | grep incident-cron

将test00001侧的 incident-cron 消费者程序关闭。

[root@master01 ~]# kubectl scale -n test00001 deployment incident-cron --replicas=0 

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

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

相关文章

mysql-分析并解决可重复读隔离级别发生的删除幻读问题

在 MySQL 的 InnoDB 存储引擎中,快照读和当前读的行为会影响事务的一致性。让我们详细分析一下隔离级别味可重复读的情况下如何解决删除带来的幻读。 场景描述 假设有一个表 orders,其中包含以下数据: 事务 A 执行快照读 START TRANSACTION…

使用itextpdf进行pdf模版填充中文文本时部分字不显示问题

在网上找了很多种办法 都解决不了; 最后发现是文本域字体设置出了问题; 在这不展示其他的代码 只展示重要代码; 1 引入扩展包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</v…

链表刷题|判断回文结构

题目来自于牛客网&#xff0c;本文章仅记录学习过程的做题理解&#xff0c;便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边&#xff0c;先得有大概的解决方案&#xff0c;最后如果时间或者空间超了再去优化即可。 思路一&#xff1a;要判断是否为回文结构则…

0基础跟德姆(dom)一起学AI NLP自然语言处理01-自然语言处理入门

1 什么是自然语言处理 自然语言处理&#xff08;Natural Language Processing, 简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域. 2 自然语言处理的发展简史 3 自然语言处理的应用场景 语音助手机器翻译搜索引擎智能问答...

Linux系统使用valgrind分析C++程序内存资源使用情况

内存占用是我们开发的时候需要重点关注的一个问题&#xff0c;我们可以人工根据代码推理出一个消耗内存较大的函数&#xff0c;也可以推理出大概会消耗多少内存&#xff0c;但是这种方法不仅麻烦&#xff0c;而且得到的只是推理的数据&#xff0c;而不是实际的数据。 我们可以…

跨平台开发_RTC程序设计:实时音视频权威指南 2

1.2.1 一切皆bit 将8 bit分为一组&#xff0c;我们定义了字节(Byte)。 1956年6月&#xff0c;使用了Byte这个术语&#xff0c;用来表示数字信息的基本单元。 最早的字节并非8 bit。《计算机程序设计的艺术》一书中的MIX机器采用6bit作为1Byte。8 bit的Byte约定&#xff0c;和I…

WIFI:长GI与短GI有什么区别和影响

1、GI的作用 Short GI(Guard Interval)是802.11n针对802.11a/g所做的改进。射频芯片在使用OFDM调制方式发送数据时&#xff0c;整个帧是被划分成不同的数据块进行发送的&#xff0c;为了数据传输的可靠性&#xff0c;数据块之间会有GI&#xff0c;用以保证接收侧能够正确的解析…

ssm实战项目──哈米音乐(二)

目录 1、流派搜索与分页 2、流派的添加 3、流派的修改 4、流派的删除 接上篇&#xff1a;ssm实战项目──哈米音乐&#xff08;一&#xff09;&#xff0c;我们完成了项目的整体搭建&#xff0c;接下来进行后台模块的开发。 首先是流派模块&#xff1a; 在该模块中采用分…

C++使用minio-cpp(minio官方C++ SDK)与minio服务器交互简介

目录 minio简介minio-cpp简介minio-cpp使用 minio简介 minio是一个开源的高性能对象存储解决方案&#xff0c;完全兼容Amazon S3 API&#xff0c;支持分布式存储&#xff0c;适用于大规模数据架构&#xff0c;容易集成&#xff0c;而且可以方便的部署在集群中。 如果你已经部…

细说敏捷:敏捷四会之standup meeting

上一篇文章中&#xff0c;我们讨论了 敏捷四会 中 冲刺计划会 的实施要点&#xff0c;本篇我们继续分享敏捷四会中实施最频繁&#xff0c;团队最容易实施但往往也最容易走形的第二个会议&#xff1a;每日站会 关于每日站会的误区 站会是一个比较有标志性的仪式活动&#xff0…

二分法(折半法)查找【有动图】

二分法&#xff0c;也叫做折半法&#xff0c;就是一种通过有序表的中间元素与目标元素进行对比&#xff0c;根据大小关系排除一半元素&#xff0c;然后继续在剩余的一半中进行查找&#xff0c;重复这个过程直至找到目标值或者确定目标值不存在。 我们从结论往回推&#xff0c;…

FreeRTOS——低功耗管理

目录 一、概念及其应用 1.1应用 1.2STM32电源管理系统 2.3STM32低功耗模式 2.3.1睡眠模式 2.3.2停止模式 2.3.3待机模式 三、Tickless低功耗模式 3.1低功耗模式配置 3.2低功耗模式应用 3.3低功耗电路分析 3.4低功耗处理相关接口 四、实现原理 4.1任务等待删除的检查…

【STM32】MPU6050初始化常用寄存器说明及示例代码

一、MPU6050常用配置寄存器 1、电源管理寄存器1&#xff08; PWR_MGMT_1 &#xff09; 此寄存器允许用户配置电源模式和时钟源。 DEVICE_RESET &#xff1a;用于控制复位的比特位。设置为1时复位 MPU6050&#xff0c;内部寄存器恢复为默认值&#xff0c;复位结束…

2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究

复杂场景下水下图像增强技术的研究 对于海洋勘探来说&#xff0c;清晰、高质量的水下图像是深海地形测量和海底资源调查的关键。然而&#xff0c;在复杂的水下环境中&#xff0c;由于光在水中传播过程中的吸收、散射等现象&#xff0c;导致图像质量下降&#xff0c;导致模糊、…

自动驾驶3D目标检测综述(三)

前两篇综述阅读理解放在这啦&#xff0c;有需要自行前往观看&#xff1a; 第一篇&#xff1a;自动驾驶3D目标检测综述&#xff08;一&#xff09;_3d 目标检测-CSDN博客 第二篇&#xff1a;自动驾驶3D目标检测综述&#xff08;二&#xff09;_子流行稀疏卷积 gpu实现-CSDN博客…

【Linux | 计网】TCP协议详解:从定义到连接管理机制

目录 1.TCP协议的定义&#xff1a; 2.TCP 协议段格式 3.TCP两种通信方式 4.确认应答(ACK)机制 解决“后发先至”问题 5.超时重传机制 那么, 超时的时间如何确定? 6.连接管理机制&#xff1a; 6.1.三次握手&#xff1a; 为什么需要3次握手&#xff0c;一次两次不行吗…

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时&#xff0c;他们会看到 PDF 的初始视图。默认情况下&#xff0c;打开 PDF 时不会显示书签面板或缩略图面板。在本文中&#xff0c;我们将演示如何设置文档属性&#xff0c;以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边&#xff08;易错题&#xff09;&#xff1f; 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

Doris 的Explain 和 Profile

什么是 explain&#xff1f; 执行计划是对一条 SQL 具体的执行方式和执行过程的描述。例如&#xff0c;对于一个涉及两表连接的 SQL&#xff0c;执行计划会展示这两张表的访问方式信息、连接方式信息&#xff0c;以及各个操作之间的顺序。 在 Doris 系统中提供了 Explain 工具…

QT QVBoxLayout控件 全面详解

本系列文章全面的介绍了QT中的57种控件的使用方法以及示例&#xff0c;包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizonta…