生产故障|Kafka消息发送延迟达到几十秒的罪魁祸首居然是....

双十一期间,Kafka集群响应时间升至10~30s,源于Broker与Zookeeper会话超时导致分区Leader选举。本文介绍了Zookeeper在Kafka中的角色,分析了会话超时的原因,包括临时节点删除、分区重新选举,以及客户端心跳处理机制,揭示了故障的根本原因。
摘要由CSDN通过智能技术生成

1、故障现象

笔者在双十一期间负责的kafka集群的响应时间飙升到了10~30s,严重影响消息的写入。

通过对日志分析发现存在大面积分区Leader选举,__consumer_offsets主题的分区也大量进行分区Leader选举,从而导致消息发送几乎停止,大量消费组触发重平衡,整个集群接近瘫痪,最终确定了根因:Broker节点与Zookeeper会话超时,触发大量分区重新选举。

本文借此故障,与大家一起剖析一下Zookeeper在Kafka中起了哪些作用,以及确定“罪魁祸首”的过程,希望给大家排查问题能带来一定的启发。

2、Zookeeper在Kafka中具有举足轻重的作用

在正式进入故障分析之前,我们首先介绍一下Zookeeper在kafka架构设计中所起的角色。

核心理念:kafka的设计者对待Zookeeper的使用是非常谨慎的,即需要依靠Zookeeper进行控制器选举,Broker节点故障实时发现,但又尽量降低对Zookeeper的依赖

基于Zookeeper进行的程序开发,我们一般可以通过查看zookeeper中的目录布局,可以窥探出哪些功能是依靠Zookeeper完成,Kafka在Zookeeper中的存储目录结构如下图所示:

上述各个节点,其背后都关联着Kafka一个核心工作机制,大家可以顺藤摸瓜进行探究,本文需要重点介绍/brokers这个目录的布局与作用,目录详情如下:

  • /controller Kafka控制器的信息,Kafka控制器的选举依靠zookeeper。

  • /brokers/ids/{id} 在持久节点/brokers/ids下创建众多的临时节点,每一个节点,表示一个Broker节点,节点的内容存储了Broker的基本信息,例如端口、版本、监听地址等。

  • /brokers/topics/{topic}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值