Kafka 是服务端的启动类,启动类会启动 KafkaServerStartable.startup() 方法来调用 KafkaServer.startup() 启动服务
- KafkaServer 是 kafka 服务端的主类,涉及网络层的服务组件是 SocketServer、KafkaApis、KafkaRequestHandlerPool
/**
* Represents the lifecycle of a single Kafka broker. Handles all functionality required
* 表示单个Kafka代理的生命周期。处理所有需要的功能
* to start up and shutdown a single Kafka node.
* 启动和关闭单个Kafka节点。
*/
class KafkaServer(val config: KafkaConfig, time: Time = SystemTime, threadNamePrefix: Option[String] = None, kafkaMetricsReporters: Seq[KafkaMetricsReporter] = List()) extends Logging with KafkaMetricsGroup {
/**
* Start up API for bringing up a single instance of the Kafka server.
* 启动API,以启动Kafka服务器的单个实例。
* Instantiates the LogManager, the SocketServer and the request handlers - KafkaRequestHandlers
* 实例化LogManager, SocketServer和请求处理程序- KafkaRequestHandlers
*/
def startup() {
// NIO 服务端
socketServer = new SocketServer(config, metrics, kafkaMetricsTime)
socketServer.startup()
/* start processing requests 开始处理请求 */
apis = new KafkaApis(socketServer.requestChannel, replicaManager, adminManager, groupCoordinator, kafkaController, zkUtils, config.brokerId, config, metadataCache, metrics, authorizer, quotaManagers, clusterId)
// TODO 处理队列里面的请求
requestHandlerPool = new KafkaRequestHandlerPool(config

本文详细介绍了Kafka服务端的启动过程,包括KafkaServer如何启动SocketServer,以及KafkaRequestHandler如何处理客户端请求。SocketServer采用Reactor模型,通过一个Acceptor线程和多个Processor线程处理网络连接。当客户端发起请求时,请求经过Acceptor转发到Processor,再由KafkaRequestHandler进行业务逻辑处理,最后响应客户端。整个流程展示了Kafka高效处理网络请求的机制。
最低0.47元/天 解锁文章
1478

被折叠的 条评论
为什么被折叠?



