node单线程实现高并发原理-高并发

并发的API接口选用什么PHP框架合适?

这次给大家带来php处理抢购类高并发请求实现详解,php处理抢购类高并发请求的注意事项有哪些,下面就是实战案例,一起来看一下。本文以抢购、秒杀为例。介绍如何在高并发状况下确保数据正确。 在高并发请求下...

本文主要和大家介绍node单线程实现高并发原理与node异步I/O ,具有一定的参考价值,有兴趣的可以了解一下,希望能帮助到大家。

一、node单线程实现高并发原理

众所周知nodejs是单线程且支持高并发的脚本语言。可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解:

1. node的优点:I/O密集型处理是node的强项,因为node的I/O请求都是异步的(如:sql查询请求、文件流操作操作请求、http请求...)

a. 什么是异步?

异步:发出操作指令,然后就可以去做别的事情了,所有操作完成后再执行回调

异步的实现原理: 


// 第一步:定义变量
let a = 1;

// 第二步:发出指令,然后把回调函数加入异步队列(回调函数并没有执行)
setTimeout(() => {
 console.log(a);
}, 0)
// 第三步:赋值,回调函数没有执行
a = 2;
// 第四步:发出指令,然后把回调函数加入异步队列(回调函数并没有执行)
setTimeout(() => {
 console.log(a);
}, 0)
// 第五步:赋值,回调函数没有执行
a = 3;
// 当所有代码执行完毕,cpu空闲下来了,就会开始执行异步队列里面的回调函数
// 所以最后控制台输出:3 3

b. 什么是异步I/O?

异步I/O顾名思义就是异步的发出I/O请求

c. 虽然nodejs可以异步的发出I/O请求,但nodejs不支持多线程,为啥就可以支持高并发呢?

因为nodejs的I/O操作,底层是开启了多线程的

当同时有多个IO请求时,主线程会创建多个eio线程,以提高IO请求的处理速度    

额外知识点:

d. 虽然nodejs的I/O操作开启了多线程,但是所有线程都是基于主线程开启的只能跑在一个进程当中还是不能充分利用cpu资源

pm2进程管理器可以解决这个问题

pm2 是一个带有负载均衡功能的Node应用的进程管理器.

e. cpu核数与线程之间的关系

在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。而现在多核CPU的情况下,同一时间点可以执行多个任务,具体到这个任务在CPU哪个核上运行,这个就跟操作系统和CPU本身的设计相关了

2. node的缺点:不擅长cpu密集型的操作

a. 什么是cpu密集型操作(复杂的运算、图片的操作)


// 这就是一个cpu密集型的操作
for (let i = 0; i < 1000000; i++) {
 console.log(i);
}

b. nodejs为什么不擅长cpu密集型操作

因为nodejs是单线程的

相关推荐:

单线程JS执行问题详解

JS单线程异步io回调的特性详解

详细介绍JavaScript单线程的一些事(图)

以上就是node单线程实现高并发原理的详细内容,更多请关注php中文网其它相关文章!

php处理抢购类并发请求实现详解

这次给大家带来php处理抢购类高并发请求实现详解,php处理抢购类高并发请求的注意事项有哪些,下面就是实战案例,一起来看一下。本文以抢购、秒杀为例。介绍如何在高并发状况下确保数据正确。 在高并发请求下...

php网站 并发时候如何优化

这篇文章介绍的内容是关于php网站 高并发时候如何优化,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下高并发解决方案案例:当QPS达到2000时优化方案: 做业务分离,分布式存储1.流量优化

视频网站如何保证在并发时播放流畅

如何让视频在高并发播放时不卡 需要在上传存储时做处理吗;加载播放时又要做怎样的处理;或者说什么....服务器?...不知道,提高带高我是知道的! 之前没有做过视频这块,没有思路!

网络直播开发过程中非常重要的一环

相信大家对高并发这个词并不陌生,现在有很多家科技公司在进行人才招聘时都会问到关于高并发的问题。其实高并发通常指通过设计保证系统能够同时并行处理很多请求,是网络直播开发过程中关于系统架构必须考虑的因素...

mysql的bug测试--针对并发进行测试

mysql的bug测试,针对高并发进行测试此测试是在本地的apache测试D:\WAMP\Apache\bin\ab.exe -c 200 -n 200 www.php1100.com/mysql.php(此网址是自己的测试网址,里面的代码如下)error_reporting(0); echo &

php能处理并发吗?php并发解决方案

php在执行的过程中究竟是如何处理高并发问题的,接下来我们具体的来看一下关于PHP高并发的一个解决方案。先来看看php在服务器的执行过程:当用户请求服务器php文件的时候,服务器将对php文件进行语法分析,...

mysql如何处理并发

mysql高并发的解决方法有:优化SQL语句,优化数据库字段,加缓存,分区表,读写分离以及垂直拆分,解耦模块,水平切分等。高并发大多的瓶颈在后台,在存储mysql的正常的优化方案如下:(1)代码中sql语句优...

大型互联网站解决并发的常见策略

一个运营的系统在正式上线后将会遇到各种层级的高并发请求,因此我们必须对此做出相应的策略和技术解决方案,首先我们需要认清系统的高并发由3个层面导致: 1.传输层 大量用户对系统请求后,将会造成网络带宽和Web服...

电商系统领域说的并发是什么意思,YISHOP能达到并发

... 回复讨论(解决方案) 电商领域说的高并发就是指系统面对同一个的时刻诸多请求能够及时处理,并且系统不会瘫痪,数据不会出错。这就很考验系统架构是否合理,代码是否健壮,一处的不合理就很难达到高...

关于使用php 多线程处理并发的搜索请求的有关问题

关于使用php 多线程处理高并发的搜索请求的问题!我用php给android做后端,现在androdi有一个搜索功能,就是输入关键词进行搜索。我打算写两个方法来共同处理高并发搜索请求的情况,第一个方法接收手机POST过来的关键词并...