1 Kafka核心总控制器Controller
kafka的所有Broker都会注册到kafka集群中去。
kafka集群会选举一个Broker作为kafka七群的总控制器Controller。
他负责管理整个集群所有分区Partition和副本follower的状态
2 controller节点的选举
Controller选举机制是使用zookeeper的选举机制来实现
在zookeeper中的主节点下面创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,
这个broker就会成为集群的总控器controller,如下
Controller里面记录了当前的Controller是哪个节,如下
3 partion的leader的选举
Controller会用zookeeper的watcher机制,监控brokers下面的所有的broker
broker在加入集群时注册的节点是个临时节点,伴随broker的崩溃,临时节点消失,然后controller会收到通知
一旦发现某个broker挂掉了,就会去找到该broker有多少partion是leader并发起对该partition的选举。
对partition的leader重新选举的机制为:
1)监听topic相关的变化
2)为Zookeeper中的/brokers/topics节点添加TopicChangeListener,用来处理topic增减的变化
如下图, 对于每个Topic都有一个ISR列表,直接取ISR列表的第一个作为leader,如果当前挂的就是第一个,则选择后面一个作为leader。
unclean.leader.election.enable=false, 默认情况下, 是从IRS列表里面的节点作为leader,但是如果这个参数配置成true,不在ISR列表但是在Replicas列表里面的也可以作为选举leader的。
但是可以想像得出来,这个不在ISR列表得副本数据不是很全得所以需要谨慎使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-06-29 VUE10 计算属性