Bootstrap

Netty特点及相关面试题

简介

Netty是一个高性能的nio网络通信框架用于开发高性能的网络服务器和客户端 提供了简单强大的Api使得网络编程更加简单

特点

  1. 异步以及事件驱动 采用了基于事件驱动的变成模型并且使用异步的方式处理网络操作,可以高效处理大量的并发连接

  2. 高性能 使用了零拷贝 等高效的线程模型技术,有着卓越的性能表现适用于高负载低延迟的网络应用

  3. 支持多种协议 tcp 、UDP、 http、 Websocket等等

  4. 容易扩展 提供了丰富的组件和可扩展的Api

  5. 跨平台 可以在不同的操作系统运行

  6. 在许多领域得到广泛的利用 比如 网络服务器、分布式系统、游戏服务器、物联网(LoT)等等

面试话术

  1. nio网络模型的框架 对nio进行一层封装 提供了简单易用的的Api 可以利用Api快速开发

  2. 在nio的基础上上做了一些优化 零拷贝机制 高性能无锁队列 内存池 性能比原生nio更高

  3. 支持多种协议 tcp UDP http Websocket等等针对数据通信拆包黏包的问题 Netty内置了一些拆包的策略

Netty的优势

  1. 相比JDK自带的nio的相关Api来说使用更加的简单

  2. 统一Api支持多种传输类型 阻塞非阻塞 epoll poll等模型

  3. 使用非常少的代码去实现多线程reactor模型 主从多线程reactor模型

  4. 自带编解码器去解决tcp 拆包黏包的问题

  5. 自带各种通信协议

  6. 比JDK自带的nio 的 Api提供了更高的吞吐量

  7. 安全性好 有完整的ssl tls的支持

  8. 社区活跃经历了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服务

;