Netty网络编程-模块划分

1、Netty版本

<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-all</artifactId>
  <version>4.1.77.Final</version>
</dependency>

img

2、模块

2.1、Core

提供底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信API和支持零拷贝的ByteBuf等。

common包是Netty的核心基础包,提供丰富的工具类,其他模块都需要依赖该模块。常用的包括:

  1. 通用工具类和自定义并发包。
  2. 通用工具类:包括定时器工具TimerTask、时间轮HashWheelTimer等。
  3. 自定义并发包:增强的FastThreadLocal等。

buffer模块中,Netty自己实现的了一个更为完备的ByteBuf工具类,用作网络通信的数据载体,该类是对Java ByteBuffer的完美替代品,解决了ByteBuffer长度固定造成的内存浪费,更安全地更改了Buffer的容量。同时Netty对ByteBuf进行了很多优化,包括缓存池化、减少数据拷贝的CompositeByteBuf 等

resolver模块,提供一些有关基础设施的解析工具,包括IP Address、Hostname、DNS 等。

2.2、支持的编解码器

codec模块主要负责编解码工作,通过编解码实现原始字节数据与业务实体对象之间的相互转化。该模块包含开箱即用的编码器,包括:HTTP、HTTP2、Redis、XML等。同时该模块提供抽象编码类:ByteToMessageDecoder和ByteToMessageEncoder,通过继承这两个类可以自定义编解码器。

handler模块主要负责数据处理工作,本质上是handler的集合。该模块提供了开箱即用的ChannelHandler实现类,如:日志、IP过滤等,可以自行在pipeline中加入相应的ChannelHandler。

2.3、支持的传输协议

提供网络传输能力的定义和实现方法,支持Socket、Http隧道、虚拟机管道等传输方式。

transport模块是Netty提供数据处理和传输的核心模块。该模块包含很多重要的接口:BootStrap、Channel、ChannelHandler、EventLoop、ChannelPipeLine等。

posted @ 2022-08-12 14:51  往事随雨  阅读(112)  评论(0)    收藏  举报