博世苏州ADAS团队数据平台组面试题--kafka消费超时会发生什么?
yuyutoo 2024-10-16 15:47 11 浏览 0 评论
背景
??kafka消费者采用批量拉取的方式,一次拉取一批记录来消费,如果消费者线程消费超时会导致整批消息的回滚,从而导致已经消费过的数据再消费一遍,消费者不幂等会出大问题,这也是为啥要强调使用消费队列一定要考虑幂等性的原因。
??如果某一次拉取数据后在规定的时间内不能消费完毕,有可能进入拉取-->超时-->回滚-->拉取的循环中。
消费超时会发生什么?
Client Will Seek Soon: org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records.
??集群以为消费者线程挂了,触发了rebanlance(这一批已经给别的消费者线程消费了)。当前消费者线程业务逻辑执行完了再去同步游标报错了,没有提交成功,这就导致了两个消费者线程把同一批消息消息了两遍。
参数详解
max.poll.interval.ms 拉取时间间隔 400s 每次拉取的记录必须在该时间内消费完
max.poll.records 每次拉取条数 600条 这个条数一定要结合业务背景合理设置
fetch.max.wait.ms 每次拉取最大等待时间 时间达到或者消息大小谁先满足条件都触发,没有消息但时间达到返回空消息体
fetch.min.bytes 每次拉取最小字节数 时间达到或者消息大小谁先满足条件都触发
heartbeat.interval.ms 向协调器发送心跳的时间间隔 3s 建议不超过session.timeout.ms的1/3
session.timeout.ms 心跳超时时间 30s 配置太大会导致真死消费者检测太慢
max.poll.interval.ms 和session.timeout.ms区别
KIP-62(kafka规范)前只有session.timeout.ms参数
KIP-62后不通过poll()方法发送心跳,而是后台另起一个心跳线程,这就允许单次poll处理更长时间。不会因为单次处理超时假死引发不必要的rebanlance
max.poll.interval.ms 检测消费者处理线程死亡
session.timeout.ms 检测整个消费者死亡
建议
1.一定要结合具体业务背景,预估消费能力,合理设置【max.poll.records】和【max.poll.interval.ms】
默认情况下max.poll.records=600条,max.poll.interval.ms=400秒, 也就是说400s必须消费完600条,否则超时回滚!!!
2.将【session.timeout.ms】设置为【heartbeat.interval.ms】的三倍。即连续三次收不到心跳认为消费者挂了。
官网是poll中timeout的描述:
The time, in milliseconds, spent waiting in poll if data is not available in the buffer
If 0, returns immediately with any records that are available currently in the buffer, else returns empty. Must not be negative.
相关推荐
- pdf,word,ppt,rar,mp4等等文档在线预览
-
背景:移动端的智能化已经被大多数人接受了,但是有时一些文件格式要在移动端打开,需要安装特定的软件才行,这个就是很多人不喜欢的,要看个文档还要下载安装一个app,实在麻烦,那能不能直接在线就预览文件呢具...
- Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像
-
一、前言用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw...
- 全能下载神器文件蜈蚣体验(全能文件王)
-
文件蜈蚣是一款开源免费的软件,在GitHub上公布了所有源代码,自身非常绿色环保,没有流氓后台也没广告,和莫名弹窗的同行相比,可算得上是一股清流。文件蜈蚣的使用很简单,解压后运行一次其中的exe,完成...
- 支持HLS和mp4在线播放的源码(hls支持的视频编码格式)
-
今天安利的一套在线视频播放源码,它不是安卓端,也不是PC端。你只需要部署一下这个单页面源码即可。使用php+mysql+nginx即可。任何版本都能运行。HLSDOWNLOAD网页打开服务器地址:1...
- 大模型微调知识与实践分享(模具微调结构)
-
一、微调相关知识介绍...
- IOS遇到的几个H5坑、h5键盘弹起遮挡输入框的处理
-
一、IOS遇到的几个H5坑1、ios端兼容input光标高度 问题描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样。例如下图,左...
- 实用技巧:如何在win10中安装没有管理员权限的软件
-
通常,我们可能会遇到需要在Windows10电脑上安装软件,但在该电脑上没有管理员权限的情况,由于不是管理员,所以无权在在电脑上安装软件,这让人非常苦恼。事实上,这是微软专门设计的一个安全功能,它的...
- 基于ENVI的Landsat 7遥感影像处理与多种大气校正方法对比
-
1数据导入与辐射定标关于数据的下载,网络中相关资源很多,这里不再赘述。...
- 在 Python 中为无服务器应用设计安全租户隔离
-
软件即服务(SaaS)已经成为当今一种非常普遍的软件交付方式。虽然这方便了用户访问,而且消除了用户的运营开销,但这也改变了以前的模式,将实现SLA以及现代云原生组织所期望的所有安全和数据隐私要求的...
- 基于JFinal的后台业务框架通用模块
-
jcbase是基于JFinal2.x的后台业务框架通用模块,包括系统权限模块、APP版本管理、日志管理、数据字典等使用的技术要点后端使用JFinal2.x前端页面是基于acev1.3模板改造的,更方便...
- PHOTOSHOP图层技巧(掌握photoshop合并图层技巧)
-
你会图层吗?不会?喔,那你肯定不会PHOTOSHOP。为什么那么说呢?因为图层可以说是PHOTOSHOP的核心,几乎PHOTOSHOP所有的应用都是基于图层的,很多强劲的图像处理功能也是图层所提供的,...
- Cadence Allegro背钻设置详细介绍教程
-
CadenceAllegro背钻设置详细介绍教程...
- Pt中间层显著降低PEM水电解电子传输阻抗
-
在质子交换膜水电解(PEMWE)中,阳极OER的Ir基催化剂成本高昂,成为制约产业化的重要瓶颈。虽然非晶态IrOx具有高OER活性,但其电导率较差、与多孔钛PTL之间接触不良,往往导致催化剂层利用率低...
- GIMP 教程:制作 Duotone 双色调效果
-
今天我们学习如何使用GIMP这款强大的开源图像编辑器,制作流行的Duotone(双色调)效果。Duotone效果的核心原理,是将图像的色调信息映射到两种主要颜色上。通常,一种颜色用于图像的亮部...
- CAD打印的时候线条没了?原来是这些设置出了错
-
每当我们辛辛苦苦绘制完一张图纸之后,打印出图的时候总会出现各种各样的问题,不知道大家有没有遇到这种情况:在预览的时候还一切正常,但是打印出来之后就会发现很多线条都会不见了或者部分缺失。那么到底是怎么一...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)