NodeJS采用单线程非阻塞的架构,
好处是少了多线程的开销,发起IO操作后,不阻塞操作,做其他的事情,该线程一直处于忙碌状态(占用CPU),当IO操作完成后,通知该线程(事件通知)。
缺点,编程模式复杂,在多核模式下无法利用更多的核。
webwoker的提出:
一个Nodejs实例,在业务逻辑比较复杂的情况下,该线程成为瓶颈,所以才有webworker,一个Node进程就能很好的解决密集I/O的情况下,fork出来单的其余Node子进程可以当作常驻服务来解决运算阻塞的问题(将运算分发到多个Node子进程中上去,与Apache创建多个子进程类似)。解决NodeJS的运算密集问题的答案其实也是非常简单的,就是将运算分发到多个CPU上。在多Node进程(cluster)的情景下,响应请求的速度被大幅度提高。
后续用分布式的NodeJS做一个类似的通讯框架来压测平台的业务逻辑(逻辑比较简单,响应时间在几个ms级别)
本文讨论了NodeJS单线程非阻塞架构的局限性,特别是面对运算密集场景时的问题,以及通过引入webworker来解决多核环境下运算瓶颈的方法。详细介绍了webworker的原理、使用方式以及如何在NodeJS中部署多个webworker进程,以提高密集运算任务的执行效率。同时,文章还提及了分布式NodeJS通讯框架的构建,用于压测业务逻辑。
992

被折叠的 条评论
为什么被折叠?



