关于控制器

控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。


image.png

控制器选举

借助于zk实现
集群初始化时,第一个成功创建 /controller 临时节点的 Broker 会被指定为控制器
其他节点监听/controller 状态,控制器故障时临时节点被删除,其他节点抢注,抢注成功者为新的控制器,加载配置承担控制器职责。


image.png

控制器作用

  1. 主题管理(创建、删除、增加分区)
  2. 分区重分配
  3. Preferred 领导者选举
  4. 集群成员管理(新增 Broker、Broker 主动关闭、Broker 宕机)

控制器数据

image.png

这些数据其实在 ZooKeeper 中也保存了一份。每当控制器初始化时,它都会从 ZooKeeper 上读取对应的元数据并填充到自己的缓存中。有了这些数据,控制器就能对外提供数据服务了。这里的对外主要是指对其他 Broker 而言,控制器通过向这些 Broker 发送请求的方式将这些数据同步到其他 Broker 上。

控制器线程模型

新版本为单线程加事件队列


image.png

另外控制器对请求的处理还进行了优化,支持这种不同优先级请求的处理,将控制器发送的请求与普通数据类请求分开,实现了控制器请求单独处理的逻辑。

你可能感兴趣的:(关于控制器)