Node怎么做到多进程共享数据
发布于 9 年前 作者 ZeeyanLeung 6231 次浏览 最后一次编辑是 8 年前 来自 问答

因为node没有多线程概念,唯有用多进程充分利用cpu了。但是不知道如何在多进程之间共享数据,新手求回答

4 回复

通过redis是一种选择。

只用原生node的话,可以参考下 child_process模块的文档

不知道楼主的业务情况,不好随便回答

楼主是不是低估node的处理能力了??

你的前半句描述的不准切,node没有多线程,是由于js这门语言限制的,确切的说js运行在单线程中,但是在v8所使用的libuv库中除了这个线程还有一个处理任务的线程池,所有node自带的耗时的api(比如说IO操作)都是丢到线程池中进行处理,处理完成之后通过事件循环机制通知js线程。所有说,node中没有多线程是不准确的。 一般情况下js线程都是做非计算密集型操作(耗时的操作都被线程池消化),这时候cpu不会高。但是如果人为的,非要做一些计算密集型操作(比如说矩阵运算),这时候cpu才会有高的可能。 当然为了提高js线程的并发能力,很多时候,我们还是会起多进程。对于进程间通信,其实还是老一套,socket、管道(就是prcoess.send函数)、共享内存,当然也可以通过数据库(比如说redis)中转一下。不过node.js中并没有提供过共享内存的操作,我自己还写了一个:https://github.com/yunnysunny/node-shmdb ,适合小规模的数据存储,仅供参考。

回到顶部