Broker简介:
kafka集群是由若干个broker组成,可以简单得理解为broker就是部署在服务器的kafka节点。
1.SocketServer
SocketServer作为Broker对外提供Socket服务的模块,主要用于接收socket连接的请求,然后产生相应为之服务的SocketChannel对象。
内部主要包括三个模块:
- Acceptor主要用于监听Socket连接;
- Processor主要用于转发Socket的请求和响应。
- RequestChannel主要用于缓存Socket的请求和响应。
1.1Acceptor对象主要功能
(1)开启socket服务
(2)注册Accept事件
(3)监听此ServerChannel上的ACCEPT事件,当其发生时,将其以轮询的方式把对应的 SocketChannel转交给Processor处理线程。
1.2Processor对象主要功能
(1)当有新的SocketChannel对象进来的时候,注册其上的OP_READ事件以便接收客户端的请求。
(2)从RequestChannel中的响应队列获取对应客户端的请求,然后产生OP_WRITE事件。
(3)监听selector上的事件。如果是读事件,说明有新的request到来,需要转移给 RequestChannel的请求队列;如果是写事件,说明之前的request已经处理完毕,需要从 RequestChannel的响应队列获取响应并发送回客户端;如果是关闭事件,说明客户端已经关闭了 该Socket连接,此时服务端也应该释放相关资源。
1.3RequestChannel
本质上就是为了解耦SocketServer和KafkaApis两个模块,内部包含Request的阻塞队列和Response的阻塞队列。
注: