一、NodeJS的优缺点
node的主要特点:
- 它是一个Javascript运行环境
- 依赖于Chrome V8引擎进行代码解释
- 异步事件驱动
- 非阻塞I/O
- 轻量、可伸缩,适于实时数据交互应用
- 单进程,单线程(这里指主线程)
- 性能出众
优点:
- 高并发(最重要的优点)
- 适合I/O密集型应用
缺点:
-
不适合 CPU 密集型应用;
CPU 密集型应用给 Node 带来的挑战主要是:由于 JavaScript 单线程的原因,如果有长时间运行的计算(比如大循环),将会导致 CPU 时间片不能释放,使得后续 I/O 无法发起;
解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起。 -
只支持单核CPU,不能充分利用CPU;
-
可靠性低,一旦代码某个环节崩溃,整个系统都崩溃;
原因:单进程,单线程;
解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;(2)开多个进程监听同一个端口