比如若Broker端参数配置如下:
配置3个监听器,分别是CONTROLLER、INTERNAL和EXTERNAL,使用的安全协议分别是PLAINTEXT、PLAINTEXT和SSL。
那SocketServer如何实现Data plane与Control plane分离的呢?
===========================================================================
- 实现请求优先级相关的字段
对于Data plane,线程池的说法没有问题,因为Processor线程确实有很多,而Acceptor也可能多个,因为SocketServer会为每个EndPoint(每套监听器)创建一个对应的Acceptor线程。
但Control plane不同。
Control plane那组属性变量都是以Opt结尾的,即Option类型,完全可以不使用Control plane,即你可让Kafka不区分请求类型,2.2.0之前设计就是这样。
但一旦开启Control plane设置,其Processor线程和Acceptor线程都是1个。
它对应的RequestChannel里面的请求队列长度被硬编码成20,即控制类请求的数量应该远小于数据类请求,因而不需要为它创建线程池和较深的请求队列。
========================================&#