Kafka核心组件之Controller概念介绍(1)

798 阅读1分钟

Controller是什么?

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

集群中的任意一台Broker都能充当Controller的角色,但是,在整个集群运行过程中,只能有一个Broker成为Controller。也就是说,每个正常运行的Kafka集群,在任何时刻都有且只有一个Controller

Controller里都保存了什么数据?

图中展示的数据量几乎把我们能想到的所有 Kafka 集群的数据都囊括进来了。这里面比较重要的数据有:

  1. 所有主题信息。包括具体的分区信息,比如领导者副本是谁,ISR集合中有哪些副本等。
  2. 所有Broker信息。包括当前都有哪些运行中的Broker,哪些正在关闭中的Broker等。
  3. 所有涉及运维任务的分区。包括当前正在进行Preferred领导者选举以及分区重分配的分区列表。

这些数据其实在ZooKeeper中也保存了一份。每当控制器初始化时,它都会从ZooKeeper上读取对应的元数据并填充到自己的缓存中。

而Broker上元数据的更新都是由Controller通知完成的,Broker并不从Zookeeper获取元数据信息。

以上内容主要参考胡夕《Kafka核心技术与实战》和云加社区 ,作者袁吉的文章整理而来,喜欢的同学可以关注下他们。

博主简介:国内最大最权威的 Kafka中文社区,共享知识,实时掌控最新行业资讯

技术交流:请联系博主微信号:didiyun0125

社区地址: z.didi.cn/5gSF9