NodeJS实现高并发的原理

1.Nodejs的诞生

为了解决web服务器的高并发性能问题

2.单线程的好处

nodejs笔记
业务1的计算1刚调用完,在调用I/O请求时马上调用业务2的计算1,CPU的利用率永远百分百,不在创建销毁线程,缺点:一个用户线程崩溃,其他人整个服务崩溃

3.非阻塞I/O机制

传统的单线程,I/O阻塞代码执行,但nodejs使用非阻塞I/O使得线程永远在执行计算操作,cpu利用率永远是100%
nodejs笔记

4.事件驱动模型

应用层:即node.js的模块,如fs,http等
v8引擎层: 解析JavaScript;
Libuv:实现nodejs异步的核心,实现了线程池,事件循环,文件操作等

在Libuv层的Event Loop事件循环不断读Event Queue中的事件,在读取事件的过程中如果遇到非阻塞事件,会自已处理,并且在处理完后调用回调函数向上一层返回结果;对于阻塞事件,会委托给后台线程池来处理,当这些阻塞操作完成后,执行结果与提供的回调函数一起再被放入事件队列中。当Event Loop再次读到这个事件时,会再次执行被放到队列中的事件回调函数,最后将结果返回给上一层。具体流程可以参考下图:
nodejs笔记

相关文章:

  • 2022-12-23
  • 2021-09-23
  • 2021-06-30
  • 2022-12-23
  • 2021-05-03
  • 2021-11-30
猜你喜欢
  • 2021-12-09
  • 2021-08-17
  • 2021-11-11
  • 2022-02-25
相关资源
相似解决方案