【Kafka】记录一次Kafka消费者重复消费问题

文章目录

现象

用户反馈消费者出现消息积压,并且通过日志看,一直重复消费,且没有报错日志。

业务背景

  1. 用户的消费者是一个将文件做Embedding的任务,(由于AI技术的兴起,大量文档需要做RAG);
  2. Embedding是一个比较耗时的过程,如果文件大,耗时会更长;
  3. 消费者使用的是push模式、手动提交offset的方式;
  4. 由于耗时比较长,将提交offset的超时时间改成了2小时;
  5. 服务运行一段时间,QPS不高(个位数),压力不大。

排查过程

  1. 从监控中看,消费者有了100多条积压,并且持续了很长时间;
  2. 从业务上,有一个用户同一时间上传了大量大文件;
  3. 只有一个消费者,服务端瞬间产生大量消息,同一时间推送给了消费者;
  4. 消费者处理Embedding任务超过两小时,导致这一批消息提交offset超时;
  5. 服务端认为客户端处理消息失败,一直进行重新推送,所以造成了没报错,但是一直重复消费的情况。

Push与Pull

MQ的消费模式可以大致分为两种,一种是推Push,一种是拉Pull。

  • Push是服务端主动推送消息给客户端,优点是及时性较好,但如果客户端没有做好流控,一旦服务端推送大量消息到客户端时,就会导致客户端消息堆积甚至崩溃。
  • Pull是客户端需要主动到服务端取数据,优点是客户端可以依据自己的消费能力进行消费,但拉取的频率也需要用户自己控制,拉取频繁容易造成服务端和客户端的压力,拉取间隔长又容易造成消费不及时。
相关推荐
比奥利奥还傲.1 小时前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
A.说学逗唱的Coke9 小时前
【大模型专题】别再用 HTTP 直连 Agent 了:用 Kafka 承载 A2A 协议,从 PoC 走到生产
人工智能·kafka·a2a
拼图20910 小时前
Git常用语法
分布式·git·学习
用户5313973181717 小时前
[Kafka源码揭秘] 消息写入全链路:网络IO与请求入队
kafka·消息队列
swordbob19 小时前
一个 Partition就是一个年级,一个消费者组占用1年级1班,另一个消费者组占用1年级2班,座位号(offset)可以相同,但班级号不同?
kafka
香吧香21 小时前
Kafka 三节点集群:只订阅一个 broker 会丢消息吗?能用 VIP订阅 吗?
kafka
盟道科技21 小时前
小程序订阅消息大规模投递实践:频控令牌池、Redis限流与失败补偿设计
分布式·算法·小程序
雾隐隐o1 天前
Kafka 生产者消息丢失:ACK、重试与可靠发送
kafka
卷毛的技术笔记1 天前
RocketMQ事务消息:我把分布式事务这层窗户纸捅破了
java·分布式·后端·java-rocketmq
heimeiyingwang1 天前
【中台·技术篇】消息队列中台:Kafka/RocketMQ 统一管理与多租户隔离
kafka·rocketmq·中台