当前位置: 首页 > news >正文

BIO/NIO/AIO的区别

同步阻塞IO和异步IO的区别是什么?
这个得闲清楚几个概念。IO操作分两个阶段--等待数据就绪和数据从内核拷贝到用户空间。从这个角度看,同步和异步的区别在于干“谁来负责数据拷贝”;
同步IO需要用户线程自己拷贝,异步IO是内核拷贝完成后通知用户线程。
那NIO是非阻塞,Epoll是IO多路复用,它们是什么关系?
NIO是一种IO模型,非阻塞说的是socket可以设置成非阻塞模式--数据没准备好时就立即放回,不等待。IO多路复用是另外一种模型,核心是一个线程管理多个FD,常用的有Select、Poll、Epoll.Epoll比前两者好,是因为它用了事件通知机制,不用遍历所有FD,复杂度从O(n)变成O(1).
为什么Redis单机能抗10万QPS,你觉得是IO模型的功劳还是别的?
IO模型是基础,但Redis能抗住高并发主要靠3点:
(1)是IO多路复用Epoll避免了阻塞;
(2)单线程避免了锁竞争;
(3)是内存操作本身性能高。不过Redis 6.0以后引入了多线程IO,用于处理数据写拷贝这块,进一步提升性能。
数据拷贝能展开说说么?
数据从磁盘或网络到用户空间,要经过两次拷贝:先从内核空间拷贝到系统缓冲区,再从系统缓冲区拷贝到用户空间。
零拷贝技术(比如Java的FileChannel.transferTo)可以跳过用户空间,直接从内核到内核传输,减少拷贝次数。
Kafka高性能就是零拷贝。

总结:
BIO:同步阻塞IO,最原始的模型
传统BIO,一个链接对应一个线程。线程调用read(),数据没到就阻塞等;连接数一多,线程数也跟着膨胀,内存和CPU全耗在线程切换上。
适用场景:连接数少,业务耗时长(比如复杂的数据查询)的场景。
NIO:同步非阻塞IO,轮询模式
socket设成非阻塞后,调用read()数据没到立即返回,不等待。但你需要不断轮询看数据到了没--这不是同步的。空轮询会浪费CPU,所以有了IO多路复用。
IO多路复用:一个线程管多个FD
核心思想:一个线程监听多个FD,有IO事件就处理,没事件就干别的。
三种实现:
(1)select:最老,FD数量有限制(默认1024),每次调用要传入所有FD让内核检查,O(n)复杂度。
(2)Poll:解决了FD数量限制,但还是要遍历所有FD,O(n)
(3)Epoll:liunx独有,用红黑树管理FD,用回调机制通知时间,O(1)复杂度,是高性能网络编程首选。
java里对应NIO的selector就是IO多路复用的封装,底层Liunx上用的就是Epoll.
AIO:异步io,真正的不等待。
AIO下,IO操作由内核完成,完成后通知用户线程。java 7 引入的NIO2.0支持AIO,用AsynchronousFileChannel和AsynchronousSocketChannel.
AIO适合IO密集型追求极致性能场景,但目前主流还是NIO,因为AIO编程模型复杂,实际性能提升有限。

实战选型建议:
Tomcat 默认NIO(Connector用NIO2或APR)
Redis用IO多路复用+单线程
Nginx用Epoll+多进程
Kafka用零拷贝+批量处理

http://www.rkmt.cn/news/1496231.html

相关文章:

  • 保姆级教程:在Windows 10上搞定Quartus II 13.1安装、注册与驱动(附避坑指南)
  • 2026年新高考真题试卷及答案解析:语文+数学(完整电子版)
  • Mac上跑SQL Server?Docker镜像选2019还是2022?保姆级避坑指南
  • 军用机器人舵机行业应用分析与供应商能力评估(2026年版) - 优质品牌商家
  • 2026年6月上海浦东黄金回收+白银回收+铂金回收实测:跑遍16区找到这3家 - 沪上贵金属口碑推荐官
  • 2026年小商品城行业服务能力评估与口碑调研报告 - 优质品牌商家
  • 2026年当前石家庄传菜电梯销售厂家联系指南:聚焦石家庄市藁城区久合电梯设备有限公司 - 2026年企业资讯
  • 2026年6月正规的北京豪雅镜片门店怎么选择推荐,青少年近视防控型/职场办公功能型/中老年渐进多焦点型/日常通用型选择指南 - 海棠依旧大
  • 2026年当前,宁波地区PVC透明料优质供应商深度解析与联系指南 - 2026年企业资讯
  • 如何用Point-E实现文本到3D点云的智能生成?技术原理与实战指南
  • 瓦楞纸箱行业采购指南:有实力的纸箱公司可靠性分析(2026年) - 优质品牌商家
  • Windows苹果触控板完美驱动:5分钟解锁原生级触控体验
  • MAA明日方舟助手:智能化游戏辅助工具的完整使用指南
  • 告别安装报错!Win7/Win10双系统保姆级QT5.14.2安装与组件选择避坑指南
  • 2026年 绍兴冷库安装公司企业官方白皮书 ‖ 上门安装+维修整备+定制方案 - 航天科技前沿
  • 揭秘GoGoGo:无需ROOT的Android虚拟定位终极指南
  • 2026论文降AIGC软件:11款工具实测谁才是真神器?
  • 2026年江西南昌会展公司设计搭建行业优选企业深度评测指南
  • IDEA 2021.3.2 升级后 Maven 依赖拉取失败?别慌,这招修改 Maven 3.8.1 内置配置搞定
  • 体育场音响设备口碑观察:从工程案例看技术路线与品牌格局 - 优质品牌商家
  • 从理论到实践:用VS2019+Fortran+MKL库5分钟搞定矩阵特征值计算
  • 模块化小说下载系统架构深度解析与实战实现方案
  • Windows网络性能测试终极指南:3个步骤快速掌握iperf3完整使用教程
  • 2026花都AI搜索排名优化哪家靠谱?本土头部GEO服务商融景科技实力全解析 - 广东科技观察
  • 中国各省水资源分类统计数据
  • 微信小游戏Unity WebGL适配方案:5分钟从Unity游戏到微信小游戏的技术指南
  • 杰理之如何配置一个IO中断【篇】
  • 信息熵与八卦:从香农到伏羲的跨时空对话,信息论解读易经
  • Linux服务器网络管理选哪个?深入对比network服务与NetworkManager的适用场景与避坑指南
  • 如何在3分钟内从100个Excel文件中找到你要的数据?这款免费工具告诉你答案