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时间,这样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请求后等一段时间

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

\

相关推荐
时鲟、时倾20 小时前
docker部署kafka
docker·容器·kafka
编啊编程啊程1 天前
【029】智能停车计费系统
java·数据库·spring boot·spring·spring cloud·kafka
熙客2 天前
Kafka:专注高吞吐与实时流处理的分布式消息队列
分布式·中间件·kafka
熊文豪2 天前
在 openEuler 上部署 Kafka 集群:深度性能评测与优化指南
分布式·kafka·openeuler
陈果然DeepVersion2 天前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十)
java·spring boot·ai·kafka·面试题·向量数据库·rag
陈果然DeepVersion3 天前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十一)
java·spring boot·微服务·ai·kafka·面试题·rag
帅次3 天前
系统分析师-案例分析-数据库系统&数据仓库&反规范化技术&NoSQL&内存数据库
大数据·数据库·数据仓库·oracle·kafka·数据库开发·数据库架构
零雲3 天前
java面试:有了解过kafka架构吗,可以详细讲一讲吗
java·面试·kafka
sakoba3 天前
Linux上kafka部署和使用
linux·运维·kafka
一行•坚书3 天前
kafka服务端与客户端如何协作?生产者发送消息分区策略是什么?消费者组分区策略?集群与ACK机制?
java·后端·kafka