Nodejs貌似启动就是单核单进程的
那么我启动node后,需要用多核怎么办?
我看外面好像是凯多个instance,用nginx在实现绑定
那么又有疑问了,他们是相对独立的吗?那么如何做数据共享呢?
还有种方式是fork多个子进程(是子进程吗?),然后绑定到同一个端口上,那么他们的数据是如何共享的?
假设我有NodeA,NodeB,NodeC3个进程都绑定在同一个端口3000上
那么NodeA里面有个Array,NodeB和NodeC知道吗?
那么如果客户端访问3000,是访问有NodeA,NodeB,NodeC3其中哪一个
@sanvibyfish 一个套接字连接监听了一个端口 其他套接字就用不了这个端口 多进程和套接字没关系吧 多进程 就像cpu的核数就是人 有2个进程启动 就会根据cpu是的时间片轮转进程调度算法 如果有2个人要么一起做每个人做自己的事情,要么根据算法来分配 我是这么理解的 一个端口只能被使用一次 但是这个 套接字可以被多个进程使用 但是内存只有一个 2个进程如果同时改一个内存上面的数据就会有产生不是自己想要的结果
Node.js默认是单线程的,而Node.js中也提供了两个创建进程的方法——Child Process和Cluster。
其中,Child Process在创建子进程时,父进程和子进程之间会建立IPC通道,可以利用process.send
方法进行消息递。
而Cluster和CP类似,可以使用worker.send
(on Master)和process.send
(on Worker)进行消息传递。
而我还是比较建议使用Redis或者Memcache等第三方数据存储服务来实现进程间的数据交换。
然而如果你需要建立一个Cluster集群来对优化HTTP服务在多核服务器上的性能,那么可以看看@aleafs 的pm,它是基于Child Process来实现HTTP Server Cluster对一个端口的监听,它也提供了send
方法。