现在的位置: 首页 > 综合 > 正文

深入浅出NodeJS——Node简介

2018年09月29日 ⁄ 综合 ⁄ 共 817字 ⁄ 字号 评论关闭
文章目录

Node初衷是基于事件驱动、非阻塞I/O的Web服务器。其初始人Ryan Dahl资深C/C++程序员,Node发展为强制不共享任何资源的单线程、单进程系统,构建快速、可伸缩的网络应用平台。

node-webkit项目将node中的事件循环和Webkit的事件循环融合。

Node的系统结构如图所示,采用性能高的V8引擎作为支撑,对不同系统抽象出中间层libuv,实现高性能的异步I/O访问。

Node特点

(1) 异步I/O

Node中绝大多数的操作都是异步调用,通过底层构建很多异步I/O的API,从文件读取到网络请求。

(2) 事件与回调函数

事件的编程方式具有轻量级、松耦合、值关注事务点等优势。

(3) 单线程

不用处理多线程的同步问题,也不会存在死锁。缺点主要有以下:

a.无法利用多核CPU

b.错误会引起整个应用退出

c.大量计算占用CPU导致无法继续后面异步调用I/O

浏览器中JavaScript和UI共用一个线程,JS的长期执行会导致UI渲染的中断。

最早解决大量计算问题,Google的Gears,通过启动一个完全独立的进程,将需要计算的程序发给这个进程,计算结果通过事件传递回来。HTML5制定了Web Workers创建工作线程来计算,为了不阻塞主线程,通过消息传递方式来传递运行结果。

Node中采用和Web Work是类似的思路来解决单线程中大量计算问题:child_process

(4) 跨平台

Windows和*nix平台

Node的应用场景

(1) I/O密集型

充分利用Node的事件循环的处理能力,而不是启动每一个线程为每个请求服务,这样占用资源极少。

(2)CPU密集型

a. Node通过编写C/C++扩展的方式更高效利用CPU

b.利用子进程方式充分利用CPU

(3) 分布式应用

(4) Node使用者

a. 前后端编程语言环境统一

b. Node带来的高性能I/O用于实时应用

c. 并行I/O更高效利用分布式环境

d. 并行I/O,有效利用稳定接口提升Web渲染能力

抱歉!评论已关闭.