NodeJS 介绍

原创
2016/03/01 17:30
阅读数 107


1、由来

Ryan Dahl 最初的目标是写一个基于事件驱动、非阻塞IO的Web服务器,已达到更高的Web服务器性能。其实事件驱动和非阻塞IO是Web服务器性能提升的两个重要因素。


2、偶遇JavaScript

之所以选择JavaScript,是因为JavaScript

1)符合事件驱动

2)非阻塞IO还没有实现

3)V8引擎性能显著

4)JavaScript语言容易使用


3、为何叫Node

为什么叫Node,开始之初是一个Web服务器,后面变成了构建网络应用的一个基础框架,这样就可以在他的基础之上构建更多的东西,这些构建的节点就是所谓的Node,这些节点又是使用Node开发,通过通信协议连接在一起形成的可伸缩的网络应用系统。


4、Node的特点

1)异步IO

2)事件与回调函数

3)单线程,原因是因为JavaScript是单线程的,而且在Node,JavaScript与其他线程是无法共享状态的,单线程也有好处,不用担心数据共享造成的问题,不用担心死锁;同时,单线程也会带来问题,

    A:无法利用多核CPU

    B:错误会引起整个应用退出,应用的健壮性值得考虑

    C:大量计算占用CPU导致无法继续调用异步的IO,这说明大计算处理不适合使用单线程

单线程的问题,首先这个问题是JavaScript自带的,那么JavaScript肯定也想出了解决的办法,那就是HTML5定制了 Web Work的标准,Web Work 能创建工作线程来进行计算,以解决JavaScript的大计算阻塞UI渲染的问题,工作线程为了不阻塞主线程,通过消息传递的方式来传递运行结果,这也使得工作线程不能访问到主线程的UI。Node采用了Web Work的思路,child_process ,子进程的出现,通过将计算分发到各个子进程,然后通过子进程之间的事件消息来传递结果。

4)跨平台,Node基于libuv实现跨平台,其实和Java虚拟机也没什么差异之处。


5、Node应用场景

1)IO密集型

2)作为中间传递应用程序,发挥其起步并行的优势


展开阅读全文
打赏
1
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
1
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部