-
Channel
:Socket ;EventLoop
:控制流、多线程处理、并发;ChannelFuture
:异步通知
image.png
- 一个
EventLoopGroup
包含一个或者多个EventLoop
- 一个
EventLoop
在它的生命周期内只和一个 Thread 绑定 - 所有由
EventLoop
处理的 I/O 事件都将在它专有的 Thread上被处理 - 一个
Channel
在它的生命周期内只注册于一个EventLoop
- 一个
EventLoop
可能会被分配给一个或多个Channel
- 一个
-
ChannelHandler
充当了所有ChannelPipeline
中处理入站和出站数据的应用程序逻辑的容器 -
ChannelPipeline
提供了ChannelHandler
链的容器,并定义了用于在该链上传播入站和出战事件流的 API,当Channel
被创建时,它会被自动地分配到专属的ChannelPipeline
,ChannelHandlerContext
代表了ChannelHandler
和ChannelPipeline
之间的绑定 - Netty 提供了抽象基类
ChannelInboundHandlerAdapter
和ChannelOutboundHandlerAdapter
都简单的将事件传递给下一个ChannelHandler
,只需重写感兴趣的事件方法 - 直接将数据写到
Channel
中将导致消息从ChannelPipeline
的尾端开始流动;通过ChannelHandlerContext
写出消息将导致消息从ChannelPipeline
中的下一个ChannelHandler
开始流动 - 客户端的引导类
Bootstrap
,服务端的引导类ServerBootstrap
;其中Bootstrap
只是用一个EventLoopGroup
,而ServerBootstrap
会使用两个EventLoopGroup
,一个只包含一个ServerChannel
代表服务器自身已绑定到某个本地端口的正在监听的套接字(接收请求),另一个将包含所有已创建的用来处理传入客户端连接的Channel
(一个 Channel 绑定到一个 EventLoop)
网友评论