kafka源码之kafkaserver的启动

本文详细剖析了Kafka Server的启动过程,从执行kafka-server-start.sh脚本开始,逐层解析如何根据server.properties配置文件生成KafkaServer实例,包括KafkaServerStartable、KafkaConfig的创建,以及启动过程中涉及的Zookeeper连接、LogManager、SocketServer、ReplicaManager、KafkaController等关键组件的初始化和启动步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KAFKA的启动

Kafka启动时,通过进入kafkabin路径下,执行如下脚本:

./kafka-server-start.sh ../config/server.properties

 

这个脚本会启动Kafka类的实例,并执行main函数,传入的参数是server.properties的路径.

def main(args: Array[String]): Unit = {
  try {

加载对应的server.properties配置文件,并生成Properties实例.
    val serverProps = getPropsFromArgs(args)

这里生成一个KafkaServer的实例,这个实例生成时,会在实例中同时生成一个KafkaServer的实例,

生成KafkaServer实例前,需要先通过serverProps生成出一个KafkaConfig的实例.
    val kafkaServerStartable = KafkaServerStartable.fromProps(serverProps)

添加对kill操作的勾子函数.用于处理,如果直接kill时关闭kafkaserver.
    // attach shutdown handler to catch control-c
    
Runtime.getRuntime().addShutdownHook(new Thread() {
      override def run() = {
        kafkaServerStartable.shutdown
      }
    })
启动并等待server停止.
    kafkaServerStartable.startup
    kafkaServerStartable.awaitShutdown
  }
  catch {
    case e: Throwable =>
      fatal(e)
      System.exit(1)
  }
  System.exit(0)
}

 

根据properties生成server实例

KafkaServerStartable.fromProps(serverProps)函数调用时,也就是kakfa启动时,

new KafkaServerStartable(KafkaConfig.fromProps(serverProps))

KafkaServerStartable实例生成时,会生成KafkaServer实例:

  class KafkaServerStartable(val serverConfig: KafkaConfig) extends Logging {
         private val server new 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值