主页 > 新闻资讯 > 大数据学习:Kafka控制器解析

大数据学习:Kafka控制器解析

作者:张老师 浏览次数: 2020-12-15 16:42
深入到Kafka内部,涉及到的诸多名词和概念,都需要去深入地学习掌握。以kafka控制器来说,这是Kafka的核心内部组件,对于kafka集群的管理和协调有重要作用。今天的大数据学习分享,我们就围绕kafka控制器来具体讲一讲。

Kafka控制器

控制器(Controller)是Kafka的核心组件,它的主要作用是在Zookeeper的帮助下管理和协调整个Kafka集群。集群中任意一个broker都能充当控制器的角色,但在运行过程中,只能有一个broker成为控制器。控制器的产生,依赖于Zookeeper的ZNode模型和Watcher机制。

大数据学习:Kafka控制器

控制器选举

当集群中的任意broker启动时,都会尝试去Zookeeper中创建/controller节点,第一个成功创建/controller节点的broker则会被指定为控制器,其他broker则会监听该节点的变化。当运行中的控制器突然宕机或意外终止时,其他broker能够快速地感知到,然后再次尝试创建/controller节点,创建成功的broker会成为新的控制器。

控制器功能

主题管理:创建、删除topic,以及增加topic分区等操作都是由控制器执行。

分区重分配:执行Kafka的reassign脚本对topic分区重分配的操作,也是由控制器实现。

Preferred leader选举:这里有一个概念叫Preferred replica即优先副本,表示的是分配副本中的第一个副本。Preferred leader选举就是指Kafka在某些情况下出现leader负载不均衡时,会选择preferred副本作为新leader的一种方案。这也是控制器的职责范围。

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

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

总的来说,控制器可以说是Kafka的心脏,管理和协调着整个Kafka集群,因此控制器自身的性能和稳定性就变得至关重要。

社区在这方面做了大量工作,特别是在0.11版本中对控制器进行了重构,其中最大的改进把控制器内部多线程的设计改成了单线程加事件队列的方案,消除了多线程的资源消耗和线程安全问题,另外一个改进是把之前同步操作Zookeeper改为了异步操作,消除了Zookeeper端的性能瓶颈,大大提升了控制器的稳定性。

关于大数据学习,Kafka控制器,以上就为大家做了详细的介绍了。Kafka在大数据技术生态的地位,正在变得越来越重要,而Kafka这个组件,想要彻底搞懂,也需要付出足够的时间精力去学。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及试学视频,可联系客服获取!
热点排行
推荐文章
立即申请>>