一、Netty概念
Netty是一个异步的事件驱动的网络应用程序框架。
图1-1 阻塞I/O处理多个连接.png 图1-2 Selector非阻塞I/O回调实例:
bootstrap.connect().addListener(future -> {
if (future.isSuccess()){
}else {
}
});
图1-3 流经ChannelHandler链的入站事件和出站事件.png
每个Channel都有一个与之关联的ChannelPipeline,其持有一个ChannelHandler的实例链。
图1-4 Channel、EventLoop、EventLoopGroup关系图.pngNetty相关核心组件如下:
- Channel-Socket
- EventLoop-控制流、多线程处理、并发
- ChannelFuture-异步通知
- ChannelHandler接口-处理入站和出站数据的应用程序逻辑容器
- ChannelPipeline接口-为ChannelHandler提供容器
零拷贝:使用NIO和Epoll传输时使用的特性,可以高速地将数据从文件系统移动到网络接口,而不需要将其从内核空间复制到用户空间。
图1.7 ByteBuf结构.png 图1.8 ChannelHandler生命周期.png在ChannelPipeline传播事件时,它会测试ChannelPipeline中的下一个Channel-Handler的类型是否和事件的运动方向相匹配。如果不匹配,ChannelPipeline将跳过该ChannelHandler并前进到下一个,直到它找到和该事件所期望的方向相匹配的为止。
ChannelHandlerContext主要功能是管理它所关联的ChannelHandler和在同一个ChannelPipeline中的其他ChannelHandler之间的交互。
图1-9 ChannelPipeline结构图.jpg 图1-10 ChannelPipeline事件传播.jpg 图1-11 EventLoop类层次结构.jpg 图1-12 EventLoop执行逻辑.jpg一旦一个Channel被分配给一个EventLoop,他将在它的整个生命周期中都使用这个EventLoop(以及相关联的Thread)。
图1-13 非阻塞传输的EventLoop分配方式.png 图1-14 引导类的结构层次.png 图1-15 BootStrap引导过程.png 图1-16 ServerBootStrap引导过程.png 图1-17 在两个Channel之间共享EventLoop.png
网友评论