Netty4入门

作者: coderlan | 来源:发表于2017-07-02 11:20 被阅读0次

    先从整体上看一下Netty的构成。

    核心组件

    Bootstrap&ServerBootstrap

    netty程序的启动器,负责配置netty程序,把各个组件组合起来。通过客户端使用Bootstrap进行connect,服务器端使用ServerBootstrap进行bind。

    EventLoop&EventLoopGroup

    一个EventLoop其实就是一个线程,处理 Channel的IO操作.一个Channel的IO操作由一个EventLoop负责,但不是每个Channel都会有特定的EventLoop,而是由EventLoopGroup统一分配和回收。因此在EventLoop里面,万万不能阻塞。

    通常ServerBootstrap会使用两个EventLoopGroup,一个用于接受客户端连接;另一个用于处理客户端的数据。

    Handler

    netty程序真正业务逻辑所在,Handler主要用来处理各种事件,这里的事件很广泛,比如可以是连接、数据接收、异常、数据转换等。其执行线程正是从EventLoopGroup分配的EventLoop。
    Handler有ChannelInboundHandler、ChannelOutboundHandler两种,分别处理输入、输出数据。

    ChannelPipeline

    Channel是管道,数据在其中in或者out。而Handler则是管道中的过滤阀门,支持多个Handler,组成一个ChannelPipeline。其中机制类似Filter和FilterChain。

    ChannelInitializer

    ChannelInitializer便是用来配置这些Handler,它会提供一个ChannelPipeline,并把Handler加入到ChannelPipeline。

    Encoders和Decoders

    用于字节流和Message之间的相互转换。Netty中提供了很多现成的编码/解码器,我们一般从他们的名字中便可知道他们的用途,如ByteToMessageDecoder、MessageToByteEncoder,如专门用来处理Google Protobuf协议的ProtobufEncoder、 ProtobufDecoder。

    其他

    Unpooled

    对象池。

    TCP粘包/拆包

    基于流的TCP,即read到的数据,有可能不是完整的数据包。netty提供了一系列的Decoder用于解决粘包/拆包的问题。比如特定分隔符、定长消息、长度+数据等等。

    相关文章

      网友评论

        本文标题:Netty4入门

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