Netty架构及应用场景

Netty拥有简单而强大的架构,它由三个组件组成 - 缓冲区(buffer)、通道(channel)和事件模型(event model),所有高级功能都建立在三个核心组件之上,一旦理解了这三者如何协同工作,就不难理解建立在其上的功能。

netty架构

丰富的缓冲区数据结构

Netty使用自己的缓冲API而不是NIO ByteBuffer来表示字节序列。

包含一些很酷的功能:

可以定义自己的缓冲区类型。

透明零拷贝是通过内置的复合缓冲区类型实现的。

动态缓冲类型是开箱即用的,其容量可以按需扩展,就像StringBuffer。

没有必要再调用flip()了。

它通常比ByteBuffer快。

组合和切片ChannelBuffers

通信层之间传输数据时,通常需要组合或切片数据。例如,有效载荷被分割为多个包,则通常需要将其组合以进行解码。

传统上,来自多个包的数据通过将它们复制到新的字节缓冲区中进行组合。Netty支持一种零拷贝的方法,通过把通道缓冲区“指向”所需的缓冲区,从而消除了执行副本的需要。

通用异步I/O API

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

基于Interceptor链模式的事件模型

允许你在不破坏现有代码的情况下实现自己的事件类型。

每个事件类型都通过严格类型层次结构区分。

提供快速开发的组件

编解码器框架

SSL / TLS支持

HTTP实现

WebSockets实现

Google Protocol Buffer Integration

问题描述

我们使用通用应用程序来相互通信,使用HTTP客户端从Web服务器检索信息并通过Web服务进行远程调用。

但是,通用协议不能很好地扩展,就像我们不使用通用HTTP服务器来交换大量文件,电子邮件、近实时消息、多人游戏数据,而真正需要的是高度优化的协议实现,应用于特殊场景。

与此同时另一个不可避免的情况是,为了确保与旧系统的交互操作,必须处理传统的专有协议,在这种情况下,重要的是我们能够多快地实现该协议,同时不牺牲应用程序的稳定性和性能。

解决方案

Netty旨在为服务器和客户端提供高性能、高可维护、高可扩展的协议框架。

换句话说,Netty是一个构建NIO的客户端和服务器的框架,可以快速地开发协议服务器和客户端等网络应用程序。它极大地简化了开发TCP和UDP套接字的服务器和网络编程。

Netty经过精心设计,拥有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,高性能,稳定性和灵活性的方法。