25 kafka消费者组重平衡

触达与通知

1.位置主题&写调整复习 (TODO)
2.重平衡是通过心跳线程的心跳请求来通知的,需要重平衡则请求响应REBALANCE_IN_PROGRESS。0.10.1.0版本后心跳线程和消息消费线程分离,避免了消息消费时间长影响心跳。heartbeat.interval.ms参数控制心跳请求频率也控制重平衡频率。

消费者组状态机

1.empty状态的消费者组,才会执行过期位置删除
2.协调者通过什么判断所有消费者都已经上报了,或者说怎么知道有多少消费者客户端。如果上报信息后,消费者客户端崩溃了,这能等待下次心跳才能知道吗?
评论区回答:如果在这次 Rebalance 期间,有 消费者 超时没有上报信息,那么这个消费者会被排除在这轮 Rebalance 之外。协调者在收到第一个joingroup请求后会等一段时间。

重平衡流程

1.消费者组内每个成员都会定期汇报位移给协调者。重平衡开启,协调者会给消费者组成员一个缓冲时间上报自己的消费位移。如果没法上报唯一,就会重新消费一遍?

没提交位移就是没有消费,重平衡完成后这个分区会被可能分给其他消费者实例消费(个人理解),导致重复消费,在业务做去重更保险

2.消费者已经崩溃了,不会发送心跳,协调者这时候怎么做到能到session.timeout.ms感知并发起重平衡的?

每次consumer加入组就会发送session.timeout.ms这个参数,这样Coordinator收到心跳请求后会根据这个session timeout时间计算下次deadline时间,如果过了deadline还没有收到直接fail掉该consumer

3.再平衡前,要求在规定时间内提交位移,这个规定时间如何设置?默认值是什么?

rebalance timeout,默认是max.poll.intervals的值
https://github.com/apache/kafka/blob/2.4/clients/src/main/java/org/apache/kafka/clients/GroupRebalanceConfig.java#L53

4.使用consumer消费,发现consumer会出现commit offset failed,coordinator is not available 的错误,导致consumer卡住,无法消费。根据错误信息,是由于找不到groupcoordinator导致的,但coordinator不可用是在什么情况下发生的?

commit失败先看看是不是消息处理慢导致的吧。比如增加max.poll.interval.ms的值或降低max.poll.records的值试试看。Client端报出Coordinator不可用不一定表示Coordinator真的不可用

5.订阅主题发送变化之后触发reblance的流程是什么样子的?

consumer会定期更新元数据,如果发现了新增的订阅分区,会主动触发rebalance

6.消费者组创建的过程中,协调者何时判断所有消费者已加入,还是说它在收到第一个joingroup请求后等一段时间

嗯,是的。你的理解是对的~

7.消费者是如何找到broker端的协调者的

coordinator的确定原则是寻找__consumer_offsets对应分区的leader副本所在的broker

8.Kafka 定期自动删除过期位移的条件就是,组要处于 Empty 状态。因此,如果消费者组停掉了很长时间,那么 Kafka 很可能就把该组的位移数据删除了。不是 empty 状态,过期的就不删除吗?

是的

9.消费位移信息是存储在_consumer_offsets topic中,会有过期清理机制的。可是这里又说只在Empty状态才进行位移信息删除,有些不明白了。难道过期清理是compact,所以不叫删除?

不矛盾。首先Kafka的确会定期删除_consumer_offsets topic的数据,其次,Kafka只会为Empty状态的消费者组清理__consumer_offests中相关数据。

10.消费者主动离组

①消费者实例所在线程或进程调用 close() 方法主动通知协调者它要退出。
② Consumer消费时间过长导致超过了max.poll.interval.ms时间,导致Consumer主动发起离开Group请求。

11.我记得之前在讲Consumer建立TCP连接那一节讲到:“如果某个 Socket 连接上连续 9 分钟都没有任何请求“过境”的话,那么消费者会强行“杀掉”这个 Socket 连接”。按照这个说法,是不是说消费端此时也会被协调者给fail掉,因为连接都不存在了,更不会发心跳给协调者了吧?此时也会触发新一轮的Reblance吧?

它们使用的不是一个TCP连接。Coordinator有专属的TCP连接

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

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

相关文章

SQL使用

--天空会的像哭过,离开你以后 并没有更自由 SQL进行数据的删除 一、删除delete 语法 delete [from] 表名称 where 条件数据删除,不能删除某一列,因为删除是对记录而言 2.1 删除是一条一条删除,每次删除都会将操作写入日志文件 删…

2023.11.14联赛总结

T 1 T_1 T1​给出一个长度为 n n n的序列,你可以进行若干次操作,每次花费 c j c_j cj​元将 a i a_i ai​变为 ⌊ a i j ⌋ \lfloor \frac{a_i}{j} \rfloor ⌊jai​​⌋,你一共有 k k k元。问最终序列的中位数最小是多少。 其中 1 ≤ n , m …

个体诊所电子处方系统设计,诊所电子处方模板,药店电子处方系统,佳易王电子处方管理系统V16.0下载

个体诊所电子处方系统设计,诊所电子处方模板,药店电子处方系统,佳易王电子处方管理系统V16.0下载 软件支持配方模板,病人病历记录查询等,软件打印处方单所用的纸张为 A5纸。软件可以下载试用,点击最下方官网…

C++设计实现日志系统

