目录
ChannelHandler 和 ChannelPipeline
前言
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty
的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。
点击这里 查看Netty的简介,更多介绍和文档以及相关下载 点击这里 进入官网查看,下面开始正式讲解。
Netty的由来
Netty并非横空出世,它是在BIO,NIO,AIO演变中的产物,如前言所说是一种NIO框架
- BIO是同步阻塞式IO,每当客户端有一个请求时就需要启动一个线程然后等待着处理,如果线程没有做IO操作的话且抢到了CPU的执行权,那么就会造成CPU的资源浪费
- NIO是同步非阻塞式IO,NIO使用Channel替换了原来的IO中的流,使用Selector(多路复用器)将客户端请求都注册起来,通过轮询来判断连接中是否有IO请求然后开启一个线程处理,使用了Buffer将原来的阻塞式变为了非阻塞式,但NIO在实际使用中是很繁琐的,而且轮询可能会造成死循环的BUG
- Netty则是对NIO进行了封装,将NIO的BUG解决了,简化了开发过程,并且通过Reactor线程模型实现了异步处理,减少了数据的复制,节省了资源