美文网首页
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