1、kafka 为什么依赖JDK?
kafka的源代码是基于Scala语言编写的,运行在Java虚拟机(即:JVM)上。因此,在安装kafka之前需要先安装JDK
2、Kafka 为什么依赖 Zookeeper?
Kafka依赖Zookeeper主要有以下几个原因:
1.协调分布式系统:Kafka是一个分布式系统,各个节点之间需要进行协调和同步,而Zookeeper正是为分布式系统提供协调和同步的服务的。
2.元数据管理:Kafka的元数据包括了集群的配置、broker的状态等信息,而这些信息需要被所有的Kafka节点共享和维护。Zookeeper提供了一个分布式的文件系统,可以方便地存储和管理这些元数据信息。
3.领导选举:Kafka的一个分区只会分配给一个broker进行读写,而这个broker就是该分区的leader。当leader宕机后,需要从剩余的broker中选举一个新的leader。而Zookeeper可以提供分布式锁和选举的功能,因此Kafka可以利用Zookeeper来实现leader选举。
综上所述,Kafka依赖Zookeeper主要是为了协调分布式系统、元数据管理和领导选举。
kafka 选举过程
在Kafka集群中,每个代理节点(Broker)在启动时会实例化一个KafkaController类。该类会执行一系列业务逻辑,选举出主题分区的Leader节点。具体选举主题分区Leader节点的步骤如下。
(1)第一个启动的代理节点,会在Zookeeper系统里面创建一个临时节点/controller,并写入该节点的注册信息,使该节点成为控制器。
(2)其他的代理节点陆续启动时,也会尝试在Zookeeper系统里面创建/controller节点。但由于/controller 节点已经存在,所以会抛出“创建/controller 节点失败异常”的信息。创建失败的代理节点会根据返回的结果,判断出在Kafka集群中已经有一个控制器被成功创建了,所以放弃创建/controller节点。这样确保了Kafka集群控制器的唯一性。
(3)其他的代理节点,会在控制器上注册相应的监听器。各个监听器负责监听各自代理节点的状态变化,当监听到节点状态发生变化时,会触发相应的监听函数进行处理。
如何查看kafka 集群的