主页 > 新闻资讯 > 大数据培训:详解Kafka控制器初始化

大数据培训:详解Kafka控制器初始化

作者:张老师 浏览次数: 2021-03-15 17:55
Kafka作为分布式消息队列而言,确实为海量的实时消息流处理提供了可靠的解决方案,其生产者、消费者的模式,确保了消息流处理的效率。今天的大数据培训分享,我们主要来讲讲,Kafka控制器的部分,控制器初始化。

大数据培训:详解Kafka控制器初始化

在启动Kafka集群时,每一个代理都会实例化并启动一个KafkaController,并将该代理的brokerId注册到Zookeeper的相应节点中。Kafka集群中各代理会根据选举机制选出其中一个代理作为Leader,称之为Leader控制器。

控制器负责主题的创建与删除,分区和副本的管理,代理故障转移以及代理上下线处理等。控制器功能实现的程序入口是在core工程下的kafka.controller.KafkaController类。

控制器初始化步骤:

1、创建一个ControllerContext实例对象

用于缓存控制器各种处理操作所需要的数据结构,初始化控制器选举次数epoch以及对应的zkVersion字段为0,设置当前正常运行的代理列表,主题列表,分区与副本的AR列表,同时实例化代理选举控制器操作的ReentrantLock。

2、创建分区状态机

用于维护和管理分区状态。

3、创建副本状态机

用于管理副本状态。

4、创建ZooKeeperLeaderElector选举器对象

用于将当前代理选举为控制器。一个监听:LeaderChangeListener,两个操作:

完成控制器相应初始化的onControllerFailover()方法

当新的控制器当选时让先前的控制器注销控制器权限的onControllerResignation()方法

5、创建定时任务KafkaScheduler

用于控制器进行平衡操作,其生命周期只在代理成为Leader控制器期间内有效。

6、创建TopicDeletionManager对象

用于对主题操作管理。

7、创建分区选举器PartitionLeaderSelector

用于在分区状态发生变化时为分区选举出Leader副本的分区选举器。

8、实例化ControllerBrokerRequestBatch

前面创建了分区状态机和副本状态机,这两个状态机在相应状态发生变化时相应监听器都会调用各自的handleStateChange()方法进行处理,而ControllerBrokerRequestBatch封装了leaderAndIsrRequestMap、stopReplicaRequestMap和updateMetadataRequestMap这3个集合,用来记录和缓存handleStateChange()方法中产生的request,控制器将这些request交由ControllerBrokerRequestBatch.sendRequestsToBrokers()方法批量发送出去,交由KafkaApis调用相应的handle方法进行处理。

9、实例化3个监听器

PartitionsReassignedListener:用于监听分区重分配。

PreferredReplicaElectionListener:用于监听当分区状态变化时选举器将优先副本选举为Leader。

IsrChangeNotificationListener:用于监听ISR列表变化,所有代理节点更新元数据。

总结下控制器初始化工作:

当一个代理启动时就会创建一个KafkaController实例并启动。在启动KafkaController时,先注册一个用于监听代理与ZooKeeper会话超时的监听器SessionExpirationListener,然后启动控制器选举,让当前代理试图去竞选为控制器。

关于大数据培训,详解Kafka控制器初始化,以上就为大家做了大致的介绍了。Kafka在分布式消息队列当中,是一个不可多得的利器,因此也是学习阶段的一个核心重点组件。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频,可联系客服领取!
热点排行
推荐文章
立即申请>>