nginx异步非阻塞理解?
看了一下午如何理解异步非阻塞,不是用生活举例的就是只是说某一点的,其实真的还是很不明白,最后只能通过nginx的异步非阻塞模型来稍微理解理解了,我也不拿什么生活的举例了因为我觉得那个东西只能说就是生往概念上靠,更不明白。

切入正题,看之前你要先知道***多路复用器***,这个参考我写的也行,但是我还没写完(20200821这天),开始说了。

这张图其实能很好的理解异步非阻塞,左边是nginx进程结构,右边是event queue processing cycle(事件队列处理周期),左边那张图有两个链表,上面的是epoll_creat建立的,另外一个是event queue(事件队列),上面的其实就是非阻塞,下面的就是异步,上面的链表不懂去看epoll,下面的链表我下文给你讲了,联合起来希望你能理解,不懂就跳过去。

异步非阻塞我们拆开说,先说他这个非阻塞代表什么,nginx为什么性能高呢,因为nginx用一个进程可以处理成千上万的请求,nginx为什么能用一个进程可以处理成千上万的请求呢?因为nginx网络io用的是多路复用器,多路复用器解决的就是阻塞问题,所以我们理解因为nginx使用了多路复用器模型所以叫非阻塞。怎么叫异步呢?比如有1万个请求,这一万个请求可以分为很多种,有的是请求静态资源,有的是转发请求到后端服务器,有的是直接请求动态数据,但是不管什么样的事其实都是io,你请求静态资源你要读静态资源吧,你转发请求到后端服务器你得读返回回来的数据吧,假设其中的一个请求是向后端服务器转发请求并返回,假如这时候网络情况不好5秒钟才能得到后端服务器的返回那其他9999个请求都要等着么?nginx肯定没这么傻对吧,nginx是处理到这个请求可能阻塞的地方(向后端服务器发送请求),然后就去处理另外一个请求了(比如处理其他请求静态资源的请求),那上一个请求怎么办呢?不可能不要了是吧,他会在注册一个事件(后端服务器5秒后返回后要做什么?把返回的数据响应给客户)注册事件的地方是一个链表也就是我前面说的event queue(事件队列),具体我也没看过注册进去的是什么,但是想一想应该是把请求后端服务器返回后要做什么注册进去,这里就是异步,为什么这就叫异步呢,nginx不会每次去轮询注册链表,问他有没有事件已经完成(后端服务器有没有返回),而是当请求后端服务器返回后直接就可以执行注册进去的事情,注册进去的事情其实就是把从后端服务器请求回来的数据响应给用户,这就是异步,组合起来就是异步非阻塞,其实也可以把顺序颠倒一下非阻塞异步但是这么读起来有点变扭,先这么理解吧,不理解话或者我写的不对的地方欢迎留言,一起学习。
最后,我觉得这个这个东西今天不明白也别钻牛角筋,也就面试的时候会问问你,平时你用的时候也没必要去说的这个么细。

新理解

又看了自己的帖子感觉讲的很垃圾,再写写最新的理解吧,异步非阻塞,还是拆成非阻塞和异步,非阻塞指的是网络io的非阻塞,实现方式是多路复用器,当多路复用器返回有数据的io时,如果同步的话就要循环这些io一个一个处理,但是万一有一个io响应很慢后面的都要等待,nginx会把io放到一个队列,异步去处理。

