Netty组件概念明晰
是netty的主入口类,分为客户端Bootstrap类和服务端ServerBootstrap类两种。
eventloop可以看成是一个线程,eventLoopGroop可以看成是线程组。
Channel 是Java NIO 的一个基本构造。目前,可以把Channel 看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接。
channel和EventLoop(Group)
Channel需要被注册到某个EventLoop上,在Channel整个生命周期内都由这个EventLoop处理IO事件,也就是说一个Channel和一个EventLoop进行了绑定,但是一个EventLoop可以同时被多个Channel绑定。
ChannelPipeline
当Channel 被创建时,它将会被自动地分配一个新的ChannelPipeline,每个Channel 都有自己的ChannelPipeline。这项关联是永久性的。在Netty 组件的生命周期中,这是一项固定的操作,不需要开发人员的任何干预。
入站和出站ChannelHandler 被安装到同一个ChannelPipeline中,ChannelPipeline以双向链表的形式进行维护管理。
ChannelHandlerContext
channelHandlerContext相较于channelHandler多了构成ChannelPipeline链表的属性。
ChannelPipeline以双向链表的形式进行维护管理Handler,hannelHandlerContext 的主要作用就和LinkedList内部的类Node类似,不过ChannelHandlerContext 不仅仅只是个包装类,它还提供了很多的方法,比如让事件从当前ChannelHandler传递给链中的下一个ChannelHandler,还可以被用于获取底层的Channel,还可以用于写出站数据。