Netty是一个基于JAVA NIO类库的异步通讯框架,它的架构特色是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。编程
其中,服务提供者和服务消费者之间,服务提供者、服务消费者和性能统计节点之间使用Netty进行异步/同步通讯。除了Dubbo以外,淘宝的消息中间件RocketMQ的消息生产者和消息消费者之间,也采用Netty进行高性能、异步通讯。服务器
除了阿里系和淘宝系以外,不少其它的大型互联网公司或者电商内部也已经大量使用Netty构建高性能、分布式的网络服务器。网络
游戏行业:不管是手游服务端、仍是大型的网络游戏,Java语言获得了愈来愈普遍的应用。Netty做为高性能的基础通讯组件,它自己提供了TCP/UDP和HTTP协议栈,很是方便定制和开发私有协议栈。帐号登录服务器、地图服务器之间能够方便的经过Netty进行高性能的通讯,架构示意图以下:架构
大数据领域:经典的Hadoop的高性能通讯和序列化组件Avro的RPC框架,默认采用Netty进行跨节点通讯,它的Netty Service基于Netty框架二次封装实现。并发
大数据计算每每采用多个计算节点和一个/N个汇总节点进行分布式部署,各节点之间存在海量的数据交换。因为Netty的综合性能是目前各个成熟NIO框架中最高的,所以,每每会被选中用做大数据各节点间的通讯。框架
企业软件:企业和IT集成须要ESB,Netty对多协议支持、私有协议定制的简洁性和高性能是ESB RPC框架的首选通讯组件。事实上,不少企业总线厂商会选择Netty做为基础通讯组件,用于企业的IT集成。异步
通讯行业:Netty的异步高性能、高可靠性和高成熟度的优势,使它在通讯行业获得了大量的应用。分布式
首先咱们看下传统基于同步阻塞IO(BIO)的线程模型图:oop
由上图咱们能够看出,传统的同步阻塞IO通讯存在以下几个问题:l线程模型存在致命缺陷:一链接一线程的模型致使服务端没法承受大量客户端的并发链接;性能
性能差:频繁的线程上下文切换致使CPU利用效率不高;
可靠性差:因为全部的IO操做都是同步的,因此业务线程只要进行IO操做,也会存在被同步阻塞的风险,这会致使系统的可靠性差,依赖外部组件的处理能力和网络的状况。
采用非阻塞IO(NIO)以后,同步阻塞IO的三个缺陷都将迎刃而解:
Nio采用Reactor模式,一个Reactor线程聚合一个多路复用器Selector,它能够同时注册、监听和轮询成百上千个Channel,一个IO线程能够同时并发处理N个客户端链接,线程模型优化为1:N(N < 进程可用的最大句柄数)或者 M : N (M一般为CPU核数+ 1,N < 进程可用的最大句柄数);
因为IO线程总数有限,不会存在频繁的IO线程之间上下文切换和竞争,CPU利用率高;
全部的IO操做都是异步的,即便业务线程直接进行IO操做,也不会被同步阻塞,系统再也不依赖外部的网络环境和外部应用程序的处理性能。
因为切换到NIO编程以后能够为系统带来巨大的可靠性、性能提高,因此,目前采用NIO进行通讯已经逐渐成为主流。
咱们经过JDK NIO服务端和客户端的工做时序图来回答下这个问题:
即使抛开代码和NIO类库复杂性不谈,一个高性能、高可靠性的NIO服务端开发和维护成本都是很是高的,开发者须要具备丰富的NIO编程经验和网络维护经验,不少时候甚至须要经过抓包来定位问题。也许开发出一套NIO程序须要1个月,可是它的稳定极可能须要1年甚至更长的时间,这也就是为何我不建议直接使用JDK NIO类库进行通讯开发的一个重要缘由。
下面再一块儿看下JDK NIO客户端的通讯时序图:它一样很是复杂:
正是由于这些优势,Netty逐渐成为Java NIO编程的首选框架。
事实上,Netty各版本之间的API变动并无一些人讲的那么可怕,最大的变动就是3.X系列到4.X/5.X的变动,Netty不只仅重构了包路径,对于以前一直想改可是考虑到前向兼容性没改的类库进行了优化和修改。此次变动的主要缘由是Netty脱离了Jboss独立发展,这对于Netty的长远发展是件好事。
在我看来,Netty4.X系列版本的架构和API设计更加合理,同时,它提供了更多新的特性。所以,我我的建议用户能够选择4.X系列版本,以避免将来升级遇到困难和问题。
对于已经使用3.X系列版本的用户,若是现有功能已经知足需求,短时间内暂时不须要升级。若是须要使用更多新特性和功能,建议在充分评估以后进行升级,这可能须要一些工做量。
因为Netty5最新版本仍处于测试阶段,从学习和研究角度能够试用一下,Netty5相比于Netty4是前向兼容的,所以,将来用户升级到Netty5会更加容易。
建议用户能够根据本身对二者的熟悉程度和实际项目需求,作出最佳选择。若是你锁定了二者,自己就意味着你作出了正确选择,不须要再纠结于选择哪一个而和领导、同事吵得面红耳赤。
目前市面上有两本Netty书籍,《Netty in Action》和 《Netty权威指南》。
从个人经验和目前Netty的行业应用状况,确实如此。下面咱们简单看下以Netty招聘为关键字的搜索结果:
随着移动互联网和物联网的发展,Netty在非传统行业的应用也日益普遍,例如手机移动推送服务、智能家具、物联网关等。