kafka控制台controller理解

Controller 是什么

控制器组件(Controller)是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群,例如分区领导者副本的选举。

集群中任意一台 Broker 都能充当控制器的角色,但是,在运行过程中,只能有一个 Broker 成为控制器,行使其管理和协调的职责。换句话说,每个正常运转的 Kafka 集群,在任意时刻都有且只有一个控制器。

Controller 选举原理

所有 Broker 都可以竞选为 controller 节点。选举原理是谁先在zookeeper注册到 /controller 临时znode的话,谁就是成为 controller 节点。

1. 查看节点信息
执行 get /controller 命令

2. 查看是否为临时节点
执行 stat /controller 命令,返回ephemeralOwner属性。如果是等于 0x0 ,则说明是持久化节点,反之为临时节点。

img

Controller 功能

  1. 主题管理
    创建、删除topic,以及增加topic分区等操作都是有 controller 执行

  2. 分区重分配

    • 执行Kafka的reassign脚本对Topic分区重分配的操作,也是由 controller 实现。
    • 如果集群中有一个Broker异常退出, controller 会检查这个broker是否有分区的副本leader,如果有那么这个分区就需要一个新的leader,此时 controller 就会去遍历其他副本,决定哪一个成为新的leader,同时更新分区的ISR集合。
    • 如果有一个Broker加入集群中,那么 controller 就会通过Broker lD去判断新加入的Broker中是否含有现有分区的副本,如果有,就会从分区副本中去同步数据。
  3. Preferred leader选举
    因为在Kafika集群长时间运行中,broker的宕机或崩溃是不可避免的,leader就会发生转移,即使broker重新回来,也不会是leader了。在众多leader的转移过程中,就会产生leader不均衡现象,可能一小部分broker上有大量的leader,影响了整个集群的性能,所以就需要把leader调整回最初的broker上,这就需要Preferred leader选举。

  4. 集群成员管理
    控制器能够监控新broker的增加,broker的主动关闭与被动宕机,进而做其他工作。这也是利用Zookeeper的ZNode模型和Watcher机制,控制器会监听Zookeeper中/brokers/ids下临时节点的变化。同时对broker中的leader节点进行调整。

    比如,控制器组件会利用Watch机制检查ZooKeeper的/brokerslids节点下的子节点数量变更。目前,当有新 Broker启动后,它会在/brokers 下创建专属的znode节点。一旦创建完毕,ZooKeeper会通过Watch机制将消息通知推送给控制器,这样,控制器就能自动地感知到这个变化,进而开启后续的新增Broker作业。侦测 Broker存活性则是依赖于刚刚提到的另一个机制:临时节点。每个Broker启动后,会在/brokerslids 下创建一个临时znode。当Broker宕机或主动关闭后,该Broker与ZooKeeper的会话结束,这个znode 会被自动删除。同理,Zookeeper的 Watch机制将这一变更推送给控制器,这样控制器就能知道有Broker关闭或宕机了,从而进行"善后"。

  5. 元数据服务
    controller 上保存了最全的集群元数据信息,其他所有broker会定期接收 controller 发来的元数据更新请求,从而更新其内存中的缓存数据

controller 脑裂

理论上不会出现,还需要验证 /controller_epoch 的大小,该节点数字是单调递增的。多个 broker 认为自己为 controller 的话,对比下 controller_epoch 值大小即可。

正常选主的相关日志截图

原 controller 日志

日志提示辞职controller职责 和 打印新 controller 节点信息

img

新 controller 日志

成功竞选为 controller 节点,并且打印 controller_epoch 当数值...

img

查看 zk 数据

img

posted @   jiaxzeng  阅读(435)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示