优势
- 高并发,也即 I/O 密集
- 单进程使得程序不会额外分配资源给其他进程,线程管理本就很复杂,另外CPU在处理任务的时候也避免了切换上下文/线程带来的消耗,具体可参考:http://iamzhongyong.iteye.com/blog/1895728
- 非阻塞IO
- 开发中可能遇到硬盘,数据库,网络请求等阻塞,使用异步处理能使程序更流畅。
- 适合前端JS人员开发后台
- NodeJS虽然跟JS完全不是一码事,但是设计者将语法兼容JS,故开发NodeJS将会跟开发JS的难度差不多,另外NodeJS用的虚拟机(V8)可以使用最新的ES6,因为部署在服务器端,不需要浏览器支持。
- 轻量级
- Node进程消耗的资源更少,在同种功能下的Tomcat跟Node,Node占用的内存更少。
- 与NoSQL结合
- 像Redis , MongoDB这种NoSQL与NodeJS结合开发,使应用更快捷,更轻量级,MongoDB的管理和查询语言都是JavaScript。
劣势
- 不适合CPU密集型应用
- 单线程导致只能使用单核,导致CPU的处理能力更弱。
- 可靠性低
- 一个线程导致如果程序某个环节崩溃,整个系统都会崩溃。
- 开源组件库质量参差不齐,更新快,向下不兼容。
- Debug不方便,错误没有stack trace。
适用场景
- RESTful API
- 高并发、I/O密集、少量业务逻辑
####### 参考自:《Node.js实战》- Mike Cantlon 等著
上一篇 | 下一篇 |
---|---|
- | Node.js 第一步 |
网友评论