netty三种IO的支持


什么是经典的三种I/O模式?

场景 模式 jdk支持
排队打饭 BIO(阻塞I/O) jdk1.4之前
点单、等待被叫模式 NIO(非阻塞I/O) JDK1.4
包厢 AIO(非阻塞异步I/O) JDK1.7

Netty对三种I/O模式的支持?

曾经对于三种IO都曾做过支持

为什么Netty仅支持NIO了?

1、不建议使用阻塞I/O(BIO/OIO),因为在连接数高的情况下,阻塞意味着占用一个线程,比较耗资源,效率非常低。
2、对于不同平台支持的成熟度不同,windows实现成熟,但是很少用来做服务器。linux常用来做服务器,但是AIO不够成熟,并且Linux下AIO相比较NIO的性能提升不明显。

为什么Netty有多种NIO实现 ?

通用的NIO实现在Linux下也是使用epoll,为什么Netty还要单独实现?

1、因为Netty实现得更好,Netty暴露了更多的可控参数,例如:

  • JDK的NIO默认实现是水平触发
  • Netty是边缘触发和水平触发可切换

ps:单独解释边缘触发啊和水平触发

2、Netty实现的垃圾回收更少、性能更好

NIO一定优于BIO吗?

1、BIO代码简单
2、特定场景:连接数少、并发度低、BIO性能不输NIO

源码解读Netty怎么切换I/O模式?

怎么切换?

原理是什么?

为什么服务器开发并不需要切换客户端对应的socket?


文章作者: xyl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xyl !
评论
  目录