Netty对于Socket抽象
Socket通信与Netty各组件对应关系
模型图详解:
- Netty中NioEventLoop主要对应Socket中服务端while循环监听事件,这里的事件循环主要包括“新连接的接入”、“连接当前已存在的连接上的数据流读写”;
- Netty中Channel主要对应Socket连接,IO编程模型主要是Socket,NIO编程模型主要是SocketChannel。Netty统一把它封装成一个自定义Channel,基于这个Channel一系列读写都可以在这条连接上读写,它其实就是对Socket的抽象;
- Netty中ByteBuf主要对应Socket服务端接受数据逻辑,服务端接受数据流的载体都是基于ByteBuf,ByteBuf封装了一些比较好用的API,然后通过这些API就可以跟这些底层的数据流通信,当数据流到了服务端之后,服务端要处理一些业务逻辑;
- Netty中ChannelHandler主要对应Socket服务端处理数据的逻辑,ChannelHandler第一要对数据包进行分包,对于每个类型数据包,都需要进行java对象转换,都需要扔到不同的处理器中处理,那么用户可以自定义不同的ChannelHandler处理;
- Netty中Pipeline主要对应Socket中服务端一连串的逻辑处理,多个ChannelHandler组合成的逻辑链就是Netty的Pipeline。