转载:C设计实现日志系统 - 知乎 (zhihu.com) 日志系统几乎是每一个实际的软件项目从开发、测试到交付,再到后期的维护过程中极为重要的 查看软件代码运行流程、 还原错误现场、 记录运行错误位置及上下文等的重要依据。一个高性能的日志系统&#xff0c…

Windows上基于Tesseract OCR5.0官方语言库的LSTM字库训练

系列文章目录 Tesseract OCR引擎 文章目录 系列文章目录前言一、LSTM字库训练是什么?二、使用步骤1. 环境准备1.1下载Tesseract 程序并安装1.2下载Tesseract 训练字库1.3下载工具jTessBoxEditor 2. LSTM训练2.1 将要训练的图片(jpg/tif)合并成一个文件2.2 生成box文…

2、灰度图

上一篇文章中,我们解释了像素是计算机视觉任务中的原材料,很多图像处理任务以像素局部性为基础,在不同尺度下完成图像特征的提取,小则为图像细节,大则为图像轮廓。 现在继续看一种十分简洁但很高效的图像表示——灰度图,,灰度图是一种只包含亮度信息而不包含颜色信息的…

未来之路:大模型技术在自动驾驶的应用与影响

本文深入分析了大模型技术在自动驾驶领域的应用和影响,万字长文,慢慢观看~ 文中首先概述了大模型技术的发展历程,自动驾驶模型的迭代路径,以及大模型在自动驾驶行业中的作用。接着,详细介绍了大模型的基本定义、基础功…

js字符串处理

1.当前只能获取到年月,例如 :2022-10,需求是根据当前获取的年月给开始时间和结束时间赋值,是当前年月的第一天和最后一天,2022-10-1和2022-10-31,因为获取的年月是动态的,开始时间都是1号&#…

springcloud旅游网站源码

开发技术: jdk1.8,mysql5.7,idea,nodejs,vscode springcloud springboot mybatis vue 功能介绍: 用户端: 登录注册 首页显示搜索景区,轮播图,旅游攻略列表 点击攻…

dameng数据库数据id decimal类型,精度丢失

问题处理 这一次也是精度丢失,但是问题呢还是不一样,这一次所有的id都被加一了,只有id字段被加一,还有的查询查出来封装成对象之后对象的id字段被减一了,数据库id字段使用的decimal(20,6)&…

新版本Idea设置启动参数

1.进入配置页面 2.点击下图红框的部分,会看到有很多操作可选 3.选择添加VM参数即可 此时就会多出一个可以输入参数的框了,如下:

Python编程题集(第二部分循环语句)

目录 Demo27 打印数字I Demo28 打印数字II Demo29 打印数字III Demo30 打印菱形I Demo31 打印菱形II Demo32 打印菱形III Demo33 猜数字 Demo34 最大公约数I Demo35 判断素数 Demo36 最小公倍数 Demo37 整数的素因子 Demo38 完全数 Demo39 前50个素数 Demo40 计算…

Postman for Mac(HTTP请求发送调试工具)v10.18.10官方版

Postman for mac是一个提供在MAC设备上功能强大的开发,监控和测试API的绝佳工具。非常适合开发人员去使用。此版本通过Interceptor添加了对请求捕获的支持,修正了使用上下文菜单操作未复制响应正文的问题和预请求脚本的垂直滚动条与自动完成下拉列表重叠…

计算机网络课后作业2023秋

计算机网络第三版吴功宜版 课后作业 第一章作业三、计算与问答3.73.8 第二章作业三、计算与问答3.23.53.6 第三章作业三、计算与问答3.13.53.73.8 第四章作业三、计算与问答3.13.2 第五章作业三、计算与问答3.13.33.4VLAN交换机模式模式切换重置交换机VLAN配置命令其…

esp32-rust-no_std-examples-blinky

什么是裸机环境? 裸机环境是指没有可供使用的操作系统环境。当编译的 Rust 程序拥有 no_std 属性时,该程序无权访问上述 std 章节中提到的某些特定功能。尽管仍支持使用配网或引入复杂数据结构等功能,但实现方式将会更加复杂。 no_std…

前端注册登录

前端注册登录 设计 登录,注册,都写成组件 ⇢ \dashrightarrow ⇢ 在任意页面中,都能点击显示登录模态框写好的组件,应该放在那个组件中 ⇢ \dashrightarrow ⇢ 不是页面组件(小组件)击登录按钮,把Login.vue 通过定…

Flutter之Json序列化

前言 使用 json_annotation 框架实现json字符串序列化和反序列化 框架官方地址:json_serializable 一、引入依赖:在pubspec.yaml中添加 dependencies:json_annotation: ^4.8.1dev_dependencies:build_runner: ^2.3.3json_serializable: ^6.6.0 二、…

深入理解JVM虚拟机第二十四篇:详解JVM当中的动态链接和常量池的作用

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…

在虚拟环境下安装python包

PyCharm可以自己给项目创建虚拟环境,示例如下: 首先通过File—>Setting—>Project:【项目名称】—>Project Interpreter—>设置—>add—>Virtuallenv Environment配置虚拟环境即可 添加解释器: 当创建虚拟环…

sqli-labs关卡13(基于post提交的单引号加括号的报错盲注)通关思路

文章目录 前言一、回顾第十二关知识点二、靶场第十三关通关思路1、判断注入点2、爆显位3、爆数据库名4、爆数据库表5、爆数据库列6、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,…