最近,也不知道什么原因,经常有粉丝问我关于Netty的问题。难道是大厂面试更卷了,开始关注更加底层的框架了?先不深究什么原因了,今天,我给大家分享一下什么是Netty,它能解决什么问题?
另外,我花了1个多星期,准备了一份10W字的面试题解析配套文档,想获取的小伙伴可以从我的个人煮叶简介中找到。
1、Netty是什么
一句话总结,Netty就是一个基于Java NIO封装的高性能的网络通信框架。我从以下三个方面给大家归纳一下:
浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。
1、Netty提供了比NIO更简单易用的API,我们可以利用这些封装好的API快速开发自己的网络通信程序。
2、Netty在NIO的基础上还做了很多优化,比如零拷贝机制、、内存池管理等等,因此,总体运行性能会比原生的NIO更高。
3、Netty内置支持了多种通信协议,如HTTP、WebSocket等,并且针对数据通信的拆包、黏包问题,Netty还内置了解决方案。
2、为什么要用Netty?
Nety相比于直接使Java原生NIO的API来说,选择Netty具备以下优势:
浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。
1、Netty提供统一的 API,支持多种通信模型,如阻塞、非阻塞, 以及epoll、poll等模型。
2、Netty可以使用很少的代码实现Reactor多线程模型以及主从线程模型。
3、可以使用自带的编解码器解决 TCP 拆包/粘包问题。
4、Netty默认提供了多协议的通信支持。
5、Netty处理高吞吐量、低延迟、低资源消耗,比Java原生NIO的API更有优势。
6、经典的开源项目底层也使用到了Netty通信框架, 比如Zookeeper、Dubbo、RocketMQ等等,经历了大型项目的使用和考验更加成熟稳定。
7、Netty对安全性支持也不错,比如支持SSL/TLS等。
好了,以上就是我对Netty的理解。