nginx之IO多路复用的有趣解释

我们知道nginx性能极好,之所以有这么好的性能,原因之一便是他采用的是IO多路复用模型。什么?不理解什么是IO多路复用?下面看好了,精彩的解释来了

IO 多路复用是5种I/O模型中的第3种,对各种模型讲个故事,描述下区别:
故事情节为:老李去买火车票,三天后买到一张退票。参演人员(老李,黄牛,售票员,快递员),往返车站耗费1小时。
1.阻塞I/O模型
老李去火车站买票,排队三天买到一张退票。
耗费:在车站吃喝拉撒睡 3天,其他事一件没干。
2.非阻塞I/O模型
老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。
耗费:往返车站6次,路上6小时,其他时间做了好多事。
3.I/O复用模型
1.select/poll
老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,黄牛手续费100元,打电话17次
2.epoll
老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,黄牛手续费100元,无需打电话
4.信号驱动I/O模型
老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。
耗费:往返车站2次,路上2小时,免黄牛费100元,无需打电话
5.异步I/O模型
老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。
耗费:往返车站1次,路上1小时,免黄牛费100元,无需打电话
1同2的区别是:自己轮询
2同3的区别是:委托黄牛
3同4的区别是:电话代替黄牛
4同5的区别是:电话通知是自取还是送票上门

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先引用levin的回答让我们理清楚五种IO模型因为熊吉_22cb提出levin的回答有点不知所云~我对下面的回答...
    凉拌姨妈好吃阅读 55,985评论 12 73
  • redis单线程问题 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求...
    从此110阅读 14,520评论 1 9
  • 刚开始使用redis,记录一些东西,可能有点杂 Redis为什么使用单进程单线程方式也这么快 1完全基于内存2采用...
    陌生哦哦阅读 1,293评论 0 0
  • 早上好#易效能 # 蒋小园 2017/09/22(309/500) 【不忘初心,坚持始终】 健康:作息《昨晚今早》...
    圆圆jXY阅读 1,391评论 0 0
  • 中国诗在中国代替了宗教的所在。――林语堂 改造中国人的文艺首推文学。――鲁迅 中国人对历史的了解大多来自戏曲。――...
    Eve笑笑阅读 1,053评论 0 0