Netty简介
1.Netty是由JBOSS提供的一个Java开源框架,是Gitthub上的开源项目
2.Netty是一个异步的,基于事件驱动的网络应用框架,用以快速开发高性能,高可靠的网络IO程序
3.Netty主要针对TCP协议下,面向Client端的高并发应用,或者Peer-to-Peeer场景下的大量数据持续性传输的应用
4.Netty本质上是一个NIO框架,适用于服务器通讯相关的多种应用场景
5.在学习Netty之前应该先学习学习NIO
【Netty架构图解】
一句话总结:Netty是一个利用Java高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的客户端/服务端框架。
从下图就可以看到Netty是在NIO上基础上建立的框架,而NIO则又是在原生JDK提供的一些IO和网络通信功能之上建立的框架,之所以Nettt流行而不是NIO流行是因为,Netty更加方便,他封装了更多简单易用的API。
人都是有惰性的,什么好用用什么,什么方便用什么。—鲁迅
Netty与Tomcat有什么区别
Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http通信协议的,他的是指是一个基于http协议的web容器。但是和Netty不一样,他可以通过编程定义各种协议,因为netty可以通过codec自己来编码/解码字节流,类似完成redis访问的功能。就好比Netty是一个应用层协议,他是基于创传输层的协议实现的,至于你要构造一个怎么样的应用层协议,完全看你自己发挥。
有人说netty的性能就一定比tomcat性能高,其实不然,tomcat从6.x开始就支持了nio模式,并且后续还有APR模式——一种通过jni调用apache网络库的模式,相比于旧的bio模式,并发性能得到了很大提高,特别是APR模式,而netty是否比tomcat性能更高,则要取决于netty程序作者的技术实力了。
Netty受欢迎的原因
长的帅的男人受女生喜欢,有腹肌的男人受女生喜欢,多财多亿的男人受女生喜欢,而我什么的没有,
那么Netty有什么优点让他受这么多大公司青睐呢?
Netty的优点:
1.并发高(基于NIO)
2.传输快(零拷贝)
3.封装好(单纯因为开发者牛逼)
以上的这些优点我们将在后续一一描述
Netty的应用场景
互联网行业
1.在分布式系统中,各个节点之间需要进行远程服务调用,所以高新能的RPC框架是必不可少的,Netty是性能的异步通信框架,所以Netty往往作为组件被RPC框架调用
2.典型的应用有:阿里分布式服务框架 Dubbo
的 RPC
框 架使用 Dubbo
协议进行节点间通信,Dubbo
协议默认使用 Netty
作为基础通信组件,用于实现各进程节点之间的内部通信。
游戏行业
- 无论是手游服务端还是大型的网络游戏,Java 语言得到了越来越广泛的应用
- Netty 作为高性能的基础通信组件, 提供了 TCP/UDP 和 HTTP 协议栈,方便定制和开发私有协议栈, 账号登录服务器
- 地图服务器之间可以方便的通过 Netty 进行高性能的通信
大数据领域
- 经典的
Hadoop
的高性能通信和序列化组件Avro
的RPC
框架,默认采用Netty
进行跨界点通信。 - 它的
NettyService
基于Netty
框架二次封装实现