架构设计
Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.
'Quick and easy' doesn't mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.
?Netty 是一个 NIO 客户端服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和精简了 TCP 和 UDP 套接字服务器等网络编程。 “快速而简单”并不意味着生成的应用程序会受到可维护性或性能问题的影响。 Netty 是根据从许多协议(如 FTP、SMTP、HTTP 以及各种基于二进制和文本的遗留协议)的实现中获得的经验而精心设计的。结果,Netty 成功地找到了一种方法,可以在不妥协的情况下实现易于开发、性能、稳定性和灵活性。
Core(核心层):核心层,主要定义一些基础设施,比如事件模型、通信 API、缓冲区等。
Transport Services(传输服务层):主要定义一些通信的底层能力,或者说是传输协议的支持,比如 TCP、UDP、HTTP 隧道、虚拟机管道等。
Protocol Support(协议支持层):这里的协议比较广泛,不仅仅指编解码协议,还可以是应用层协议的编解码,比如 HTTP、WebSocket、SSL、Protobuf、文本协议、二进制协议、压缩协议、大文件传输等,基本上主流的协议都支持。
模块设计
Netty是一个多模块项目,由许多小模块构建而成,常用的、重要的模块如下所示:
netty-common:公用模块,其它的所有模块都依赖于common包
- 通用工具类
- 对于JDK原生类的增强
- Netty自定义的并发包
- Netty自定义的集合包
netty-buffer:Netty自己实现的Buffer,比JDK原生的ByteBuffer做出了许多优化,比如池化Buffer,组合Buffer等
netty-resolver:主要用做地址解析
以上三个模块均为Netty的基础模块,是Netty的基石和底盘。
netty-transport:主要定义了一些用于传输层的接口以及类,比如Channel、ChannelHandler等,同时还实现了对于TCP、UDP通信协议的支持
netty-handler:定义了各种不同的Handler,这些Handler的功能有:IP过滤、日志、SSL等
netty-codec:定义了一些编码解码器,比如:base64、json、xml等
netty-example:提供了各种各样的代码示例、案例
|