node的特性
node特性
1. 它是一个Javascript运行环境(简单容易上手)
2. 依赖于Chrome V8引擎进行代码解释(号称世界上最快的解释器)
3. 事件驱动(高并发处理速度优势)
4. 非阻塞I/O(创建新的线程去执行,不会阻塞主线程。动作并行执行,速度更快)
5. 轻量、可伸缩,适于实时数据交互应用(由高并发特性决定)
6. 单进程,单线程(不会占用大量的内存,但同时也是缺点)
优点:
1. 高并发(最重要的优点)
2. 适合I/O密集型应用
3.对服务器要求低,节约硬件资源
缺点:
1、不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;
解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;
2、只支持单核CPU,不能充分利用CPU;
3、可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
原因:单进程,单线程
解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;
(2)开多个进程监听同一个端口,使用cluster模块;
4. 开源组件库质量参差不齐,更新快,向下不兼容
5. Debug不方便,错误没有stack trace