Node的特点
异步I/O
在Node中,绝大多数的操作都是以异步的方式进行调用,我们可以从语言层面很自然的进行并行I/O操作,每个调用之间无须等待之前的I/O调用结束
事件与回调函数
Node将前端浏览器中应用广泛且成熟的事件引入后端,配合异步I/O,将事件点暴露给业务逻辑
事件的编程方式具有轻量级、松耦合、只关注事务点等优势
单线程
- 不用像多线程编程那样处处在意状态的同步问题
- 没有死锁的存在
- 没有线程上下文交换所带来的性能上的开销
同时存在一些缺点
- 无法利用多核CPU(子进程可以应对这个问题)
- 错误会引起整个应用退出,应用的健壮性值得考验
- 大量计算占用CPU导致无法继续调用异步I/O
跨平台
Node基于libuv实现平台
Node的应用场景
I/O密集型
Node面向网络且擅长并行I/O,能够有效地组织起更多的硬件资源,从而提供更好的服务
I/O密集的优势主要在于Node利用事件循环的处理能力
CPU密集型
关于CPU密集型应用,Node的异步I/O已经解决了在单线程上CPU与I/O之间阻塞无法重叠利用的问题,I/O阻塞造成的性能浪费远比CPU的影响少。
Node可以通过编写C/C++扩展的方式更高效地利用CPU
Node还可以将一部分Node进程当作常驻服务进程用于计算,然后利用进程间的消息来传递结果,将计算与I/O分离,充分利用多CPU
CPU密集不可怕,如何合理调度是技巧。
分布式应用
详情连接阿里巴巴的数据平台对Node的分布式应用
网友评论