单线程优点:编程
单线程劣势:网络
Node采用了与Web Workers相同的思路来解决单线程中大计算量的问题:child_process。
子进程的出现,意味着Node能够从容地应对单线程在健壮性和没法利用多核CPU方面的问 题。经过将计算分发到各个子进程,能够将大量计算分解掉,而后再经过进程之间的事件消息来 传递结果,这能够很好地保持应用模型的简单和低依赖。经过Master-Worker的管理方式,也能够 很好地管理各个工做进程,以达到更高的健壮性。
IO密集型多线程
Node面向网络且擅长并行I/O,可以有效 地组织起更多的硬件资源,从而提供更多好的服务。I/O密集的优点主要在于Node利用事件循环的处理能力,而不是启动每个线程为每个请 求服务,资源占用极少。
CPU密集型解决方案异步
Node的异步I/O已经解决了在单线程上CPU与I/O之间阻塞没法重叠 利用的问题,Node虽然没有提供多线程用于计算支持,可是仍是有如下两个方式来充分利 用CPU。
1.Node能够经过编写C/C++扩展的方式更高效地利用CPU
2.若是单线程的Node不能知足需求,甚至用了C/C++扩展后还以为不够,那么经过子进程的方式,将一部分Node进程当作常驻服务进程用于计算,而后利用进程间的消息来传递结果,将计算与I/O分离,这样还能充分利用多CPU。
分布式应用分布式
高效利用并行IO