Kafka源码阅读(9)-SocketServer之DataPlane与ControlPlane

在本系列的kafka源码阅读(6)-SocketServer 之 Processor 与 Acceptor中,主要介绍了负责实现网络编程 reactor 模式的 Acceptor 以及 Processor,对于 SocketServer 如何使用它们并没有介绍到,那么这篇将真正揭开 SocketServer 的神秘面纱。 不知从何说起,先把 SocketServer 类的官方注释翻译一下: SocketServer 负责处理 kafka 的网络连接、请求和响应。并且将请求类型分为数据类请求以及控制类请求,支持分别用两种类型的请求平面来处理这些请求: 数据平面 Data Plane: 职责:负责处理来自客户端的数据类型请求(如果没开启控制平面,则数据平面将处理所有请求)。 线程模型:每个 listener 对应 1 个 Acceptor 线程(可以配置多个 listener),1 个 Acceptor 对应 N 个 Processor 线程,Acceptor 接收到的每条连接交由其中 1 个 Processor 进行处理。另外还有 M 个 Handler 线程负责处理连接上发来的请求,得到响应后交回给 Processor 去返回给客户端,注意这 M 个 Handler 并没有与其它线程、连接或者请求有什么对应关系,是整个数据平面中公共的处理请求的线程池。 控制平面 Control Plane: 职责:负责处理来自 controller 的控制类型请求,如上所述,控制平面是可选的。 线程模型:整个控制平面只有 1 个 Acceptor 线程负责接建立连接,并且该 Acceptor 只有一个 Processor 线程负责处理所有连接。另外也只有 1 个 Handler 线程来处理所有请求。相比数据平面的线程模型比较“寒酸”,因为控制类型请求的数量远小于数据类型的请求。 从注释的开始我们就看出 SocketServer 基本负责整个 kafka 的网络请求处理,并且出于一些原因(KAFKA-4453),SocketServer 将客户端请求分为了数据和控制类型,并且分别用数据平面和控制平面来处理这些请求,以保证控制类请求得到优先处理(不禁想起文件传输协议 FTP 也将连接分成了控制连接和数据连接)。 ...

六月 11, 2025 · by NOSAE

kafka源码阅读(8)-Kafka中的NIO封装(下)

Note 基于开源 kafka 2.5 版本。 如无特殊说明,文中代码片段将删除 debug 信息、异常触发、英文注释等代码,以便观看核心代码。 ...

六月 9, 2025 · by NOSAE

kafka源码阅读(7)-Kafka中的NIO封装(上)

Note 基于开源 kafka 2.5 版本。 如无特殊说明,文中代码片段将删除 debug 信息、异常触发、英文注释等代码,以便观看核心代码。 ...

五月 31, 2025 · by NOSAE

kafka源码阅读(6)-SocketServer之Processor与Acceptor

Note 基于开源 kafka 2.5 版本。 如无特殊说明,文中代码片段将删除 debug 信息、异常触发、英文注释等代码,以便观看核心代码。 ...

五月 26, 2025 · by NOSAE

kafka源码阅读(5)-请求队列

Note 基于开源 kafka 2.5 版本。 如无特殊说明,文中代码片段将删除 debug 信息、异常触发、英文注释等代码,以便观看核心代码。 ...

五月 19, 2025 · by NOSAE