跳到主要内容

Netty 面试题

1. Netty

最流行的 NIO 框架,由 JBOSS 提供的,整合了FTP,SMTP,HTTP协议

1、 API简单;

2、 成熟稳定;

3、 社区活跃·;

4、 经过大规模验证(互联网、大数据、网络游戏、电信通信);

Elasticsearch、Hadoop 子项目 avro项目、阿里开源框架 Dubbo、使用 Netty

2. BIO

优点:模型简单,编码简单缺点:性能瓶颈,请求数和线程数 N:N 关系高并发情况下 ,CPU 切换线程上下文损耗大案例:Tomcat 7之前,都是 BIO,7 之后是 NIO改进:伪 NIO,使用线程池去处理逻辑

3. IO 模式

同步阻塞:丢衣服->等洗衣机洗完->再去晾衣服同步非阻塞:丢衣服->去做其他事情,定时去看衣服是否洗完->洗完后自己去晾衣服异步非阻塞:丢衣服-> 去做其他事情不管了,衣服洗好会自动晾好,并且通知你晾好了

4. 五种 I/O 模型

五种I/O 模型:阻塞 IO、非阻塞 IO、多路复用 IO、信号驱动 IO、异步 IO,前 4 种是同步 IO,在内核数据copy 到用户空间时是阻塞的

5. 阻塞 IO

file

6. 非阻塞 IO

file

7. IO 多路复用

file 核心:可以同时处理多个 connection,调用系统 select 和 recvfrom函数每一个socket 设置为 nonblocking 阻塞是被 select 这个函数 block 而不是 socket阻塞缺点:连接数不高的情况下,性能不一定比多线程+ 阻塞 IO 好(多调用一个select 函数)