Kafka源码分析-序列3 -Producer -Java NIO(Reactor VS Peactor)
上一篇我们分析了Metadata的更新机制,其中涉及到一个问题,就是Sender如何跟服务器通信,也就是网络层。同很多 Java 项目一样,Kafka client的网络层也是用的Java NIO,然后在上面做了一层封装。 下面首先看一下,在Sender和服务器之间的部分: 可以看到,Kafka client基于Java NIO封装了一个网络层,这个网络层最上层的接口是KakfaClient。其层次关系如下: 在本篇中,先详细对最底层的Java NIO进行讲述。< 喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMSBpZD0="nio的4大 组件 ">NIO的4大组件 Buffer与Channel Channel: 在通常的Java网络 编程 中,我们知道有一对Socket/ServerSocket对象,每1个socket对象表示一个connection,ServerSocket用于服务器监听新的连接。 在NIO中,与之相对应的一对是SocketChannel/ServerSocketChannel。 下图展示了SocketChannel/ServerSocketChannel的类继承层次 ? 1 2 3 4 5 6 7 8 9 10 11 12 public interface Channel extends