当前位置: 首页 > 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.jsqmd.com/news/984485/

相关文章:

  • 别再手动调格式了!用NoteExpress搞定毕业论文参考文献(附Word插件配置避坑指南)
  • 干冰配送服务行业分析:主要企业能力对比与选型指南(2026年更新) - 优质品牌商家
  • 3步搞定智慧树刷课:告别手动点击,学习效率翻倍
  • 2026年GEO优化服务商能力评估与市场格局分析 - 优质品牌商家
  • 专业玻璃钢储罐市场供应格局与选型分析:行业技术参数与供应商综合评估 - 优质品牌商家
  • 2026年新高考真题试卷及答案解析:语文+数学(完整电子版)
  • Mac上跑SQL Server?Docker镜像选2019还是2022?保姆级避坑指南
  • PoE供电选型:几对线供电,该怎么选?
  • 国内电缆桥架行业分析:2026年主流厂商供应能力与适用场景研究 - 优质品牌商家
  • 用 ProVerif 分析第一个协议:手把手解读 .pv 文件与命令行输出
  • 2026年6月上海浦东黄金回收+白银回收+铂金回收实测:跑遍16区找到这3家 - 沪上贵金属口碑推荐官
  • 军用机器人舵机行业应用分析与供应商能力评估(2026年版) - 优质品牌商家
  • Maven 3.8.1 默认禁用 HTTP 仓库?手把手教你为 IDEA 配置阿里云镜像并绕过 blocker 限制
  • 2026年小商品城行业服务能力评估与口碑调研报告 - 优质品牌商家
  • 2026年现阶段行业知名的超声波数控切割机工厂甄选指南与深度解析 - 2026年企业资讯
  • 2026年当前石家庄传菜电梯销售厂家联系指南:聚焦石家庄市藁城区久合电梯设备有限公司 - 2026年企业资讯
  • Windows资源管理器终极增强:让APK、IPA、APPX文件图标一目了然
  • 2026年6月正规的北京豪雅镜片门店怎么选择推荐,青少年近视防控型/职场办公功能型/中老年渐进多焦点型/日常通用型选择指南 - 海棠依旧大
  • 鼠标或手写笔随手画数学公式,自动转成可复制的LaTeX代码
  • 2026 廊坊黄金奢品回收高口碑商家权威榜单——首选典典佳汇 - 诚鑫名品
  • i.MX 6ULZ启动配置全解析:从引脚、熔丝到硬件设计的实战指南
  • 2026年当前,宁波地区PVC透明料优质供应商深度解析与联系指南 - 2026年企业资讯
  • Halcon算子参数里的三个冒号(:::)到底怎么用?新手避坑指南
  • 为什么TranslucentTB启动失败?3个简单步骤快速修复任务栏透明工具
  • 如何用Point-E实现文本到3D点云的智能生成?技术原理与实战指南
  • 工业级跨界处理器i.MX RT1024实战解析:从数据手册到硬件设计
  • 广州大学数据库课C#实验全套:7个可运行项目+3份详细报告
  • 2026 AI搜索排名优化服务商TOP1——花都融景科技,自研技术+双国标资质领跑行业 - 广东科技观察
  • 2026年除甲醛活性炭行业诚信主体分析与选型指南 - 优质品牌商家
  • Cursor Pro完整功能深度解析:机器ID重置技术的实现机制与架构设计