Node带来的优势与需要解决的地方
Node的优势,擅长处理IO密集型应用,不要关心多线程带来的开辟内存的开销及上下文切换带来的开销。它带来的好处是:不用担心锁、线程同步问题,操作系统在调度的时候也会因为较少的上下文切换,可以很好的提高CPU的利用率。
Node基于事件驱动实现了高并发,但是随之而来的带来了一些问题。
问题一:如何保证应用程序的稳定性?
问题二:如何充分利用多核CPU?
进程
应用程序的稳定性,对于所有的处理都共用同一个上下文环境,会影响应用程序的稳定性。
每个进程占有一个CPU,就可以充分利用多核CPU。Node的事件驱动已经解决的高并发量的问题。而多线程的只是用来充分利用多核CPU。
Master-Worker模式
主从模式。主进程和工作进程,主进程不负责具体的业务处理,而是负责调度或者管理工作进程。
创建子进程
child_process模块可以创建多个子进程
四种创建子进程的方法
1.spawn()
启动一个子进程来执行命令
2.exec()
启动一个子进程来执行命令,有一个回调函数获知子进程的状况
3.execFile()
启动一个子进程来执行可执行文件,有一个回调函数获知子进程的状况
4.fork()
与spawn()类似,不同点在于它创建Node的子进程只需要指定要执行的javascript文件模块即可
主从进程之间进行通信
父进程与子进程之间建立IPC通道
message 获取信息
send发送信息
在发送和获取两个阶段需要注意数据的序列化和反序列化