Node的异步机制如何理解,如何解决高并发的
Admin 2022-07-14 群英技术资讯 844 次浏览
这篇文章给大家分享的是Node的异步机制如何理解,如何解决高并发的。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。node的异步机制是基于“事件”的,所有的I/O、网络通信、数据库查询都以非阻塞的方式执行,返回结果由事件循环来处理。Node在同一时刻只会处理一个事件,完成后立即进入事件循环检查后面事件。这样CPU和内存在同一时间集中处理一件事,同时尽量让耗时的I/O等操作并行执行。

本教程操作环境:windows7系统、nodejs16版,DELL G3电脑。
NodeJS是单线程,单线程有以下好处:
简单
高性能,避免了频繁的线程切换开销
占用资源小,因为是单线程,在大负荷情况下,对内存占用仍然很低
线程安全,没有加锁、解锁、死锁这些问题
如何解决高并发?
node使用异步IO和事件驱动(回调函数)来解决高并发这个问题。
一般来说,高并发解决方案会提供多线程模型,为每个业务逻辑提供一个线程,通过系统线程切换来来弥补同步I/O调用的时间开销。像apache,是一个请求一个线程。
而NodeJS使用的是单线程模型,对所有I/O都采用异步的请求方式,避免频繁的上下文切换,在NodeJS执行的时候维护着一个事件队列;程序在执行时进入事件循环等待下一个事件到来,每个异步I/O请求完成后都会被推送到事件队列中的等待执行。
NodeJS的异步机制是基于事件的,所有的I/O、网络通信、数据库查询都以非阻塞的方式执行,返回结果由事件循环来处理。如图:

Node.js 进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查后面事件。这样做的好处是,CPU和内存在同一时间集中处理一件事,同时尽量让耗时的I/O等操作并行执行。对于低速连接攻击,Node.js只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击。
事件循环机制
所谓事件循环是指NodeJS会把所有的异步操作使用事件机制解决,有个线程在不断地循环检测事件队列。
NodeJS中所有的逻辑都是事件的回调函数,所以NodeJS始终在事件循环中,程序入口就是事件循环第一个事件的回调函数。事件的回调函数中可能会发出I/O请求或直接发射( emit)事件,执行完毕后返回事件循环。事件循环会检查事件队列中有没有未处理的事件,直到程序结束。NodeJS的事件循环对开发者不可见,由libev库实现,libev不断检查是否有活动的、可供检测的事件监听器,直到检查不到时才退出事件循环,程序结束。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天给大家分享的是关于vue怎么样实现滑动切换界面的效果,这一功能我们在开发手机小程序时,常会用到,小编觉得比较实用,因此分享给大家做个参考,以下是实现效果及代码,感兴趣的朋友跟随小编来看看吧。
用jQuery怎样判断点击事件点击了几次?在一些项目中,有时候我们需要判断进行了多少次的点击事件,那么我们有什么方法可以实现这个效果呢?文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
本文主要给大家分享的关于vue指令的内容,下面介绍了一些基本指令以及用法,小编认为是比较实用的,因此分享给大家作参考,感兴趣的朋友们可以了解一下。
本篇文章带大家聊聊Node中的各种I/O模型,介绍一下阻塞式I/O模型、非阻塞式I/O模型和非阻塞异步I/O,希望对大家有所帮助!
这篇文章给大家分享的是微信小程序点赞功能的实现。小编觉得挺有趣的,而且也很实用,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008