Netty的组件与设计
-
Channel---Socket
- 基本的构造是Socket
-
EventLoop---控制流,多线程处理,并发
- 定义了Netty的核心抽象,用于处理连接生命周期中发生的事件
- 一个EventLoopGroup可以有多个EvnetLoop
- 一个EventLoop在它的生命周期中只和一个Thread绑定
- 所有由EventLoop处理的I/O事件都将在它专有的Thread上处理
- 一个Channel在它的生命周期中只注册于一个EventLoop
- 一个EventLoop可能被分配一个或多个Channel
-
ChannelFuture---异步通知
- 一个操作可能不会立即返回,所以我们需要一种用于在之后的某个时间点确定其结果的方法,ChannelFuture的addListener()方法注册了一个ChannelFutureListener。以便在某个操作完成时得到通知。
-
ChannelHandler
- 是处理入站和出站数据的容器
-
ChannelPipeline
-
提供了Channelhandler链的容器。当channel被创建时,它会被自动分配到它专属的ChannelPipeline
-
ChannelHandler安装到CHannnelPipeline的过程如下
- 一个ChannnelInitializer注册到了ServerBootstrap上
- 当ChannnelInitializer的initChannel方法被调用时,ChannnelInitializer将在ChannelPipeline安装一组自定义的ChannelHandler
- ChannnelInitializer将它自己从ChannelPipeline中移除
-