Netty整体框架
前面两篇文章对Java NIO进行了详细的介绍和分析,也给下面分析Netty源码打下一定的基础
Java已经有了一个原生的NIO框架,为什么还会出现Netty呢,这个原因主要有两个:
-
Java的NIO还不够高效,其底层使用 selector
,而Netty使用Linux下最高效的I/O模式 epoll
-
Selector多路复用的开发模式较为复杂,需要在程序中自己 轮询
,而且SelectionKey需要自己进行删除的管理,比较容易出错,而且由很多阻塞操作( select
),Java自带的AIO更加难用。Netty是全异步操作,并且将底层IO操作全部封装,简化开发
-
Java的NIO内存管理采用 ByteBuffer
, ByteBuffer
是出了名的难用,在使用的时候要是忘记
flip()
很容易出错。Netty提供的 ByteBuf
就好用了很多,其采用 读写双Index
,更加易用
原文
https://segmentfault.com/a/1190000022098173