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

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

\

相关推荐
潇凝子潇5 小时前
kafka之监控告警
分布式·kafka
潇凝子潇7 小时前
Kafka 实现集群安全认证与加密机制
分布式·安全·kafka
indexsunny7 小时前
互联网大厂Java求职面试实战:微服务与Spring Boot在电商场景中的应用
java·数据库·spring boot·微服务·kafka·hibernate·电商
潇凝子潇8 小时前
Apache Kafka 跨集群复制实现方案
分布式·kafka·apache
oMcLin21 小时前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
码农水水21 小时前
中国邮政Java面试:热点Key的探测和本地缓存方案
java·开发语言·windows·缓存·面试·职场和发展·kafka
掘金-我是哪吒1 天前
Kafka配套的Zookeeper启动脚本
分布式·zookeeper·云原生·kafka
超级种码1 天前
Kafka四部曲之一:Kafka的核心概念
分布式·kafka
u0104058361 天前
基于 Kafka Exactly-Once 语义保障微信群发消息不重复不丢失
分布式·kafka·linq
超级种码1 天前
Kafka四部曲之二:核心架构与设计深度解析
分布式·架构·kafka