Node.JS 是一个基于 Chrome V8 引擎的 JavaScript 运行环境, 一个让 JavaScript 运行在服务端的开发平台. 那么 node 适合开发什么项目? 下面本篇文章就来介绍一下.
node 特点:
单线程, 异步式 I/O, 事件驱动机制, 跨平台.
Node.JS 适合用来开发什么样项目 (应用程序)?
善于 I/O, 不善于计算. 因为 Node.JS 最擅长的就是任务调度, 如果你的业务有很多的 CPU 计算, 实际上也相当于这个计算阻塞了这个单线程, 就不太适合 Node 开发, 但是也不是没有解决方案, 只是说不太适合.
当应用程序需要处理大量并发的 I/O, 而在向客户端发出响应之前, 应用程序内部并不需要进行非常复杂的处理的时候, Node.JS 非常适合. Node.JS 也非常适合与 websocket 配合, 开发长连接的实时交互应用程序.
具体场景可以表现为如下:
1, 用户表单收集系统, 后台管理系统, 实时交互系统, 考试系统, 联网软件, 高并发量的 Web 应用程序;
2, 基于 Web,canvas 等多人联网游戏;
3, 基于 Web 的多人实时聊天客户端, 聊天室, 图文直播;
4, 单页面浏览器应用程序;
5, 操作数据库, 为前端和移动端提供基于 JSON 的 API.
Node 的优缺点
优点:
1, 高并发 (最重要的优点)
2, 适合 I/O 密集型应用
缺点:
1, 不适合 CPU 密集型应用; CPU 密集型应用给 Node 带来的挑战主要是: 由于 JavaScript 单线程的原因, 如果有长时间运行的计算 (比如大循环), 将会导致 CPU 时间片不能释放, 使得后续 I/O 无法发起;
解决方案: 分解大型运算任务为多个小任务, 使得运算能够适时释放, 不阻塞 I/O 调用的发起;
2, 只支持单核 CPU, 不能充分利用 CPU
3, 可靠性低, 一旦代码某个环节崩溃, 整个系统都崩溃
原因: 单进程, 单线程
解决方案:
(1)Nnigx 反向代理, 负载均衡, 开多个进程, 绑定多个端口;
(2) 开多个进程监听同一个端口, 使用 cluster 模块;
4, 开源组件库质量参差不齐, 更新快, 向下不兼容
5, Debug 不方便, 错误没有 stack trace
来源: http://www.css88.com/qa/node-js/10895.html