1.Channel
channel就像是连接客户端和服务端的通道。服务端的ServerSocketChannel接受客户端SocketChannel的连接从而在服务端生成一个新的SocketChannel与之通信。channel对产生的i/o事件进行处理。
2.EventLoopGroup
EventLoopGroup更像是一个线程池,里面包含了多个EventLoop,每个EventLoop中都包含一个thread。
3.EventLoop
每个EventLoop中都包含一个thread,NioEventLoop中的run方法处理i/o任务和普通任务。
4.Selector
ServerSocketChannel和SocketChannel都要将自己感兴趣的事件注册到Selector上,当某个Channel上发生了自己感兴趣的事件,Selector能够感知到该事件,然后对其进行处理。
5.ChannelPipeLine
每个Channel上都有自己的ChannelPipeLine,Channel上发生的事件交给它来处理。处理模式类似责任链设计模式。ChannelPipeLine包含了一个ChannelHandler的双向链表。
6.ChannelHandler
ChannelHandler负责具体干活。应用的业务逻辑都是写在自己创建的ChannelHandler中。