高并发和吞吐量
因为nodejs
是单线程,所以我们说的并发性主要是事件循环在主程完成处理后执行回调函数的能力。比如当一个请求过来,就是一个I/O
,服务端给每一个请求注册一个I/O
,假设每个web服务器请求需要50ms
,其中的45ms
是可以用异步完成 的数据库I/O
,选择非阻塞异步操作可以释放每个请求45ms
来处理其他的请求。
不适合CPU密集型
因为nodejs
是单线程,只支持单核,如果一个运算量特别大的操作,会占满cpu
的运行时间,在时间片内不会释放,会导致整个程序卡,甚至崩溃。
如何解决呢:
- 将大的运算任务,分成小任务
- 使用多fork模式
- 使用集群的方式,使用nginx做负责均衡