美文网首页
Netty解析

Netty解析

作者: GIT提交不上 | 来源:发表于2020-02-11 18:18 被阅读0次

一、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关系图.png

  Netty相关核心组件如下:

  • Channel-Socket
  • EventLoop-控制流、多线程处理、并发
  • ChannelFuture-异步通知
  • ChannelHandler接口-处理入站和出站数据的应用程序逻辑容器
  • ChannelPipeline接口-为ChannelHandler提供容器
图1-5 包含入站和出站ChannelHandler的ChannelPipeline 图1-6 Channel方法.png

  零拷贝:使用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

相关文章

网友评论

      本文标题:Netty解析

      本文链接:https://www.haomeiwen.com/subject/bxetgctx.html