简介
Netty 是由JBOSS 提供的一个java 开源框架。Netty 提供异步的、事件驱动的网络应用
程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
也就是说,Netty 是一个基于NIO 的客户、服务器端编程框架,使用Netty 可以确保你
快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty 相当
简化和流线化了网络应用的编程开发过程,例如,TCP 和UDP 的socket 服务开发。
“快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实
现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项
目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,
稳定性和伸缩性。
Netty 从4.x 版本开始,需要使用JDK1.6 及以上版本提供基础支撑。
在设计上:针对多种传输类型的统一接口 - 阻塞和非阻塞;简单但更强大的线程模型;
真正的无连接的数据报套接字支持;链接逻辑支持复用;
在性能上:比核心 Java API 更好的吞吐量,较低的延时;资源消耗更少,这个得益于
共享池和重用;减少内存拷贝
在健壮性上:消除由于慢,快,或重载连接产生的 OutOfMemoryError;消除经常发现
在 NIO 在高速网络中的应用中的不公平的读/写比
在安全上:完整的 SSL / TLS 和 StartTLS 的支持
且已得到大量商业应用的真实验证,如:Hadoop 项目的Avro(RPC 框架)、Dubbo、Dubbox
等RPC框架。
Netty的官网是:http://netty.io
有三方提供的中文翻译Netty用户手册(官网提供源信息):http://ifeve.com/netty5-user-guide/
Netty架构

线程模型

Netty中支持单线程模型,多线程模型,主从多线程模型。
单线程模型
在ServerBootstrap调用方法group的时候,传递的参数是同一个线程组,且在构造线程组的时候,构造参数为1,这种开发方式,就是一个单线程模型。
个人机开发测试使用。不推荐。
多线程模型
在ServerBootstrap调用方法group的时候,传递的参数是两个不同的线程组。负责监听的acceptor线程组,线程数为1,也就是构造参数为1。负责处理客户端任务的线程组,线程数大于1,也就是构造参数大于1。这种开发方式,就是多线程模型。
长连接,且客户端数量较少,连接持续时间较长情况下使用。如:企业内部交流应用。
主从多线程模型
在ServerBootstrap调用方法group的时候,传递的参数是两个不同的线程组。负责监听的acceptor线程组,线程数大于1,也就是构造参数大于1。负责处理客户端任务的线程组,线程数大于1,也就是构造参数大于1。这种开发方式,就是主从多线程模型。
长连接,客户端数量相对较多,连接持续时间比较长的情况下使用。如:对外提供服务的相册服务器。
网友评论