都说Node.js是一个基于chrome V8引擎的js运行环境,用于方便地搭建响应速度快、易于扩展的网络应用,它有非阻塞、事件驱动模型的特性,有轻量高效的特点,适用于分布式设备上运行数据密集型的实时应用。那什么是非阻塞?什么是事件驱动?下面举一个例子。
在我们使用比较传统的服务器阿帕奇(Apache)的时候,客服端给服务器请求数据的时候,服务器接收到请求便开始搜索被请求的资源,服务器没有改资源,便进一步向数据库检索资源,最后把搜索到的资源返回给客户端。也就是说,客户端每请求一次,服务器便创建一个新的进程来处理这个请求,每次都会将整个页面刷新了,而每个客户端请求,服务器就得开一个请求链接即占一个进程,到一定数量请求,服务器的内存会消耗完甚至瘫痪。

随着Ajax的异步处理出现解决了这个问题,当客户端向服务器请求时,页面不会完全刷新,只会更新请求的那一部分,这样节省了好多资源空间。

客户端与服务器之间是基于Ajax的通信方式,分为短连接和长轮询。短连接的HTTP请求不会一直相连接不间断的,客户端发出请求到最后服务器返回数据这个连接件中断结束了。而长轮询是持续连接,只要页面加载完了,不管有没有请求服务器,你都会自动向服务器发一个Ajax请求,服务器持续这个连接,直到客户端请求才会将数据结果返回给客户端,如下图所示。

综上所述,非阻塞就好比一个环形跑道,一个客户端请求来了就与它连接,将这个请求给其他进程,然后响应一个回调函数,接着接受别的请求。而事件驱动就是服务器只在用户那边有事件发生才会响应。

node.js事件驱动的非阻塞 I/O模型理解相关推荐

  1. 理解Node.js的异步非阻塞I/O模型

    对后台服务器编程不清楚,通过在网上查资料也就大概有写了解. Apache对并发请求的处理方式是,对每个请求就创建一个线程处理,这个线程是堵塞的.因为线程的是占用内存的,所以一台服务器能支持的并发线程量 ...

  2. 由Node.js事件驱动模型引发的思考

    引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来. 什么是 ...

  3. Linux非阻塞启动node,Node-单线程、事件驱动、非阻塞I/O

    Nodejs既然这么流行就肯定有它的博大精深之处,自然不是我这还没入门的小白可以掌握的,我就简单说一下目前自己的理解程度. 一.单线程.非阻塞I/O.事件驱动 这是nodejs的三个特点. 单线程 N ...

  4. node.js事件驱动_了解Node.js事件驱动架构

    node.js事件驱动 by Samer Buna 通过Samer Buna 了解Node.js事件驱动架构 (Understanding Node.js Event-Driven Architect ...

  5. Node.js 事件驱动

    Node.js 最主要的两个亮点就是异步I/O 和 事件驱动.那么啥是事件驱动呢? 目录 浏览器的事件驱动 addEventListner和removeEventListener 事件绑定三要素 浏览 ...

  6. Java非阻塞I/O模型之NIO说明

    在了解NIO (Non-Block I/O) 非阻塞I/O模型之前,我们可以先了解一下原始的BIO(Block I/O) 阻塞I/O模型,NIO模型能够以非阻塞的方式更好的利用服务器资源,需要的朋友可 ...

  7. [译]理解Node.js事件驱动机制

    学习 Node.js 一定要理解的内容之一,文中主要涉及到了 EventEmitter 的使用和一些异步情况的处理,比较偏基础,值得一读. 大多数 Node.js 对象都依赖了 EventEmitte ...

  8. [译]理解 Node.js 事件驱动架构

    原文地址:Understanding Node.js Event-Driven Architecture 大部分 Node 模块,例如 http 和 stream,都是基于EventEmitter模块 ...

  9. node.js中对Event Loop事件循环的理解

    javascript是单线程的,所以任务的执行都需要排队,任务分为两种,一种是同步任务,一种是异步任务. 同步任务是进入主线程上排队执行的任务,上一个任务执行完了,下一个任务才会执行. 异步任务是不进 ...

最新文章

  1. PyQt主窗体设置停靠窗口(QDockWidget)的叠加顺序
  2. mysql 查询多边形_mysql中判断一个点是否在多边形中
  3. 【干货】产品经理常忽略的用户研究的四大误区
  4. 杭州/北京内推 | 阿里达摩院自然语言智能生物医学团队招聘研究型实习生
  5. bat循环执行带参数_C++:main处理命令行选项/main函数的参数
  6. android设置访问internet权限
  7. 嵌入式开发笔记(二)嵌入式系统启动过程 (S5pv210)
  8. 可重入性和线程安全性
  9. idea断点的几个意思_你真的理解Intellij IDEA的Debug技巧吗?这篇文章全部教给你...
  10. 软考系统集成项目管理工程师真题
  11. 推荐一本 python自动化框架pytest -上海悠悠
  12. SSD的TRIM原理及实践
  13. STM32------>第三天,spi补充,uart-dma,NB-loT介绍,At指令,串口透传
  14. 使用FileZilla连接失败
  15. 磁共振指纹:一种新颖的定量磁共振技术
  16. 【关于IT专业怎么学】
  17. c语言课程设计北京电子工业出版社,C语言课程设计报告(招生查询系统).doc
  18. 2018年高二上12月月考总结暨2018年度总结、2019年规划
  19. p79 Python 开发-sqlmapapiTamperPocsuite(含安全狗的安装与开启网站防护)
  20. python黑客帝国教学_Python黑科技01-实现黑客帝国电影程序版

热门文章

  1. 高并发如何处理,解决方案
  2. PS教程:5种把图片变成黑白色的方法
  3. UML画图总结以及浅谈UNL九种图
  4. 【算法设计与分析】HDU-1108 C++诡异的楼梯(BFS迷宫最短路径)
  5. 携程逆向爬虫 | PC网页端 | 旅游景点评论爬虫
  6. 无向有权图的建立(邻接链表法) 广度优先搜索 深度优先搜素
  7. 免费的AI线稿图片上色工具+黑白图片上色网站合集(2021年实测可用)
  8. 6月13日木叶下向量
  9. 如何储存图片方法jpg格式png格式#ps教程#ps抠图
  10. layer添加元素 openlayer_OpenLayers 官网例子的中文详解