深刻浅出Node.js - Node简介

Node特色

  1. 异步IO
  2. 事件与回调函数
  3. 单线程
  4. 跨平台

单线程优点:编程

  • 单线程的最大好处是不用像多线程编程那样到处在乎状态的同步问题
  • 没有死锁的存在
  • 没有线程上下文交换所带来的性能上的开销

单线程劣势:网络

  • 没法利用多核CPU
  • 错误会引发整个应用退出,应用的健壮性值得考验
  • 大量计算占用CPU致使没法继续调用异步I/O
Node采用了与Web Workers相同的思路来解决单线程中大计算量的问题:child_process。
子进程的出现,意味着Node能够从容地应对单线程在健壮性和没法利用多核CPU方面的问 题。经过将计算分发到各个子进程,能够将大量计算分解掉,而后再经过进程之间的事件消息来 传递结果,这能够很好地保持应用模型的简单和低依赖。经过Master-Worker的管理方式,也能够 很好地管理各个工做进程,以达到更高的健壮性。

Node应用场景

  1. IO密集型多线程

    Node面向网络且擅长并行I/O,可以有效 地组织起更多的硬件资源,从而提供更多好的服务。I/O密集的优点主要在于Node利用事件循环的处理能力,而不是启动每个线程为每个请 求服务,资源占用极少。
  2. CPU密集型解决方案异步

    Node的异步I/O已经解决了在单线程上CPU与I/O之间阻塞没法重叠 利用的问题,Node虽然没有提供多线程用于计算支持,可是仍是有如下两个方式来充分利 用CPU。
    1.Node能够经过编写C/C++扩展的方式更高效地利用CPU
    2.若是单线程的Node不能知足需求,甚至用了C/C++扩展后还以为不够,那么经过子进程的方式,将一部分Node进程当作常驻服务进程用于计算,而后利用进程间的消息来传递结果,将计算与I/O分离,这样还能充分利用多CPU。
  3. 分布式应用分布式

    高效利用并行IO
相关文章
相关标签/搜索