为什么Netty使用NIO而不是AIO
发布时间:2023-02-16 13:44:22 所属栏目:Java 来源:互联网
导读:NIO模型 同步非阻塞 NIO有同步阻塞和同步非阻塞两种模式,一般讲的是同步非阻塞,服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO模型 异步非阻塞 服务器实
NIO模型 同步非阻塞 NIO有同步阻塞和同步非阻塞两种模式,一般讲的是同步非阻塞,服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO模型 异步非阻塞 服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理, 注:AIO又称为NIO2.0,在JDK7才开始支持。 为什么Netty使用NIO而不是AIO? Netty不看重Windows上的使用,在Linux系统上,AIO的底层实现仍使用EPOLL,没有很好实现AIO,因此在性能上没有明显的优势,而且被JDK封装了一层不容易深度优化 Netty整体架构是reactor模型,而AIO是proactor模型,混合在一起会非常混乱,把AIO也改造成reactor模型看起来是把epoll绕个弯又绕回来 AIO还有个缺点是接收数据需要预先分配缓存,而不是NIO那种需要接收时才需要分配缓存,所以对连接数量非常大但流量小的情况,内存浪费很多 Linux上AIO不够成熟,处理回调结果速度跟不到处理需求,比如外卖员太少,顾客太多,供不应求,造成处理速度有瓶颈(待验证) 作者原话: Not faster than NIO (epoll) on unix systems (which is true) There is no daragram suppport Unnecessary threading model (too much abstraction without usage) 其他: Netty背后的事件驱动机制 总结 以上是编程之家为你收集整理的为什么Netty使用NIO而不是AIO?全部内容。 如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。 原文地址:https://blog.csdn.net/thlzjfefe" target="_blank" rel="noopener" title="thlzjfefe">thlzjfefe</a> <img class="article-time-img article-heard-img" src="https://csdnimg.cn/release/blo (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java ArrayList 实现实例讲解
- MyBatis Oracle 自增序列的实现方法
- Java Web中解决路径(绝对路径与相对路径)问题
- Tomcat报错:HTTP Status 500 (Wrapper cannot find servl
- java – URLConnection setRequestProperty vs addRequestP
- 解析如何开发FineReport的自定义控件
- Slf4j MDC机制
- java获取鼠标在屏幕上坐标的方法
- Java按照List内存储的对象的某个字段进行排序的实例
- Spring 报错:元素 context:component-scan 的前缀 context