2.2.4 Kafka请求处理线程

2.2.4 Kafka请求处理线程

KafkaServer会创建请求处理线程池(KafkaRequestHandlerPool),在请求处理钱程池中会创建并启动多个请求处理线程(KafkaRequestHandler)。SocketServer中全局的请求通道会传递给每个请求处理线程。这样每个请求处理线程共同消费同一个请求通道中的所有客户端请求。每个请求处理线程获取到请求后,都交给统一的KafkaApis处理。注意:一个KafkaServer有多个请求处理线程,但是只有一个KafkaApis。相关代码如下:

class KafkaRequestHandlerPool(val brokerId: Int,
                              val requestChannel: RequestChannel,
                              val apis: KafkaApis,
                              time: Time,
                              numThreads: Int) extends Logging with KafkaMetricsGroup {}

class KafkaRequestHandler(id: Int,
                          brokerId: Int,
                          val aggregateIdleMeter: Meter,
                          val totalHandlerThreads: Int,
                          val requestChannel: RequestChannel,
                          apis: KafkaApis,
                          time: Time) extends Runnable with Logging {}

总结下服务端和网络层相关的组件有r:r一个接收器线程(rAcceptorr)、r多个处理器(rprocessorrr)、一个请求通道(rRequestChannelr)、r一个请求队列(rrequestQueuer)、r多个响应队列(rrresrponseQueuer)、一个请求处理线程连接池r(rKafkaRequestHandlerPoolr)、多个请求处理线程(rKafkaRequestHandlerrr)、一个服务端请求入口(KafkaApis)。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页