Kafka的Controller

选举

controller的选举依赖于ZK,在Kafka集群启动的时候,会在ZK中创建一个临时节点/controller,每个broker启动时(broker 启动过程中会启动 controller 服务,其中涉及监听 ZK节点/controller的数据变化和选举逻辑等),都会先去访问ZK中的这个节点;如果不存在broker就会去创建这个节点,先到先得成为controller。

[zk: localhost:2181(CONNECTED) 3] get /controller
{"version":1,"brokerid":0,"timestamp":"1608173427409"}

功能

监听分区相关的变化

  • 为ZK中的/admin/reassign_partitions节点注册监听器Handler来处理分区reassignment

  • 为/isr_change_notification节点注册Handler来处理ISR副本集合的变更

监听主题相关的变化

  • 为/brokers/topics节点注册Handler来处理主题的增减

  • 为/admin/delete_topics节点注册Handler来处理主题的删除动作

监听Broker的变化

  • 为/brokers/ids节点注册Handler来处理broker的增减

从ZK中获取broker、topic、partition相关的元数据信息

  • 为/brokers/topics/<topic>节点注册Handler来处理topic中分区分配的变化

启动并管理分区状态机和副本状态机

更新集群的元数据信息,并同步给其它的Broker

Reference

Kafka控制器选取原理

Kafka的Controller和Leader选举

猜你喜欢

转载自blog.csdn.net/qq_34276652/article/details/121406534