NodeJS采用单线程非阻塞的架构,
好处是少了多线程的开销,发起IO操作后,不阻塞操作,做其他的事情,该线程一直处于忙碌状态(占用CPU),当IO操作完成后,通知该线程(事件通知)。
缺点,编程模式复杂,在多核模式下无法利用更多的核。
webwoker的提出:
一个Nodejs实例,在业务逻辑比较复杂的情况下,该线程成为瓶颈,所以才有webworker,一个Node进程就能很好的解决密集I/O的情况下,fork出来单的其余Node子进程可以当作常驻服务来解决运算阻塞的问题(将运算分发到多个Node子进程中上去,与Apache创建多个子进程类似)。解决NodeJS的运算密集问题的答案其实也是非常简单的,就是将运算分发到多个CPU上。在多Node进程(cluster)的情景下,响应请求的速度被大幅度提高。
后续用分布式的NodeJS做一个类似的通讯框架来压测平台的业务逻辑(逻辑比较简单,响应时间在几个ms级别)