Node.js集群共享内存
官方的方法
”单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去处理负载任务。cluster
模块可以创建共享服务器端口的子进程。",这段文字来自官方文档的译文。
通俗的理解,单个Node.js实例,就是一个进程,这个进程只有一个线程。当然,一个进程至少有一个线程。Node.js的这个线程执行用户代码,IO访问都是异步的。
cluster模块,可以开启多进程,以下是最简单的示例,进程间通过send和on传递消息,这个消息是Object类型数据。如此把数据传来送去,也可以达到共享内存的效果。
if (cluster.isMaster) {
const worker = cluster.fork();
worker.send('你好');
} else if (cluster.isWorker) {
process.on('message', (msg) => {
process.send(msg);
});
}
插件:node-addon-sharememory
node-addon-sharememory利用 c++ boost 的跨进程共享内存技术,为 Node.js 提供跨进程的、线程安全的共享内存的能力。
这样,进程间消息通知可以继续采用send和on的方式,而跨进程数据可以放置于共享内存中,减少跨进程传递的数据量。
安装使用和源码,见如下链接: