对 Node.js 事件驱动模型的深入理解

本文主要讨论以下问题:

1.Node.js 的事件驱动模型分析
2.Node.js 如何处理高并发请求?
3.Node.js 的缺点介绍

先简单介绍一下 Node.js,Node.js 是基于事件驱动、非阻塞 I/O 模型的服务器端 JavaScript 运行环境,是基于 Google 的 V8 引擎在服务器端运行的单线程、高性能的 JavaScript 语言。

一、Node.js 事件驱动模型分析



看懂上图之后,你就明白 Node.js 的事件驱动模型了,从上图中我们可以看到以下几个部分:

Application 应用层,也就是 JavaScript 交互层,是 Node.js 的常用模块,比如 http,fs 等。
V8 是 V8 引擎层,主要用于解析 JavaScript,与应用层和 NodeApi 层交互。
NodeApi 为上层模块提供系统调用,并与操作系统交互。
Libuv 是一个跨平台的底层包,实现了线程池、事件循环、文件操作等。实现异步是 Node.js 的核心。
Libuv 层维护一个事件队列的事件队列。当请求到来时,Node.js 的应用层和 NodeApi 层将请求作为事件放入事件队列,设置回调事件函数,然后继续接受新的请求。

在 Libuv 层的 Event Loop 事件循环中,事件队列中的事件被连续读取。在读取事件的过程中,如果遇到非阻塞事件,就自己处理,处理完后调用回调函数将结果返回给下一层。对于阻塞事件,会委托给后台线程池来处理。当这些阻塞操作完成后,执行结果将和提供的回调函数一起放入事件队列。当事件循环再次读取该事件时,将再次执行放置在队列中的事件回调函数,最后将结果返回给上级。详情请参考下图:



二、Node.js 如何处理高并发请求?

如果你理解了最后一个问题,就好理解了。如果要总结的话,就是异步无阻塞编程的思想。当遇到耗时的操作时,会以异步非阻塞的方式进入事件队列,不会影响后续请求的执行。循环将读取这个耗时的请求,并将其交给线程池进行处理。当这些耗时的操作被处理后,会再次进入事件队列,请求结果通过事件循环和回调返回给上层应用,最终返回给客户端。以上方式减少了高并发的等待时间,让高并发可以从容应对。

三、Node.js 的缺点介绍

通过上面的介绍,我们知道了 Node.js 的事件驱动模型,下面我们将介绍 Node.js 的不足之处。

Node.js 最大的缺点是一次只能服务一个请求。目前大部分服务器都是多核 CPU,导致 CPU 利用率非常低,资源浪费。

Node.js 的主线程 Event Loop 按照事件队列的顺序执行事件队列中的事件。在其中一个任务完成之前,回调和监听器等其他函数都没有机会运行,因为被阻塞的事件循环没有机会处理它们。如果发生这种情况,程序执行速度将会变慢。 点此下载完整附件

代做工资流水公司泉州入职流水制作新乡背调银行流水费用绍兴打印房贷流水海口办理银行流水账大庆打银行流水修改宜昌代开公司流水合肥薪资流水打印鞍山自存流水代开苏州银行对公流水代做柳州制作个人银行流水宁波流水单办理长沙办理工资证明孝感代办贷款流水揭阳个人银行流水图片九江打印薪资银行流水吉林收入证明公司金华车贷流水公司东莞工资流水app截图代做湛江代办流水账单福州开工资流水单包头入职工资流水价格大庆开薪资银行流水常德签证银行流水 查询济宁工资流水账单费用昆明自存流水打印泉州车贷流水图片北京代办公司银行流水镇江查公司流水长春背调银行流水代开常州银行流水报价香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化