-
Channel
:Socket ;EventLoop
:控制流、多线程处理、并发;ChannelFuture
:异步通知
- 一个
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)
第 3 章 Netty 的组件和设计
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本文是Netty文集中“Netty in action”系列的文章。主要是对Norman Maurer and M...
- 本文是Netty文集中“Netty 源码解析”系列的文章。主要对Netty的重要流程以及类进行源码解析,以使得我们...