-
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)















网友评论