Netty架构及应用场景

Netty的架构简单而又强大,由缓冲区(buffer)、通道(channel)和事件模型(event model)三者相互协作构成一个高性能构架。

netty架构

Netty缓冲区

Netty使用自己的缓冲API,而非NIO 的ByteBuffer表示字节序列。它可以自定义缓冲区类型,通过内置的复合缓冲区实现透明零拷贝。开箱即用的动态缓冲,容量按需扩充,flip()操作也不再是必需的,它通常比ByteBuffer更快。

组合和切片ChannelBuffers

通信层之间传输数据,通常需要把数据分割或组合,例如将数据分割为多个包,最后组合解码。通常而言,来自多个包的数据,通过将它们复制到新的字节缓冲区中进行组合。Netty支持零拷贝特性,能够将通道的缓冲区“指向”所需的缓冲区,从而消除数据copy的过程。

通用异步I/O

Netty有一个通用异步I/O接口,称为Channel,它抽象了点对点通信所需的操作。

Interceptor链模式事件模型

允许在不破坏现有代码的前提下实现自己的事件类型。每个事件类型都通过严格的类型层次结构区分。

快速开发的组件

编解码器框架、SSL / TLS支持、HTTP实现、WebSockets实现、Google Protocol Buffer Integration

Netty方案针对的问题

在HTTP应用程序中,客户端通过远程调用从服务器检索信息,通用性通信协议并不能很好的支持扩展,尤其在交换大量文件,电子邮件、近实时消息、多人游戏数据时,应对这些特定应用场景的通信协议,都是经过高度优化的。

同时,为了确保与旧系统的兼容性,必须处理传统的专有协议,在这种场景下,我们需要的能够更快地实现该协议,同时,不牺牲应用程序的稳定性和性能。

Netty解决方案

Netty是一个构建NIO服务的框架,旨在为服务器和客户端提供高性能、高可维护、高可扩展的协议框架,能够快速地开发协议服务器,和网络应用程序。极大地简化了开发TCP和UDP套接字的工作。

Netty经过精心设计,支持丰富的协议,如:FTP、SMTP、HTTP以及各种二进制和基于文本的传统协议。因此,Netty成功地找到了一种易于开发实现,又不会牺牲性能、稳定性及灵活性的方案。