nodejs如何高性能的使用mongodb watch?
背景: socket.io+redis+nodejs+mongodb搭建的聊天系统。
现在我需要做集群部署服务节点。由于需要监听数据库变化。我使用了mongodb的 db.collection.watch()
.在单节点都是正常的。但是当我希望部署多节点的时候,会出现多节点重复监听的情况。现在我的想法是使用cluster,在主进程监听,子进程不监听,这样可以吗?但这样当数据库写入频繁的时候,会不会出问题?
MongooseModels.room.watch({fullDocument: 'updateLookup'}).on('change', (data) => {
const doc = data.fullDocument;
if (doc && doc.usernames) {
_.forEach(doc.usernames, (val) => {
io.of('s_room').in(val.userId).emit('rooms-changed', {type: data.operationType, doc});
});
}
});