所有文章
https://www.cnblogs.com/lay2017/p/12922074.html
正文
为了了解netty的工作机制,这里有几个概念需要知道
1.BootStrap
2.EventLoopGroup
3.EventLoop
4.SocketChannel
5.ChanneInitializer
6.ChannelPipeline
7.ChannelHandler
这些概念关联关系如图
下面分别描述
BootStrap
bootstrap主要关注怎么启动netty,比如启动线程、打开连接等
EventLoopGroup
顾名思义,是EventLoop的一个组的概念。之所以把EventLoop变成组,就是为了共享资源,比如线程资源。
EventLoop
eventLoop其实就是循环监听事件,比如SocketChannel的数据到达事件。监听到的事件会交给对应的ChannelHandler处理
SocketChannel
socketChannel表示的是两台电脑的TCP连接,它被eventLoop管理,并且一直都是同一个eventLoop。eventLoop也会启用同一个线程去管理socketChannel,因此你也不用担心并发问题。
ChannelInitializer
ChannelInitializer是一个特殊的ChannelHandler,当一个SocketChannel被创建的时候,ChannelInitializer会被关联到ChannelPipeline上。所以,ChannelInitializer也可以说是初始化了SocketChannel。当SocketChannel初始化完毕,ChannelInitializer就会移除。
ChannelPipeline
每一个SocketChannel都绑定有一个ChannelPipeline,ChannelPipeline包含一系列ChannelHandler。当EventLoop从SocketChannel读取到数据,就会传输给ChannelHandler,一个ChannelHandler处理完就会传递给下一个。向SocketChannel写入数据也是一样的通过ChannelPipeline处理。
ChannelHandler
ChannelHandler处理来自SocketChannel的数据,ChannelHandler也可以处理要写入SocketChannel的数据。