当前位置: 首页 > news >正文

Kafka Controller的作用是什么?故障时如何恢复? (管理分区和副本状态;通过ZooKeeper选举新Controller)

Apache Kafka Controller 是 Kafka 集群的核心协调组件,主要承担两大核心职责:

一、核心作用

  1. 分区领导者选举 1
// 分区领导者选举逻辑示例(伪代码)
def electLeader(partition: Partition): Unit = {val isr = partition.inSyncReplicasval newLeader = isr.minBy(_.brokerId) // 实际使用更复杂算法partition.leader = newLeader
}
  1. 副本状态管理
  • 维护所有分区的 ISR(In-Sync Replicas)列表
  • 监控副本同步状态(通过 replica.lag.time.max.ms 参数)
  1. 集群元数据维护
  • 处理 Broker 上下线事件
  • 触发分区重分配(如使用 kafka-reassign-partitions 时)

二、故障恢复机制

  1. Controller 选举流程 2
# ZooKeeper 临时节点路径
ls /controller # 查看当前 Controller ID# 选举过程伪代码
1. 监控 /controller 节点消失
2. 各 Broker 尝试创建临时节点
3. 最先创建成功的成为新 Controller
  1. 故障恢复步骤
  • 元数据重建:从 ZooKeeper 加载 topics/brokers 数据
  • 状态机重置:重建分区状态机(PartitionStateMachine)和副本状态机(ReplicaStateMachine)
  • 补偿操作:处理故障期间未完成的管控请求

补充说明

  • 从 Kafka 2.8 版本开始支持 KRaft 模式(不依赖 ZooKeeper),故障恢复机制改为基于 Raft 共识算法 3
  • Controller 故障期间,已有生产消费不受影响,但无法执行管理操作(如创建 topic)

相关文章:

  • 理解与清理 Docker 中的悬空镜像(Dangling Images)
  • 大语言模型中的“温度”参数到底是什么?如何正确设置?
  • 终端安全登录系统的必要性及安当SLA双因素认证解决方案深度解析
  • MySQL基础关键_010_数据库设计三范式
  • 7.2.安全防御
  • Java版ERP管理系统源码(springboot+VUE+Uniapp)
  • Android学习总结之MMKV(代替SharedPreferences)
  • 远程访问代理+内网穿透:火山引擎边缘网关助力自部署模型公网调用与全链路管控
  • 【Leetcode 每日一题 - 扩展】3342. 到达最后一个房间的最少时间 II
  • Kubernetes集群生产环境智能伸缩指南
  • 数据分析案例(2)
  • [量化交易Backtrader] - 如何规避过拟合
  • 无网络环境下配置并运行 word2vec复现.py
  • 大模型系列(四)--- GPT2: Language Models are Unsupervised Multitask Learners​
  • 南京市出台工作方案深化“智改数转网联”,物联网集成商从“困局”到“蓝海”!
  • Vue 项目中长按保存图片功能实现指南
  • Unity_JK框架【4】MonoSystem 和 协程工具类 的剖析与实践
  • Czkawka:跨平台重复文件清理
  • 滑动窗口——无重复字符最长的字串
  • 蓝桥杯国赛备赛——字符串
  • 1156万+1170万,静安、宝山购彩者击中大乐透头奖
  • 巴基斯坦外长:印巴停火
  • 中非民间对话在赞比亚举行
  • “浦东时刻”在京展出:沉浸式体验海派风情
  • 协会:坚决支持司法机关依法打击涉象棋行业的违法行为
  • 第32届梅花奖终评启幕,上海京剧院《智取威虎山》满堂彩