问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Kafka集群初始化过程及底层原理

创作时间:
作者:
@小白创作中心

Kafka集群初始化过程及底层原理

引用
CSDN
1.
https://blog.csdn.net/weixin_65550740/article/details/139453147

Apache Kafka是一种分布式流处理平台,广泛应用于大数据处理和实时数据流应用中。本文将深入探讨Kafka集群的初始化过程及其底层原理,帮助读者更好地理解Kafka的内部工作机制。

集群启动

相关概念

1.1.1 代理:Broker

使用Kafka前,我们都会启动Kafka服务进程,这里的Kafka服务进程我们一般会称之为Kafka Broker或Kafka Server。因为Kafka是分布式消息系统,所以在实际的生产环境中,是需要多个服务进程形成集群提供消息服务的。所以每一个服务节点都是一个broker,而且在Kafka集群中,为了区分不同的服务节点,每一个broker都应该有一个不重复的全局ID,称之为broker.id,这个ID可以在kafka软件的配置文件server.properties中进行配置

#集群ID  
broker.id=0  

咱们的Kafka集群中每一个节点都有自己的ID,整数且唯一。

主机
broker.id
kafka-broker1
1
kafka-broker2
2
kafka-broker3
3

1.1.2 控制器:Controller

Kafka是分布式消息传输系统,所以存在多个Broker服务节点,但是它的软件架构采用的是分布式系统中比较常见的主从(Master - Slave)架构,也就是说需要从多个Broker中找到一个用于管理整个Kafka集群的Master节点,这个节点,我们就称之为Controller。它是Apache Kafka的核心组件非常重要。它的主要作用是在Apache Zookeeper的帮助下管理和协调控制整个Kafka集群。

如果在运行过程中,Controller节点出现了故障,那么Kafka会依托于ZooKeeper软件选举其他的节点作为新的Controller,让Kafka集群实现高可用。

Kafka集群中Controller的基本功能:

  • Broker管理
  • 监听/brokers/ids节点相关的变化:
  • Broker数量增加或减少的变化
  • Broker对应的数据变化
  • Topic管理
  • 新增:监听/brokers/topics节点相关的变化
  • 修改:监听/brokers/topics节点相关的变化
  • 删除:监听/admin/delete_topics节点相关的变化
  • Partition管理
  • 监听/admin/reassign_partitions节点相关的变化
  • 监听/isr_change_notification节点相关的变化
  • 监听/preferred_replica_election节点相关的变化
  • 数据服务
  • 启动分区状态机和副本状态机

集群启动

初始化服务

Kafka Broker中有很多的服务对象,用于实现内部管理和外部通信操作。

2.2.3.2.1 启动任务调度器

每一个Broker在启动时都会创建内部调度器(KafkaScheduler)并启动,用于完成节点内部的工作任务。底层就是Java中的定时任务线程池ScheduledThreadPoolExecutor

2.2 创建数据管理器

每一个Broker在启动时都会创建数据管理器(LogManager),用于接收到消息后,完成后续的数据创建,查询,清理等处理。

2.3 创建远程数据管理器

每一个Broker在启动时都会创建远程数据管理器(RemoteLogManager),用于和其他Broker节点进行数据状态同步。

2.4 注册Broker节点

Broker启动时,会通过ZK客户端对象向ZK注册当前的Broker 节点ID,注册后创捷的ZK节点为临时节点。如果当前Broker的ZK客户端断开和ZK的连接,注册的节点会被删除。

2.5 启动控制器

控制器(KafkaController)是每一个Broker启动时都会创建的核心对象,用于和ZK之间建立连接并申请自己为整个Kafka集群的Master管理者。如果申请成功,那么会完成管理者的初始化操作,并建立和其他Broker之间的数据通道接收各种事件,进行封装后交给事件管理器,并定义了process方法,用于真正处理各类事件。

2.5.1 初始化通道管理器

创建通道管理器(ControllerChannelManager),该管理器维护了Controller和集群所有Broker节点之间的网络连接,并向Broker发送控制类请求及接收响应。

2.5.2 初始化事件管理器

创建事件管理器(ControllerEventManager)维护了Controller和集群所有Broker节点之间的网络连接,并向Broker发送控制类请求及接收响应。

2.5.3 初始化状态管理器

创建状态管理器(ControllerChangeHandler)可以监听/controller节点的操作,一旦节点创建(ControllerChange),删除(Reelect),数据发生变化(ControllerChange),那么监听后执行相应的处理。

2.5.4 启动控制器

控制器对象启动后,会向事件管理器发送Startup事件,事件处理线程接收到事件后会通过ZK客户端向ZK申请/controller节点,申请成功后,执行当前节点成为Controller的一些列操作。主要是注册各类 ZooKeeper 监听器、删除日志路径变更和 ISR 副本变更通知事件、启动 Controller 通道管理器,以及启动副本状态机和分区状态机。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
Kafka集群初始化过程及底层原理