本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章给大家介绍一些Nodejs的应用场景。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Apache 的多线程高并发模式
优点:支持多线程并发
缺点:阻塞
什么是线程
线程是可以独立运行的最小的 CPU 单位,可以在同一个进程里并发运行,共享该进程下的内存地址空间。
当不同的线程需要占用同一个变量时,根据先到先得的原则,先到的线程在运作时,后来的线程只能在旁边等待,也就是加入到了阻塞排队序列。就造成了线程阻塞。
类似场景:银行柜台办理业务
NodeJS 的异步 I/O 原理
优点:高并发(最重要的优点)、适合 I/O 密集型应用
缺点:
不适合CPU密集型应用(CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致 CPU 时间片不能释放,使得后续 I/O 无法发起)
只支持单核CPU,不能充分利用CPU
可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
原因:单进程、单线程
解决方案:
(1)Nnigx 反向代理,负载均衡,开多个进程,绑定多个端口;
(2)开多个进程监听同一个端口,使用cluster模块
(3)线上使用 PM2 管理进程,出现问题自动重启项目Debug 不方便,错误没有 stack trace
NodeJS 基于事件循环,每一条 NodeJS 的逻辑写在回调函数里面,回调函数在返回之后异步执行。【推荐学习:《nodejs 教程》】
NodeJS 不是没有阻塞,而是阻塞不发生在后续回调的流程,而会发生在 NodeJS 本身对逻辑的计算和处理。
相关阅读 >>
node.js安装和配置环境以及部署项目的方法介绍(windows系统下)
更多相关阅读请进入《nodejs》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者