NioEventLoopGroup:直译这个类名就是nio的事件轮询组,其实轮询的就是Selector.select()。文档中的解释是"it is used for NIO Selector based Channel."。对于接收客户端的连接事件与selectionKey绑定的是ServerSocketChannel;对于读写网络I/O事件与selectionKey绑定的便是SocketChannel。
ChannelPipeline:文档中的解释是"it handles or intercepts inbound events and outbound operations of a implements an advanced form of the Intercepting Filter pattern",翻译过来就是它处理或者是拦截入栈事件和出栈的一些操作,实现了一种更加高级的拦截过滤器模式。过滤器模式是入出走同一个过滤器,而对于ChannelPipeline入栈处理和出栈处理分离开了,ChannelPipeline
底层维护着一个ChannelHandlerContext双向链表。ChannelPipeline的处理流程如下:
从Channel里读出来的数据,需要经过与Channel绑定的ChannelPipeline中的InboundHandler处理,再注册写事件。写出的时候需要经ChannelPipeline中的OutboundHandler处理在写回给客户端。