Node为什么适用于高实时的场景
15 回复
高实时意味这任务时间很短,nodejs异步回调可以尽可能减少硬件性能消耗,而且因为单线程可以加快反应速度,试想像tomcat-java对每个http request都会启动一个进程,中间的耗时和资源消耗会差很多,特别是在大访问量的情况下,性能差距就很明显,这也是为什么Nginx性能要比apache好的原因。
@kingapple 是单进程,用户下文件是io负责的,io都是异步的,但是也会存在这种问题,如果node任务队列最大只允许10个任务,10个用户都在下文件,而且都未完成,那就有10个异步回调的任务在队列里等待传输完成,那就阻塞了,不会接受其他任务了,一般处理就是加大任务队列的限制,或者cluster,多开node进程。
@kingapple 不是阻塞,直接就抛异常,不处理请求了,10个io进程在node的任务队列了放了10个任务,都在下大文件,无法放入其他任务了。可以加大任务队列的最大限制数量,或者弄node cluster来解决,io太慢在tomcat或iis里会造成大量request堆积造成当机,node可以自我保护。