Node的特点与应用场景

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的分布式应用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容