Kafka 核心组件之 Controller 概念介绍(1)
Controller 是什么?
Controller,是 Apache Kafka 的核心组件。它的主要作用是在 Apache Zookeeper 的帮助下管理和协调控制整个 Kafka 集群。
集群中的任意一台 Broker 都能充当 Controller 的角色,但是,在整个集群运行过程中,只能有一个 Broker 成为 Controller。也就是说,每个正常运行的 Kafka 集群,在任何时刻都有且只有一个 Controller。
Controller 里都保存了什么数据?
图中展示的数据量几乎把我们能想到的所有 Kafka 集群的数据都囊括进来了。这里面比较重要的数据有:
所有主题信息。包括具体的分区信息,比如领导者副本是谁,ISR 集合中有哪些副本等。
所有 Broker 信息。包括当前都有哪些运行中的 Broker,哪些正在关闭中的 Broker 等。
所有涉及运维任务的分区。包括当前正在进行 Preferred 领导者选举以及分区重分配的分区列表。
这些数据其实在 ZooKeeper 中也保存了一份。每当控制器初始化时,它都会从 ZooKeeper 上读取对应的元数据并填充到自己的缓存中。
而 Broker 上元数据的更新都是由 Controller 通知完成的,Broker 并不从 Zookeeper 获取元数据信息。
以上内容主要参考胡夕《Kafka 核心技术与实战》和云加社区 ,作者袁吉的文章整理而来,喜欢的同学可以关注下他们。
博主简介:国内最大最权威的 Kafka 中文社区,共享知识,实时掌控最新行业资讯
技术交流:请联系博主微信号:didiyun0125
社区地址:免费加入中 ~
版权声明: 本文为 InfoQ 作者【Kafka中文社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/b1013150d96f00daed2eea914】。文章转载请联系作者。
评论