使用节点集群模块,可以相对轻松地启动子进程。例如:
var cluster = require('cluster');
if (cluster.isMaster) {
var cpuNum = require('os').cpus().length;
while (cpuNum--) cluster.fork();
} else {
var app = require('http').http.createServer(/*[http.createServer]*/);
//using mongo database, if the database is empty, then insert some default documents
if (!db.find()) database.insert(/*some large documents*/)
app.listen(3000);
}
当数据库为空时出现问题,第一个cluster.worker将执行db.find()
然后插入一些文档。但是,第二个或后续工作人员也将执行db.find()
并且什么也找不到,所以也会运行db.insert()
。这导致文件重复。
在数据库启动期间使用节点群集时,如何防止(插入重复)?或者这与mongodb更相关?