Node学习1-基本概念

非阻塞IO

执行到I/O时函数立刻返回,不等待IO完成。

指令执行是CPU,非常快。

I/O操作非常慢。

I/O完成后主动通知程序。

事件驱动

先写好I/O完成后的事件处理程序

等I/O完成后,该事件直接去找相关的处理程序再处理即可。

在处理高并发和I/O密集的时候,Nodejs更有优势

CPU密集:压缩/解压/加密/解密/图形计算

I/O密集:文件操作/网络操作/数据库

WEB常见场景:静态资源读取、数据库操作

高并发:

1、开饭店例子,如果顾客多起来了,那么只要增加厨师就好了(负载均衡、堆机器)

2、或者请做饭更快的厨师(提高单台机器性能)

进程:资源分配和调度的基本单位。

把程序加载到内存执行,执行中的程序就是进程。系统程序分配资源都是安装进程来分配和调度的。

多进程:启动多个进程,时间片轮转

假如请很多服务员,也没有用,因为问题主要在厨师

客人---->服务员(CPU进程)----->厨师(I/O)

厨师在炒菜的时候,服务员会很闲!CPU啥都没干

CPU的进程数是有限的!(内存的原因)不能没玩没了的开进程顾厨师

1个服务员,很多厨师

服务员不断接待客人,点菜

等到厨师好了,叫服务员去拿菜(事件驱动)

服务员根据号码把菜给别人(事件处理函数)

Nodejs相当于只启动了一个进程(单进程),没有浪费CPU

event loop是单线程,worker是多线程的!

单线程是针对主程序,I/O操作系统底层多线程调度!

线程:进程内相对独立的/可调度的执行单元,线程之间共享进程的资源。

Node集群,也能起多个进程。

CPU密集,如果一个顾客点满汉全席,几百道菜,后面顾客都没法点菜,厨师也没开始工作,肯定用Nodejs不合适

猜你喜欢

转载自www.cnblogs.com/weizhibin1996/p/9283645.html