为什么不用NIO而是Netty
Netty做的更多:
- 支持常用应用层协议;
- 解决传输问题:粘包和半包现象;
- 支持流量整形;
- 完善的断连、idle等异常处理;
- API更友好更强大;
- 隔离变化、屏蔽细节;
规避了NIO的bug:
- NIO的epoll bug:异常唤醒空转导致CPU 100%;
- IP_TOS参数使用时抛出异常;
什么是经典的三种IO模式
经典的模式:
- BIO(阻塞);
- NIO(非阻塞);
- AIO(异步);
NIO一定优于BIO吗
BIO的特点:
- BIO代码简单;
- 连接数少,并发度低,BIO性能不输NIO;
什么是Reactor以及三种版本
一共三种模式:
-
Reactor单线程;
-
Reactor多线程模式;
-
主从Reactor多线程模式;
Reactor是一种开发模式,流程如下: -
注册感兴趣的事件;
-
扫描是否有感兴趣的事件发生;
-
事件发生后作出相应的处理;
在Netty中使用Reactor模式: