Netty特点及相关面试题
简介
Netty是一个高性能的nio网络通信框架用于开发高性能的网络服务器和客户端 提供了简单强大的Api使得网络编程更加简单
特点
-
异步以及事件驱动 采用了基于事件驱动的变成模型并且使用异步的方式处理网络操作,可以高效处理大量的并发连接
-
高性能 使用了零拷贝 等高效的线程模型技术,有着卓越的性能表现适用于高负载低延迟的网络应用
-
支持多种协议 tcp 、UDP、 http、 Websocket等等
-
容易扩展 提供了丰富的组件和可扩展的Api
-
跨平台 可以在不同的操作系统运行
-
在许多领域得到广泛的利用 比如 网络服务器、分布式系统、游戏服务器、物联网(LoT)等等
面试话术
-
nio网络模型的框架 对nio进行一层封装 提供了简单易用的的Api 可以利用Api快速开发
-
在nio的基础上上做了一些优化 零拷贝机制 高性能无锁队列 内存池 性能比原生nio更高
-
支持多种协议 tcp UDP http Websocket等等针对数据通信拆包黏包的问题 Netty内置了一些拆包的策略
Netty的优势
-
相比JDK自带的nio的相关Api来说使用更加的简单
-
统一Api支持多种传输类型 阻塞非阻塞 epoll poll等模型
-
使用非常少的代码去实现多线程reactor模型 主从多线程reactor模型
-
自带编解码器去解决tcp 拆包黏包的问题
-
自带各种通信协议
-
比JDK自带的nio 的 Api提供了更高的吞吐量
-
安全性好 有完整的ssl tls的支持
-
社区活跃经历了dubbo 、zookeeper、RocketMQ等大型项目的考验
Netty与Jetty对比
1.网络通信框架和web容器的区别
网络通信框架:Netty、Mina、Grizzly
web容器:Tomcat、Jetty
web服务器:Apache、Nginx
2.概念区别
Netty针对Socket
Netty是异步的。如果服务调用端需要同步等待调用结果,则需要自己实现同步等待机制。
Jetty/Tomcat针对Servlet
3.应用范围上:
HTTP服务用Jetty
即时通信用Netty
4.协议
Netty:TCP/IP协议
半包/粘包问题(可以通过选择合适的序列化协议解决)
Jetty:HTTP协议
5.总结
Netty | Jetty | |
实质 | 网络通信框架NIO | Web容器 |
针对 | Socket | Servlet |
协议 | TCP/IP | HTTP |
应用 | 即时通信 | HTTP服务 |