nginx异步非阻塞理解相关推荐

  1. nginx异步非阻塞 解析

    同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式. 同步:当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行. 异步:当一个异步调用发出去后,调 ...

  2. 处理大并发之一 对异步非阻塞的理解

    处理大并发之一 对异步非阻塞的理解 在研究nginx和node.js的时候常会遇到异步.非阻塞等,之前自己也经常使用epoll,对其同步与阻塞,异步与非阻塞有了一定的认识,现对参考资料总结下. 首先讨 ...

  3. Nginx的异步非阻塞

    转载地址:https://blog.csdn.net/dutsoft/article/details/55224755 同步与异步 同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果 ...

  4. 简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞

    简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞 声明:本篇思想非原创,系从老师处听来.因为CSDN发转载需要有原文链接,本篇没有原文链接,所以填的原创. 举个栗子 1.你在家做饭,用普通的汤 ...

  5. 如何理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞

    网上闲逛技术贴,看见一个关于理解同步阻塞.同步非阻塞.异步阻塞.异步非阻塞比较风趣的故事,简单明了,很容易理解,因此记录一下,希望更多人能看见. 故事原文: 老张爱喝茶,废话不说,煮开水.出场人物:老 ...

  6. Nginx Note03——异步非阻塞机制

    曾经有一段时间,在我的理解中,同步就是阻塞,异步就是非阻塞.可不就是这样吗?从代码执行的角度来看,确实如此.但随着了解的深入,概念和场景的拓展,有了不一样的理解.试分析之,难免疏漏,欢迎指正. --题 ...

  7. ajax同步非阻塞,同步、异步、阻塞与非阻塞理解

    同步跟异步,阻塞与非阻塞,这两组概念出现在IO操作中常常让人混淆不清,这里是根据自己想到的,看到的,学到的,整理了自己的理解. 这四个概念两两组合,会形成四个新的概念,如下: 1.同步阻塞 :客户端发 ...

  8. mysql异步非阻塞方式_如何理解swoole异步非阻塞?

    传统的apache2handler或php-fpm本质上都是短生命周期(请求后释放资源)的FastCGI运行模式. 请求来了,master进程会调用worker进程来处理,处理完后释放资源. 假设你在 ...

  9. 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别

    先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...

最新文章

  1. 微信小程序实现图片是上传、预览功能
  2. java二维数组高纬低纬_2018-05-17 第十一天
  3. 浏览器加载渲染网页过程解析-总结
  4. 含有bin的mysql_MySQL 5.7.18 release版安装指南(含有bin文件版本)
  5. Go操作MySql Memache Mongodb
  6. 高等数学18讲(19版)7.29
  7. 【Android】ListView控件总结
  8. springboot集成quartz完成定时任务
  9. 【神经网络】综合篇——人工神经网络、卷积神经网络、循环神经网络、生成对抗网络
  10. ubuntu给手机刷机安卓8.0 ROOT+Xposed+JustTrustMe+Kali NetHunter
  11. TFT液晶屏是怎样诞生的?
  12. 关于jmeter中编写shell脚本json的应用
  13. GPU_GEMS_自然态_渲染水焦散
  14. 视频教程-Python零基础入门教程-Python
  15. 群晖linux文件夹颜色红色,技术干货分享 | 群晖备份Linux文件夹~
  16. VB:编一个子过程DeleStr(s1,s2),将字符串s1中出现的s2子字符串删去,结果存放在s1中
  17. 链表和线性表的优缺点
  18. 自动控制原理(1)- 介绍与数学模型
  19. java共享锁和排他锁的区别_排他锁和共享锁分别是什么?有什么不同?
  20. 找不到动态库解决方案

热门文章

  1. ~tion ~sion的读音
  2. 实现HTML页面保存为图片
  3. root和普通用户连接后ping www.baidu.com及破解root用户密码
  4. 顶尖AI科技智能化货代航运智能化铁路货运智能化海关港区口岸,全球集装箱港航人工智能领军企业中集飞瞳,成熟港航AI产品全球规模应用
  5. 智能采购管理系统有哪些应用优势?如何高效提升医药制造业采购管理效率?
  6. python好找工作吗2017-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
  7. el-input添加默认前置值,不可删除,只能在默认值之后增加
  8. c语言开发一个绘画,c语言也能画画
  9. 24. 皇后的控制力
  10. 走向IPv6,阿里巴巴IPv6规模化部署实践